さくらVPS:Nginx+PHPでWordPressを動かす(一応解決編)

前回は、インストールには成功したはずが、アクセスすると Not Found になってしまったところで終わった。一応解決したので、メモしておく。

参考になったページは次のとおり。

 cf. nginx – 404 not found page for permalinks [closed] – stackoverflow
 cf. nginxの設定ではまった事 – のぶろぐ

まずは1つ目の stackoverflow のページにあるとおり、Nginx の設定ファイル(/etc/nginx/conf.d/blog.lathercraft.net.conf)に、try_files 〜 という行を追加した。
これで、無事ページが表示されるようになったんだけど、スタイルが読み込まれていない、ただの html だけのような表示になってしまった。

で、2つ目のページにしたがって、静的なファイル(画像やCSS)を読み込む設定をしたら、うまくいった。

最終的に、設定ファイルはこうなった。

server {
    # port
    listen 80;

    # server name
    server_name blog.lathercraft.net;

    # document root
    root /ver/www/wordpress;

    # index
    index index.php;

    # log files
    access_log /var/log/nginx/blog.lathercraft.net/access.log main;
    error_log /var/log/nginx/blog.lathercraft.net/error.log warn;

    if (!-e $request_filename) {
        rewrite ^/(.+)# /index.php?q=$1 last;
        break;
    }

    try_files $uri $uri/ /index.php?q=$uri&$args;

    # php-fpm
    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;
    }

    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
        root /var/www/wordpress;
        access_log off;
        expires 30d;
    }

}

なんだかよくわからないけど、動いているので良しとする。

さくらVPS:Nginx+PHPでWordPressを動かす

blog.lathercraft.net

WordPress は blog.lathercraft.net で動かすつもりなので、まずは昨日作った、www.lathercraft.net 用の設定ファイルをコピー。

[root@www2465uo takatoh]# cp /etc/nginx/conf.d/www.lathercraft.net.conf /etc/nginx/conf.d/blog.lathercraft.net.conf

コピーした blog.lathercraft.net.conf を編集して、サーバー名に当たるところを blog.lathercraft.net に、root を /var/www/wordpress に書き換える。
でもって Nginx を再起動。

[root@www2465uo takatoh]# service nginx restart
nginx: [warn] conflicting server name "www.lathercraft.net" on 0.0.0.0:80, ignored
nginx を停止中:                                            [  OK  ]
nginx を起動中: nginx: [warn] conflicting server name "www.lathercraft.net" on 0.0.0.0:80, ignored
                                                           [  OK  ]

これで、blog.lathercraft.net にアクセスできるようになった。

WordPressをダウンロード

/var/www/wordpress にインストールすることにしたので、まずはディレクトリを作って移動する。

[root@www2465uo takatoh]# cd /var/www
[root@www2465uo www]# ls
cgi-bin  error  html  icons
[root@www2465uo www]# mkdir wordpress
[root@www2465uo www]# ls
cgi-bin  error  html  icons  wordpress
[root@www2465uo www]# cd wordpress
[root@www2465uo wordpress]# pwd
/var/www/wordpress

日本語版の公式サイトから最新版をダウンロード。

[root@www2465uo wordpress]# wget http://ja.wordpress.org/wordpress-3.9.2-ja.zip
--2014-08-10 12:07:50--  http://ja.wordpress.org/wordpress-3.9.2-ja.zip
ja.wordpress.org をDNSに問いあわせています... 66.155.40.249, 66.155.40.250
ja.wordpress.org|66.155.40.249|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 6802737 (6.5M) [application/zip]
`wordpress-3.9.2-ja.zip' に保存中

100%[======================================>] 6,802,737    231K/s 時間 29s     

2014-08-10 12:08:19 (231 KB/s) - `wordpress-3.9.2-ja.zip' へ保存完了 [6802737/6802737]

ダウンロードしたファイルを解凍。

[root@www2465uo wordpress]# ls
wordpress-3.9.2-ja.zip
[root@www2465uo wordpress]# unzip -qq wordpress-3.9.2-ja.zip
[root@www2465uo wordpress]# ls
wordpress  wordpress-3.9.2-ja.zip

あれ、wordpress ディレクトリができちゃった。というわけで、一つ上のディレクトリに移動してもう一度。

[root@www2465uo wordpress]# ls
wordpress  wordpress-3.9.2-ja.zip
[root@www2465uo wordpress]# rm -f -r wordpress
[root@www2465uo wordpress]# mv wordpress-3.9.2-ja.zip ..
[root@www2465uo wordpress]# ls
[root@www2465uo wordpress]# cd ..
[root@www2465uo www]# rmdir wordpress
[root@www2465uo www]# unzip -qq wordpress-3.9.2-ja.zip
[root@www2465uo www]# ls
cgi-bin  error  html  icons  wordpress  wordpress-3.9.2-ja.zip

MySQLにデータベースを作る

WordPress 用の空のデータベースを作る。ユーザは wordpress にする。

[root@www2465uo www]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> USE mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.00 sec)

mysql> INSERT INTO user SET user="wordpress", password=password("wordpress"), host="localhost";
Query OK, 1 row affected, 3 warnings (0.00 sec)

mysql> exit
Bye
[root@www2465uo www]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE wpdb;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON wpdb.* TO wordpress;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye

これでいいかな。

WordPressのインストール

