nginxでwordpressを動かすには

ちょいとサーバにwordpressを入れてみようかと思ったので、そこでの備忘録として書きます。

まあ、言いたい事はphp-fpm忘れんなよの一言ですが・・・
apacheを使えば無問題なんですが・・・

# 目次
* 環境説明
* ミドルウェアインストール
* wordpressインストール
* 各種設定
* サービス起動
* 次の目的+参考資料

# 環境説明

awsにてCentOS 6.5を使っています。

sudo 書くの面倒くさいんで、全てのコマンドはroot権限で実行している想定です。rootへのsu権限もらってない人は、随時sudoつけてやってください。

あと、【】で囲いをつけたところは、各自で適当に置き換えてください。
間違ってもそのまま使わないでくださいね。

# ミドルウェアインストール
sedでのレポジトリの設定ファイルの編集は、飛ばしてもらっても構いません。
yumを使う際に、最低限のレポジトリへのアクセスにするためのものです。


## nginxをインストールします。

nginxのレポジトリはインストールしたままだと “Stable version”  であり、ミッションクリティカルな用途で用いるのでなければ “Mainline version” を用いても問題ないので、それについての手順も含めています。

``` 
# yum install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# sed -i "s/enabled=1/enabled=0/g" /etc/yum.repos.d/nginx.repo
# sed -i "s/nginx.org\/packages\/centos/nginx.org\/packages\/mainline\/centos/" /etc/yum.repos.d/nginx.repo
# yum install nginx --enablerepo=nginx
```

## mysql をインストールします。
今回はver5.6を用います。

```
# yum install http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
# sed -i "s/enabled=1/enabled=0/g" /etc/yum.repos.d/mysql-community.repo
# yum -y install mysql-community-server --enablerepo=mysql56-community
```

## phpをインストールします。
今回はver5.6を用います。
mysqlと合わせているわけではありませんので、必要があればバージョンアップしても問題ありません。

```
# yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum install php --enablerepo=remi-php56
```

php のバージョンの確認します。

```
# php -v
```
5.6になっているか確認しましょう。


## php-fpmをインストールします。
今回、php5.6を用いているためphp56のレポジトリからインストールします。

```
# yum install php-fpm --enablerepo=remi-php56
```

# wordpressインストール

今回はver 4.3.1を用います。
特に理由が無ければ、”4.3.1” の部分を “latest”に変更して最新をインストールしても大丈夫だと思います。

自分がやったのは以下の通りです。

```
# cd /usr/local/src/
# wget https://ja.wordpress.org/wordpress-4.3.1-ja.tar.gz
# tar zxvf wordpress-4.3.1-ja.tar.gz
```
最新版をインストールする場合は以下を使ってください。

```
# cd /usr/local/src/
# wget https://ja.wordpress.org/wordpress-latest-ja.tar.gz
# tar zxvf wordpress-【インストールしたバージョン】-ja.tar.gz
```

wordpressのディレクトリを適当な所に移動させます。

```
# mv wordpress /var/www/
```

# 各種設定
## mysqlにwordpress用のデータベースを作成します。
まずは起動します。すでに起動している場合はスキップしてください

```
# service mysqld start
```
次に、mysqlの初期設定を行います。こちらも、すでに実行済みの方はスキップしてください。
対話式でコマンドライン上に質問が出てくるので、下記のように対応してください。
また、mysqlのrootユーザのパスワードを決めておいてください。

```
# mysql_secure_installation

Enter current password for root (enter for none): 【ENTERキーを入力】

Set root password? [Y/n] Y
New password:【mysqlのrootユーザのパスワード】
Re-enter new password:【mysqlのrootユーザのパスワード】

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

```

次に、データベースを作成します。
ここでは、wordpressのシステムがmysqlにアクセスする用のデータベースとユーザを作成するため、パスワードを決めておいてください。

```
# mysql -uroot -p
Enter password:　【mysqlのrootユーザのパスワード】

mysql> create database wp;

mysql> grant all privileges on wp.* to wp@localhost identified by '【mysqlのwpユーザのパスワード】';

mysql> FLUSH PRIVILEGES;

```


## nginxの設定ファイルを編集します。
/wp-config.php はmysqlのパスワードがべた書きされているので、ちゃんと見えなくなるようにしましょう。
http タグ内に下記を記述してください。

```bash
    server {
        listen 80;
        server_name 【あなたのサーバのホスト名】;
        index index.php ;
        root /var/www/wordpress ;
        location ~* /wp-config.php {
             deny all;
        }
        location ~ \.php$ {
             root           /var/www/wordpress ;
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
        }
    }

```
編集後は文法チェックを忘れずに。

```
# service nginx configtest
```
以下のような出力が出ればOKです。

```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful`
```


## php-fpmの設定をします。
設定と言ってもphp-fpmのユーザとグループをnginxに変えるだけです。

```
# sed -i "s/user = apache/user = nginx/" /etc/php-fpm.d/www.conf
# sed -i "s/group = apache/group = nginx/" /etc/php-fpm.d/www.conf
```
php-fpmも文法チェックをしましょう。

```
# service php-fpm configtest
```
## wordpressの設定を変更します。
下記のような記述があるので、それぞれ書き換えていってください。

```php:/var/www/wordpress/wp-config.php
/** WordPress のためのデータベース名 */
define('DB_NAME', 'wp');

/** MySQL データベースのユーザー名 */
define('DB_USER', 'wp');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '【mysqlのwpユーザのパスワード】');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');
```
認証用ユニークキーの部分は、公式がよいサービスを提供してくれているので、下記を削除してそのまま利用しましょう。
https://api.wordpress.org/secret-key/1.1/salt/


```
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');
```
# サービス起動
mysqlは設定時に起動しましたので、nginxとphp-fpmを起動させましょう。

```
# service nginx start
# service php-fpm start
```
サーバ再起動時の自動起動設定もしましょう。


```
# chkconfig mysqld on
# chkconfig nginx on
# chkconfig php-fpm on
```

あとは、ブラウザからの作業になります。
それは、以下を参照してください。(手抜き)
http://webkaru.net/linux/wordpress-install-centos/

# 次の目的+参考資料
## 次の目的
wordpressでbootstrapが使えるようにしたいので、それが出来るようなテーマでも作成しようかなと。
とは言え、公式のテーマのページがあるので、そこを見て自分が欲しいものが無かったらやろうかと思います。

## 参照サイト
http://qiita.com/utano320/items/36b6eac2bbd5bb5657f6
http://qiita.com/MiyaseTakurou/items/923c28f7ac60b2ce761a
http://qiita.com/utano320/items/36b6eac2bbd5bb5657f6
http://www.atmarkit.co.jp/ait/articles/1407/24/news003.html