nginxとwordpressの連携


#やりたいこと
nginxとwordpressを連携させてとりあえずhtml表示させたい。
なるべくデフォルト設定にする。

（以下の手順は後からまとめたので再確認はまだしてない）

## インストール

### nginxを入れる

```sh
$ sudo yum install nginx
$ sudo chkconfig --level 345 nginx on 
```

documentrootは/var/www/htmlとする。
混乱すると嫌なので、デフォルトのほうは消す



```sh
$ sudo rm -rf /usr/share/nginx
```

以下confの設定。
documentrootを上のパスにする。
あとphp-fpmの設定も追加する。

```sh
 diff -u /etc/nginx/conf.d/default.conf.org /etc/nginx/conf.d/default.conf  
--- /etc/nginx/conf.d/default.conf.org	2015-06-17 06:34:15.000000000 +0900
+++ /etc/nginx/conf.d/default.conf	2016-05-15 18:26:16.437516988 +0900
@@ -13,20 +13,20 @@
     include /etc/nginx/default.d/*.conf;
 
     location / {
-        root   /usr/share/nginx/html;
-        index  index.html index.htm;
+        root   /var/www/html;
+        index  index.php index.html index.htm;
     }
 
     error_page  404              /404.html;
     location = /404.html {
-        root   /usr/share/nginx/html;
+        root   /var/www/html;
     }
 
     # redirect server error pages to the static page /50x.html
     #
     error_page   500 502 503 504  /50x.html;
     location = /50x.html {
-        root   /usr/share/nginx/html;
+        root   /var/www/html;
     }
 
     # proxy the PHP scripts to Apache listening on 127.0.0.1:80
@@ -37,13 +37,13 @@
 
     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
     #
-    #location ~ \.php$ {
-    #    root           html;
-    #    fastcgi_pass   127.0.0.1:9000;
-    #    fastcgi_index  index.php;
-    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
-    #    include        fastcgi_params;
-    #}
+    location ~ \.php$ {
+        root           /var/www/html;
+        fastcgi_pass   127.0.0.1:9000;
+        fastcgi_index  index.php;
+        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
+        include        fastcgi_params;
+    }
 
     # deny access to .htaccess files, if Apache's document root
     # concurs with nginx's one
[root@ik1-303-11969 nginx]# 
```
上のfastcgi_paramの箇所はちゃんと$document_rootになってることを確認

### php-fpmを入れる

```sh
$ sudo yum install php-fpm
$ sudo chkconfig --level 345 php-fpm on
```

confの設定はデフォルトでapacheの箇所をnginxにするだけ。

```sh
$ sudo vi /etc/php-fpm.d/www.conf
$ cat /etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user  = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
```


### mysqlを入れる

```sh
$ sudo yum install mysql-server
$ sudo /sbin/chkconfig --level 345 mysqld on
$ sudo /etc/init.d/mysqld start
$ sudo mysqladmin -u root password 'パスワード'
$ sudo mysql_secure_installation
      # root ユーザーのパスワードを変更するか？
      Change the root password? [Y/n] n
    
      # 匿名ユーザーを削除するか？
      Remove anonymous users? [Y/n] Y
    
      # リモートから root ユーザーのログインを禁止するか？
      Disallow root login remotely? [Y/n] Y
    
      # test データベースを削除するか？
      Remove test database and access to it? [Y/n] Y
    
      # 権限テーブルをリロードするか？
      Reload privilege tables now? [Y/n] Y
```

続けてDBを作成

```sh 
$ mysql -u root -p
> create database xxxxxxx;
```


### wordpressを入れる

```sh
$ tar zxvf wordpress-4.5.2-ja.tar.gz
$ sudo cp -r wordpress/* /var/www/html/
$ sudo chown nginx.nginx -R  /var/www/html/
$ sudo vi /var/www/html/wp-config.php

# DB_NAME, DB_USER, DB_PASSWORDを上で設定した値にする。
# AUTH_KEY~NONCE_SALTのdefineの設定は
# https://api.wordpress.org/secret-key/1.1/salt/
# にアクセスして取得したものを貼る
```


----

起動させる。

```sh
$ sudo /etc/init.d/php-fpm start
$ sudo /etc/init.d/nginx start
```

以上でとりあえずwordpressの画面にアクセスできるはず・・。


---

ちなみにiptablesを設定している場合は注意。
ローカルから9000ポートにアクセスできるようにしておきましょう。


```sh
$ sudo iptables -A INPUT -m state --state NEW -m tcp   -p tcp --dport 9000  -j ACCEPT -s 127.0.0.1
```

---
[追記]

なぜかテーマと、プラグインのメニューに「新規追加」の項目が出なかった。

db消して、wordpressを置きなおしたら直ったが、直接の原因は恐らく設定ファイルの文字コード
だと思われる。

```
$ nkf -g  /tmp/wp-config.php.old  ./wp-config.php
/tmp/wp-config.php.old:ASCII (LF)
./wp-config.php:UTF-8 (LF)
```

wp-config.php.oldが古いほう。