blog.lathercraft.net/index.php にアクセスして WordPress をインストール。データベース名などを指定して続行すると、wp-config.php が書き込めないとでた。パーミッションの関係なんだろうけど、手動でコピペしてもいいらしいので、そのとおりに /var/www/wordpress/wp-config.php を作った。
改めて続行すると、あっという間にインストールは終わった。前にやった時もそうだけど楽でいいな。
さあ、ログインしてみよう。

wordpress-not-found

なんでだーーーーーー!
……ああ、力尽きた……

さくらVPSにMySQLをインストール

MySQLのインストール

yum コマンドでインストール。

[root@www2465uo takatoh]# yum install mysql-server
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
epel/metalink                                            | 5.9 kB     00:00     
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
base                                                     | 3.7 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mysql-server.x86_64 0:5.1.73-3.el6_5 will be installed
--> Processing Dependency: mysql = 5.1.73-3.el6_5 for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: perl-DBI for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Processing Dependency: perl(DBI) for package: mysql-server-5.1.73-3.el6_5.x86_64
--> Running transaction check
---> Package mysql.x86_64 0:5.1.73-3.el6_5 will be installed
---> Package perl-DBD-MySQL.x86_64 0:4.013-3.el6 will be installed
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package               Arch          Version               Repository      Size
================================================================================
Installing:
 mysql-server          x86_64        5.1.73-3.el6_5        updates        8.6 M
Installing for dependencies:
 mysql                 x86_64        5.1.73-3.el6_5        updates        894 k
 perl-DBD-MySQL        x86_64        4.013-3.el6           base           134 k
 perl-DBI              x86_64        1.609-4.el6           base           705 k

Transaction Summary
================================================================================
Install       4 Package(s)

Total download size: 10 M
Installed size: 29 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): mysql-5.1.73-3.el6_5.x86_64.rpm                   | 894 kB     00:03     
(2/4): mysql-server-5.1.73-3.el6_5.x86_64.rpm            | 8.6 MB     00:38     
(3/4): perl-DBD-MySQL-4.013-3.el6.x86_64.rpm             | 134 kB     00:00     
(4/4): perl-DBI-1.609-4.el6.x86_64.rpm                   | 705 kB     00:03     
--------------------------------------------------------------------------------
Total                                           226 kB/s |  10 MB     00:46     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : perl-DBI-1.609-4.el6.x86_64                                  1/4 
  Installing : perl-DBD-MySQL-4.013-3.el6.x86_64                            2/4 
  Installing : mysql-5.1.73-3.el6_5.x86_64                                  3/4 
  Installing : mysql-server-5.1.73-3.el6_5.x86_64                           4/4 
  Verifying  : perl-DBD-MySQL-4.013-3.el6.x86_64                            1/4 
  Verifying  : mysql-server-5.1.73-3.el6_5.x86_64                           2/4 
  Verifying  : mysql-5.1.73-3.el6_5.x86_64                                  3/4 
  Verifying  : perl-DBI-1.609-4.el6.x86_64                                  4/4 

Installed:
  mysql-server.x86_64 0:5.1.73-3.el6_5                                          

Dependency Installed:
  mysql.x86_64 0:5.1.73-3.el6_5       perl-DBD-MySQL.x86_64 0:4.013-3.el6      
  perl-DBI.x86_64 0:1.609-4.el6      

Complete!

MySQLの設定

設定ファイルは /etc/my.cnf。バックアップをとってから編集する。

[root@www2465uo takatoh]# cp /etc/my.cnf /etc/my.cnf.orig
[root@www2465uo takatoh]# vim /etc/my.cnf

/etc/my.cnf は次のようにした。色を付けた行が追加したところ。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

MySQLの起動

これで起動してみよう。

[root@www2465uo takatoh]# service mysqld start
MySQL Daemon failed to start.
mysqld を起動中:                                           [失敗]

あれ、失敗した。何がおかしいのかな。
設定ファイルを見なおしても、おかしいところが見つからない。
じゃ、試しにデフォルトの設定ファイルに戻して試してみよう。

[root@www2465uo takatoh]# cp /etc/my.cnf.orig /etc/my.cnf
cp: `/etc/my.cnf' を上書きしてもよろしいですか(yes/no)? y
[root@www2465uo takatoh]# service mysqld stop
mysqld を停止中:                                           [  OK  ]
[root@www2465uo takatoh]# service mysqld start
MySQL Daemon failed to start.
mysqld を起動中:                                           [失敗]

ダメじゃん。デフォルトの設定ファイルで動かないってどういうことさ。

いろいろ試した結果、次のようにしたら起動に成功した。

  1. yum remove mysql-server でアンインストール
  2. /var/llib/mysql ディレクトリを削除
  3. 再度 mysql-server をインストール

実は、最初に設定ファイルを書き換えたとき、innodb とするべきところを inoodb と typo していたのだ。気がついて直したんだけど、すでに一度 MySQL を起動した後だとダメだったらしい。で、/var/lib/mysql を削除したら OK になった、と。

[root@www2465uo ~]# service mysqld start
mysqld を起動中:                                           [  OK  ]

MySQLの設定(つづき)

mysql_secure_installation を実行する。

[root@www2465uo ~]# mysql_secure_installation

途中で、root のパスワードを設定するか、と訊かれるので、Y と答えてパスワードを設定する。それ以外は単にエンターキーを叩けば OK。

参考にしたサイト

 cf. さくらのVPS入門 #16 MySQLの設定をしよう – ドットインストール