AWS

Amazon EC2(Amazon Linux)でWordPressをインストールし、Nginxで表示させる手順2

amazon_web_service
o_wani
この記事は作成から8年以上経過しているため、内容が古くなっている可能性があります。

サーバを新規で準備する際に、AWSのEC2を利用。

今なら1年間の無料枠があるため、試してみることに。AWSがWordPressの構築手順を準備してるので、それを参考に手順をまとてみました。「手順1」「手順2」「手順3」に分けて記載します。

今回はSSHログインをして、必要なミドルウェアの設定を行っていきます。
ただし、今回はLAMP環境ではなく、webサーバをNginxで進めます。

なぜ、Nginxなのか

  • Apacheよりも高速であること
  • WordPress.comでの運用実績

以上の点からです。

LAMP環境の構築は
チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール
公式ドキュメントを参照すればOKです。今回もおおいに参考にしています。

Contents
  1. Nginx+MySQL+PHP環境の構築
  2. WordPressの設定

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アドレスでアクセスします。

nginx

ページが表示されました。

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_info

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
  1. rootのパスワード設定
    現時点では設定されてないので、[Enter]
1.Enter current password for root (enter for none):
2.OK, successfully used password, moving on...
  1. 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!
  1. 匿名アカウントの削除
    削除をするのでYを入力し、[Enter]
1.Remove anonymous users? [Y/n] Y
2. ... Success!
  1. root のリモートログインを無効
    削除をするのでYを入力し、[Enter]
1.Disallow root login remotely? [Y/n] Y
2. ... Success!
  1. テストデータベースを削除
    削除をするので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!
  1. 権限テーブルを再ロードし、変更を保存
    テーブルを再ロードするので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. データベース名の設定
1.define('DB_NAME', 'wordpress-db');
  1. ユーザーの設定
1.define('DB_USER', 'wordpress-user');
  1. パスワードの設定
1.define('DB_USER', 'wordpress-password');
  1. 認証用ユニークキー設定
    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アドレスでアクセスします。
wordpress_install

ようこそ画面が表示されました。
必要項目を入力してください。

3. 設定完了画面

ようやくインストール完了です。

wordpress_install_complete

WordPressにアクセス

http://xx.xx.xx.xx/
パブリックIPアドレスでアクセスします。

wordpress_helloworld

きっと「Hello World!」が表示されています。
以上で、設定完了です。

続き:手順3:Nginx+WordPressでの404 Not Foundの修正

参考
チュートリアル: Amazon Linux への LAMP ウェブサーバーのインストール
チュートリアル: Amazon Linux を使った WordPress ブログのホスティング

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました