CoreServer(共用サーバ)上の WordPress が遅いのは気になっていたけど放置していた。
年に一度の契約更新が近づいてきたので重い腰を上げて, さくらのVPS(Ubuntu14.04)に移行したのでメモ。
CoreServerでMySQLDumpを取得する
CoreServer の管理画面から MySQLDump を取得してダウンロードする。160MB程。
Ubuntu14.04に PHP + Nginx + MariaDB(MySQL) インストール
さくらのVPSで動かしているUbuntu14.04に環境を構築する。
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install php5 php5-cli php5-gd php5-fpm php5-mysql
$ php5 --version
PHP 5.5.9-1ubuntu4.9 (cli) (built: Apr 17 2015 11:44:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
$ sudo apt-get install nginx
php5-fpmの設定。
$ sudo vim /etc/php5/fpm/pool.d/www.conf
...
listen = 127.0.0.1:9000
listen.owner = nginx
listen.group = nginx
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = static
pm.max_children = 3
pm.max_requests = 500
request_terminate_timeout = 500
Nginxの設定変更。
$ sudo vim /etc/nginx/nginx.conf
...
server {
listen 80;
server_name www.xxxxx.com;
root /var/www/public_html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$uri&$args;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffers 8 128k;
fastcgi_buffer_size 256k;
fastcgi_read_timeout 500;
include fastcgi_params;
}
}
php5-fpm, nginx を再起動する。
$ sudo service php5-fpm restart
$ sudo service nginx restart
MariaDBのインストール。
$ sudo apt-get install mariadb-server
$ mysql --version
mysql Ver 15.1 Distrib 5.5.43-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
$ sudo service mysql status
* /usr/bin/mysqladmin Ver 9.0 Distrib 5.5.43-MariaDB, for debian-linux-gnu on x86_64
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Server version 5.5.43-MariaDB-1ubuntu0.14.04.2
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 3 min 7 sec
取得していた MySQLDump を scp で Upload する。
$ scp -i ~/.ssh/id_rsa mysql.dump user@xxxx.vs.sakura.ne.jp:~/wordpress
DBを作成して Upload した Dump を import する。
$ mysql -u[user] -p[pass]
MariaDB [(none)]> CREATE DATABASE [db-name] CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
$ mysql mysql -u[user] -p [db-name] < mysql.dump
入れるか確認。
$ mysql -u[user] -p[pass] -D[db-name]
vsftpdは必須ではないので今回は省略。
WordPressの配置
今回は, WordPress の最新版ソースを持ってきて配置する。webサーバに Nginx を使うので所有者を nginx に変更することで管理画面から WordPress を更新できる。
$ wget https://ja.wordpress.org/wordpress-4.2.2-ja.zip
$ unzip wordpress-4.2.2-ja.zip
$ mv wordpress/ public_html/
$ rm wordpress-4.2.2-ja.zip
$ chown -R nginx:nginx /var/www/public_html/
CoreServer にある wp-content/plugins など必要なファイルは適宜 public_html/wp-content 以下に mv する。
管理画面からの画像のアップロードは, wp-content/uploads/に置かれるので権限を変更しておく必要あるかも。
また, Plugin によっては配置だけでは動かない場合もある。例えばWP QuickLaTeXはSVGのキャッシュ置場を作っておくことが必要になる。
$ cd public_html/wp-content
$ mkdir ql-cache
$ chmod -R 777 ql-cache
WordPressのアップデート [1] の際もいくつかのディレクトリ/ファイルの権限変更が必要になる。
wp-config.phpを変更する
WordPressの設定ファイル, wp-config.php を変更する。
$ vim wp-config.php
...
define('DB_NAME', '[db-name]');
define('DB_USER', '[user]');
define('DB_PASSWORD', '[pass]');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define('DB_TYPE', 'mysql');
define('WP_SITEURL','https://www.xxxxx.com' );
DNSのレコード設定変更
ドメイン登録機関のレジストラ [2] は VALUE-DOMAIN を使っているので, ログインしDNSの設定を CoreServerのIPアドレス から, さくらのVPSで動かしている 仮想サーバのIPアドレス に変更する。移行先のIPアドレスは さくらのVPSのコントロールパネル からも確認できる。
a * [サーバのIPアドレス]
mx @ 10
txt @ v=spf1 ip4:[サーバのIPアドレス] ~all
変更がDNSサーバ間で同期されるまで待ってから さくらのVPSのコントロールパネル にログインして設定 > ホスト名逆引き登録で, ドメインを登録する。
設定が完了したら, dig コマンドで正引できるか確認する。
$ dig fisproject.net
; <<>> DiG 9.8.3-P1 <<>> fisproject.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 829
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;fisproject.net. IN A
;; ANSWER SECTION:
fisproject.net. 1200 IN A 160.16.116.76
;; Query time: 136 msec
;; SERVER: 192.168.10.1#53(192.168.10.1)
;; WHEN: Sun Sep 25 10:45:07 2016
;; MSG SIZE rcvd: 47
また, IPアドレスからホスト名を調べる逆引の場合は xオプション で確認できる。
$ dig -x 160.16.116.76
; <<>> DiG 9.8.3-P1 <<>> -x 160.16.116.76
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23170
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;76.116.16.160.in-addr.arpa. IN PTR
;; ANSWER SECTION:
76.116.16.160.in-addr.arpa. 3600 IN PTR fisproject.net.
;; Query time: 146 msec
;; SERVER: 192.168.10.1#53(192.168.10.1)
;; WHEN: Sun Sep 25 16:36:11 2016
;; MSG SIZE rcvd: 71
Nginx を起動しブラウザからWebサイトにアクセスして移行できているか確認する。
速度比較
Test a website's performanceで性能を比較してみる。設定は初期設定のままで試した。
DNS Lookup, Initial Connectionまではほぼ同じだけど, First Byteが1.351sから0.850sに短縮した。共用サーバからVPSに変更したことで速度向上という期待通りの結果になった。
[1] レジストラは お名前.com など様々なので設定方法はサービスごとに異なる。お名前.comのDNS設定は ネームサーバーの設定 > DNSレコード設定 から。