Amazon EC2(Amazon Linux)でWordPressをインストールし、Nginxで表示させる手順2
サーバを新規で準備する際に、AWSのEC2を利用。
今なら1年間の無料枠があるため、試してみることに。AWSがWordPressの構築手順を準備してるので、それを参考に手順をまとてみました。「手順1」「手順2」「手順3」に分けて記載します。
今回はSSHログインをして、必要なミドルウェアの設定を行っていきます。
ただし、今回はLAMP環境ではなく、webサーバをNginx
で進めます。
なぜ、Nginx
なのか
- Apacheよりも高速であること
- WordPress.comでの運用実績
以上の点からです。
LAMP環境の構築は
チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール
公式ドキュメントを参照すればOKです。今回もおおいに参考にしています。
Nginx+MySQL+PHP環境の構築
SSHでログインします。
Nginxのインストール
webサーバNginxをインストールします。
1. すべてのソフトウェアパッケージのアップデート
1.$ sudo yum update -y
これでサーバが最新の状態になりました。
2. Nginx+MySQL+PHPのインストール
1.$ sudo yum install nginx php56 php56-fpm mysql56-server php56-mysqlnd
2....
3....
4.Is this ok [y/d/N]: y
5....
6....
ホントはphp7を導入したいw
3. Nginxの起動
1.$ sudo /etc/init.d/nginx start
2.Starting nginx: [ OK ]
4. ブラウザで確認
http://xx.xx.xx.xx
パブリックIPアドレスでアクセスします。
ページが表示されました。
5. chkconfigでNginxランレベル設定
サーバが起動するたびに、Nginxが起動するように設定します。
1.$ sudo chkconfig nginx on
ランレベル確認
1.$ chkconfig --list nginx
2.nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ランレベルって?
1.0 停止
2.1 シングルユーザモード
3.2 マルチユーザモード(テキストログイン、NFSサーバーは停止)
4.3 マルチユーザモード(テキストログイン)
5.4 未使用
6.5 マルチユーザモード(グラフィカルログイン)
7.6 再起動
8.S シングルユーザモード(/etc/rc.d/rc.sysinitファイルを実行)
Linuxにはランレベルと呼ばれるいくつかの動作モードがあります。
このランレベルとは、そのレベルごとにどのようなサービスを
稼働する、しないを設定することが出来ます。
ランレベルの意味と設定・確認
2,3,5でon
になってればOKかと。
/var/wwwのディレクトリ設定
/var/www/htmlを今後ドキュメントルートとし、コンテンツを配置していくとします。
その場合、いま/var/wwwのディレクトリの所有者はroot
ユーザなのでec2-user
でも
編集できるように書き込み権限の設定を追加していきます。
1. wwwグループの追加
1.$ sudo groupadd www
2. ec2-userをwwwグループに追加
1.$ sudo usermod -a -G www ec2-user
3. puttyの再起動
puttyの再起動をし、上記設定の反映を確認します。
1.$ exit
※設定の反映を確認するにはputtyの再起動が必要
1.$ groups
2.ec2-user wheel www
4. /var/www以下の所有グループをwww ( 所有者はrootのまま ) に変更
chown -R
で指定したディレクトリ以下全てが変更対象となる
1.$ sudo chown -R root:www /var/www
5. /var/www とその配下のサブディレクトリの権限を変更してグループの書き込み許可を設定
1.$ sudo chmod 2775 /var/www
6. 将来つくられるサブディレクトリにグループ ID を設定
1.$ find /var/www -type d -exec sudo chmod 2775 {} +
7. /var/www とその配下のサブディレクトリのファイル権限を変更してグループの書き込み許可を追加
1.$ find /var/www -type f -exec sudo chmod 0664 {} +
これで、ec2-userと将来wwwグループに追加されるユーザは、/var/wwwでコンテンツの制作 (ファイルを追加したり) ができるようになった。
PHPの動作確認
Nginxはインストールできたこと確認しましたが、PHPの動作確認まだでした。
PHPのファイルを置いて動作確認します。まずはNginx
の設定とphp-fpm
の設定をします。
1.Nginxの設定
vimで編集します。
/etc/nginx/nginx.conf
1.
2.index index.html index.htm index.php;
3.
4.
5. server {
6. listen 80;
7. server_name localhost;
8. root /var/www/html;
9.
10.
11.
12.location ~ \.php$ {
13. root /var/www/html;
14. fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
15. fastcgi_index index.php;
16. fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
17. include fastcgi_params;
18. }
19.
2.php-fpmの設定
vimで編集します。
/etc/php-fpm-5.6.d/www.conf
1.user = nginx
2.group = nginx
3.
4.
5.listen = /var/run/php-fpm/php-fpm.sock
6.
7.
8.listen.owner = nginx
9.listen.group = nginx
10.
11.
3.php-fpmのランレベル設定
サーバが起動するたびに、php-fpmが起動するように設定します。
1.$ sudo chkconfig php-fpm on
4.nginxの再起動とphp-fpmの起動
1.$ sudo /etc/init.d/nginx restart
2.Stopping nginx: [ OK ]
3.Starting nginx: [ OK ]
4.
5.$ sudo /etc/init.d/php-fpm start
6.Starting php-fpm-5.6: [ OK ]
7.
5.PHPファイルの設置
1.$ echo "<?php phpinfo();" >> /var/www/html/hoge.php
http://xx.xx.xx.xx/hoge.php
パブリックIPアドレスでアクセスします。
PHPの情報ページが表示されました。
確認後、hoge.phpは削除します。
MySQLサーバの設定
ここからはMySQLサーバ(データベース)の設定です。
1.MySQLサーバの起動
1.$ sudo /etc/init.d/mysqld start
2.
3....
4....
5.
6.You can start the MySQL daemon with:
7.cd /usr ; /usr/libexec/mysql55/mysqld_safe &
8.
9.You can test the MySQL daemon with mysql-test-run.pl
10.cd /usr/mysql-test ; perl mysql-test-run.pl
11.
12.Please report any problems at http://bugs.mysql.com/
13.
14. [ OK ]
15.Starting mysqld: [ OK ]
2.MySQLサーバのセキュリティ設定
AWS公式ドキュメントにもあるように最初やっておいたほうがいい
mysql_secure_installation
でMySQLサーバのセキュリティの設定を行います。
1.$ sudo mysql_secure_installation
- rootのパスワード設定
現時点では設定されてないので、[Enter]
1.Enter current password for root (enter for none):
2.OK, successfully used password, moving on...
- rootのパスワード設定
設定するのでY
を入力し、[Enter]
1.Set root password? [Y/n] Y
パスワードを入力し、[Enter]
確認のパスワードを入力し、[Enter]
1.New password:
2.Re-enter new password:
3.Password updated successfully!
4.Reloading privilege tables..
5. ... Success!
- 匿名アカウントの削除
削除をするのでY
を入力し、[Enter]
1.Remove anonymous users? [Y/n] Y
2. ... Success!
- root のリモートログインを無効
削除をするのでY
を入力し、[Enter]
1.Disallow root login remotely? [Y/n] Y
2. ... Success!
- テストデータベースを削除
削除をするのでY
を入力し、[Enter]
1.Remove test database and access to it? [Y/n] Y
2. - Dropping test database...
3. ... Success!
4. - Removing privileges on test database...
5. ... Success!
- 権限テーブルを再ロードし、変更を保存
テーブルを再ロードするのでY
を入力し、[Enter]
1.Reload privilege tables now? [Y/n] Y
2. ... Success!
3.
4.Cleaning up...
5.
6.
7.
8.All done! If you've completed all of the above steps, your MySQL
9.installation should now be secure.
10.
11.Thanks for using MySQL!
3.MySQLのランレベル設定
サーバが起動するたびに、mysqldが起動するように設定します。
1.$ sudo chkconfig mysqld on
4.phpMyAdminの導入
こちらは「Amazon EC2のNginxサーバにphpMyAdminを設定」で補足します。
WordPressの設定
ここからはいよいよWordPressの設定です。
作業前に/tmp
ディレクトリに移動しておきます。
1.$ cd /tmp
WordPressのダウンロード
1. ダウンロード
日本語版のWordPressの最新版を取得します。
1.$ wget https://ja.wordpress.org/latest-ja.tar.gz
2.--2015-12-15 16:36:52-- https://ja.wordpress.org/latest-ja.tar.gz
3.Resolving ja.wordpress.org (ja.wordpress.org)... 66.155.40.250, 66.155.40.249
4.Connecting to ja.wordpress.org (ja.wordpress.org)|66.155.40.250|:443... connected.
5.HTTP request sent, awaiting response... 200 OK
6.Length: 7526597 (7.2M) [application/octet-stream]
7.Saving to: ?latest-ja.tar.gz?
8.
9.latest-ja.tar.gz 100%[============================================================================>] 7.18M 17.8MB/s in 0.4s
10.
11.2015-12-15 16:36:53 (17.8 MB/s) - ?latest-ja.tar.gz? saved [7526597/7526597]
2. ダウンロードファイルの解凍
tarコマンドで解凍します。
1.$ tar xzvf latest-ja.tar.gz
解凍されたかどうか確認します。
1.$ ls
2.latest-ja.tar.gz wordpress
wordpressディレクトリができています。
WordPress用に MySQL ユーザーとデータベースを作成
1. MySQLにrootでログイン
1.$ mysql -u root -p
2.Enter password:
3.Welcome to the MySQL monitor. Commands end with ; or \g.
2. WordPress用にユーザーとパスワードの作成
ユーザーwordpress-user
とパスワードwordpress-password
は自分で決める。
1.mysql> CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'wordpress-password';
3. WordPress用にデータベースの作成
データベース名wordpress-db
は自分で決める。
1.mysql> CREATE DATABASE `wordpress-db`;
2.Query OK, 1 row affected (0.00 sec)
4. 作成したデータベースの権限設定
1.mysql> GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
2.Query OK, 0 rows affected (0.00 sec)
5. ここまでの作業を反映
1.mysql> FLUSH PRIVILEGES;
2.Query OK, 0 rows affected (0.00 sec)
6. exit
exitでmysqlクライアントを終了します。
1.mysql> exit
2.Bye
WordPressの設定ファイル編集
1. wp-config.phpの準備
1.$ cd wordpress
2.$ cp wp-config-sample.php wp-config.php
2. wp-config.phpの修正
vimで編集します。wp-config.php
(puttyが文字化けしている場合は[設定の変更]>ウィンドウ>変換で「UTF-8」を選択する)
- データベース名の設定
1.define('DB_NAME', 'wordpress-db');
- ユーザーの設定
1.define('DB_USER', 'wordpress-user');
- パスワードの設定
1.define('DB_USER', 'wordpress-password');
- 認証用ユニークキー設定
WordPress.org の秘密鍵サービスここにアクセスして決めると良いでしょう。
1.define('AUTH_KEY', '+d5 ZMyS|3@o+NcuAz53AXKQ}Pwheok~Q4A:Uy%Kg=~{lQ}]._~S7*&CnRI(+b1 ');
2.define('SECURE_AUTH_KEY', '5-H-D;v$KwNH|5$h3^-=%a8[Qsqqf5=3Z-wFTq,-Rp[-8iB@` WALen.m-e7*{Y>');
3.define('LOGGED_IN_KEY', '}?bIIH{R|:`e^6jO@^;N{6Nxi)EnKrg{1YhdftjF.5A/rYYpo-ttbsS*efCV:LY*');
4.define('NONCE_KEY', 'hLJd;7Y6Uc:Gr&<O=A}Ta!zuqC S@U5B+Nods+[#[Ay Sd608 nU]7Q!||P*dp].');
5.define('AUTH_SALT', '~1x:*55m{<_Gsf_z~Pm,3DM8`:Y4U$!{c_ BQ/p!^?44BZ8?Ql.m_R*)*OoT^sJZ');
6.define('SECURE_AUTH_SALT', '&{/G#LzKa~P#E~(Uxb#Vx5_]f< A_o[HkUGd}9C;#:swBwAbC;w=;diz`!Hh^W &');
7.define('LOGGED_IN_SALT', 'Zn{3[ZkM%*(KQ~PM5mi><J,}qov|15NqV(~HYLl;Le{o.p@B{cr&*`WEj}kSufJY');
8.define('NONCE_SALT', '{Vq_6]orpykkwALBhPtz9IXH:ud=,Zkspi7No{--}4*:A-LnQ94!E$`+/YY9/K@u');
WordPressの設定画面にアクセス
1. ファイルをドキュメントルートに移動
ファイルをドキュメントルートに移動させます。
1.mv * /var/www/html/
2. 初期設定画面にアクセス
http://xx.xx.xx.xx/
パブリックIPアドレスでアクセスします。
ようこそ画面が表示されました。
必要項目を入力してください。
3. 設定完了画面
ようやくインストール完了です。
WordPressにアクセス
http://xx.xx.xx.xx/
パブリックIPアドレスでアクセスします。
きっと「Hello World!」が表示されています。
以上で、設定完了です。
続き:手順3:Nginx+WordPressでの404 Not Foundの修正
参考
チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール
チュートリアル: Amazon Linux を使った WordPress ブログのホスティング