目次
初期設定
インストール
基本パッケージのインストール Git 含む
$ yum update
$ yum groupinstall -y Base
EPEL リポジトリの追加
$ yum install -y epel-release
vim エイリアスを設定 (オプション)
Bash 設定ファイルの編集
$ vim ~/.bashrc
+alias vi='vim '
再読み込み
$ source ~/.bashrc
Amazon EC2 スタイル
機能
- ec2-user に相当するユーザー(キーペア認証、パスワードなし
sudo
) - Amazon EC2 と同一の SSH 設定
- その他 同一設定の適用
ユーザー
admin
ユーザー (ec2-user)
ユーザー名 admin
は OpenSSL サーバ証明書の発行にも使用
$ useradd -G wheel admin
鍵認証の設定
リモート
admin
ユーザーとしてログイン
$ su - admin
適切なアクセス権限のフォルダとファイルを設置
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
秘密鍵と公開鍵を作成
$ ssh-keygen -t rsa -C "dev.example.com"
Your identification has been saved in /home/admin/.ssh/id_rsa.
Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
公開鍵は authorized_keys
ファイルに追記して削除
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/.ssh/id_rsa.pub
ローカル
秘密鍵は scp
コマンドでリモートからローカルに設置
$ scp root@dev.example.com:/home/admin/.ssh/id_rsa ~/.ssh/dev.example.com.pem
リモート
秘密鍵を削除してログアウト
$ rm ~/.ssh/id_rsa
$ exit # admin
$ exit # root
ローカル
$ vim ~/.ssh/config
+Host dev.example.com
+ HostName dev.example.com
+ User admin
+ IdentityFile ~/.ssh/dev.example.com.pem
admin
ユーザーでログイン出来るか確認
失敗した場合は、再度 root
ユーザーでログインして設定を再確認
$ ssh dev.example.com
Sudo ユーザーの設定
wheel
グループの sudo
コマンドを無効
$ sudo visudo
-Defaults requiretty
+#Defaults requiretty
-%wheel ALL=(ALL) ALL
+#%wheel ALL=(ALL) ALL
個別設定で admin
ユーザーのパスワードなし sudo
コマンドを有効化
$ visudo -f /etc/sudoers.d/admin
admin ALL = NOPASSWD: ALL
admin ALL=(ALL) NOPASSWD:ALL
admin
ユーザーとしてログインして sudo
コマンドの動作確認
$ su - admin
$ sudo tail /var/log/secure
SSH の設定
設定ファイルの編集
Amazon EC2 (Amazon Linux) と同一の設定
$ vim /etc/ssh/sshd_config
-#PermitRootLogin yes
+PermitRootLogin forced-commands-only
-PasswordAuthentication yes
+PasswordAuthentication no
-GSSAPIAuthentication yes
-GSSAPICleanupCredentials no
+#GSSAPIAuthentication yes
+#GSSAPICleanupCredentials no
-#PrintLastLog yes
+PrintLastLog yes
SSH を再起動
admin
ユーザーの鍵認証に失敗している場合はログイン出来なくなるので注意
$ sudo systemctl restart sshd
SELinux の無効化
現在の状態を確認
$ getenforce
Enforcing
設定ファイルの編集
$ sudo vim /etc/sysconfig/selinux
-SELINUX=enforcing
+SELINUX=disabled
設定を反映させるために再起動
sudo reboot
Disabled
となっていることを確認
$ getenforce
Disabled
ホスト名を変更 (オプション)
現在のホスト名を確認
$ hostname
設定ファイルの編集
$ sudo vim /etc/hostname
dev.example.com
設定を反映させるために再起動
$ sudo reboot
新しいホスト名を確認
$ hostname
dev.example.com
OpenSSL (オプション)
SSL サーバ証明書の作成
秘密鍵を作成してパスフレーズを解除
$ sudo openssl genrsa -des3 -out dev.example.com.key 2048
$ sudo openssl rsa -in dev.example.com.key -out dev.example.com.key
秘密鍵から CSR を作成
$ sudo openssl req -new -key dev.example.com.key -out dev.example.com.csr
フィールド | 説明 | 例 |
---|---|---|
Country Name※ | 国を示す2文字のISO略語です。 | JP |
State or Province Name※ | 組織が置かれている都道府県です。 | Osaka |
Locality Name※ | 組織が置かれている市区町村です。 | Osaka-shi |
Organization Name※ | 組織の名称です。 | GlobalSign K.K. |
Organization Unit Name | 組織での部署名です。 ※指定がない場合は - (ハイフン)を入力してください。 |
Sales |
Common Name※ | ウェブサーバのFQDNです。 | dev.example.com |
Email Address | 入力不要です。 | |
A challenge password | 入力不要です。 | |
An optional company name | 入力不要です。 |
おすすめ認証局
- SSLストア RapidSSL 1年 1,620円 (2016年8月)
- namecheap RapidSSL $10.95/yr (英語、2016年8月)
- StartSSL 無料 (英語、高難度)
CSR を用いてSSL 認証局より発行した証明書から、サーバ証明書ファイルを作成
サーバ証明書、中間証明書、ルート証明書の順序で記述
$ sudo vim dev.example.com.crt
サーバ証明書、秘密鍵を配置
CSR はサーバから削除 (使い回しは非推奨)
$ sudo mv dev.example.com.crt /etc/pki/tls/certs/dev.example.com.crt
$ sudo mv dev.example.com.key /etc/pki/tls/private/dev.example.com.key
$ sudo rm dev.example.com.csr
Apache 2.4
インストール
最新版をインストール
$ sudo yum install -y httpd
自動起動を有効
$ sudo systemctl enable httpd
Apache を起動
$ sudo systemctl start httpd
ファイアウォールの設定
HTTP(80) のポートを解放
$ sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --reload
基本設定
設定ファイルをバックアップ
$ sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
VirtualHost の設定
$ sudo vim /etc/httpd/cond.d/vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/dev.example.com/public_html
ServerName dev.example.com
<Directory /var/www/dev.example.com/public_html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Apache を再起動
$ sudo systemctl restart httpd
OpenSSL の設定
Apache OpenSSL モジュールの追加
$ sudo yum install -y mod_ssl
設定ファイルのバックアップ
$ sudo cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org
設定ファイルの編集
$ sudo vim /etc/httpd/conf.d/ssl.conf
-#DocumentRoot "/var/www/html"
-#ServerName www.example.com:443
+DocumentRoot "/var/www/dev.example.com/public_html"
+ServerName dev.example.com:443
-SSLCertificateFile /etc/pki/tls/certs/localhost.crt
+SSLCertificateFile /etc/pki/tls/certs/dev.example.com.crt
-SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
+SSLCertificateKeyFile /etc/pki/tls/private/dev.example.com.key
SSL優先 (オプション)
HTTP(80) に来たユーザーを HTTPS(443) にリダイレクト
$ sudo vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>
ServerName dev.example.com
RewriteEngine On
RewriteRule ^(.*) https://dev.example.com$1 [L,R=301]
</VirtualHost>
Apache の設定を再読み込み
$ sudo systemctl reload httpd
ファイアウォールの設定
HTTPS(443) のポートを解放
$ sudo firewall-cmd --zone=public --add-service=https --permanent
$ sudo firewall-cmd --reload
MariaDB 10.1
CentOS 7 から MySQL から MySQL 互換の MariaDB に変更
インストール
最新版の MariaDB リポジトリを追加
$ sudo vim /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
最新版をインストール
$ sudo yum install -y MariaDB-server MariaDB-client
自動起動を有効
$ sudo systemctl enable mariadb
MariaDB の起動
$ sudo systemctl start mariadb
基本設定
初期設定をインストール
$ mysql_secure_installation
フィールド | 例 |
---|---|
Enter current password for root (enter for none): | 未入力 |
Set root password? [Y/n] | Y |
New password: | 新しいパスワード |
Re-enter new password: | 新しいパスワード確認 |
Remove anonymous users? [Y/n] | Y |
Disallow root login remotely? [Y/n] | Y |
Remove test database and access to it? [Y/n] | Y |
Reload privilege tables now? [Y/n] | Y |
設定ファイルを編集
文字コードを UTF-8
に変更
$ sudo vim /etc/my.cnf.d/server.cnf
[mysqld]
+character-set-server=utf8
MariaDB の再起動
$ sudo systemctl restart mariadb
ファイアウォールの設定 (オプション)
- MariaDB(3306) のポートを解放
$ sudo firewall-cmd --zone=public --add-service=mysql --permanent
$ sudo firewall-cmd --reload
PHP 7.0
インストール
Remi リポジトリを追加
$ wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo rpm -Uvh remi-release-7.rpm
$ rm remi-release-7.rpm
最新版の PHP をインストール
$ sudo yum --enablerepo=remi-php70 install php php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-posix php-xml
基本設定
設定ファイルのバックアップ
$ sudo cp /etc/php.ini /etc/php.ini.default
PHP 設定ファイルを編集
$ sudo vim /etc/php.ini
-;date.timezone =
+date.timezone = "Asia/Tokyo"
Apache を再起動
$ sudo systemctl restart httpd
Composer
PHP パッケージマネージャー
ダウンロード
$ sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ sudo php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ sudo php composer-setup.php
$ sudo php -r "unlink('composer-setup.php');"
実行フォルダに移動
$ sudo mv composer.phar /usr/local/bin/composer
phpMyAdmin 4.6
Web上で実行される MySQL (MariaDB) データベース接続クライアントツール
最新版をインストール (remi-test リポジトリ)
$ sudo yum --enablerepo=remi-test,remi-php70 install phpMyAdmin
許可IPアドレスを追加
$ sudo vim /etc/httpd/conf.d/phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/>
<IfModule mod_authz_core.c>
# Apache 2.4
Require local
+ Require ip IPアドレス
</IfModule>
</Directory>
Apache を再起動
$ sudo systemctl restart httpd
動作確認
http://dev.example.com/phpMyAdmin/
http://dev.example.com/phpmyadmin/
Node.js v6
Installing Node.js via package manager
最新版のリポジトリを追加
$ curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
最新版をインストール
$ sudo yum install -y nodejs
基本パッケージをインストール (オプション)
$ sudo npm install -g bower less
TODO
- 見出し、内容の整理
- Node.js Apache リバースプロキシ
- FTP サーバ
- メールサーバ Postfix, Dovecot
- Ruby, Python
- nginx (未定)
- ファイアウォール trusted の追加 ssh mysql の削除
- Redmine