学習発表用のこのWordpressですが、公開してるVMサーバのスペックが低いので
閲覧や編集するのに重すぎる状態です。
家庭用の回線なので表示に時間がかかり、ストレスが溜まるので
環境が安定している借りているVPSにWordpressを移行したときのメモ書きです。
概要
・移行元のサーバ
CentOS6.6
Apache2.2
MySQL5.1
PHP5.3
・移行先のサーバ
CentOS6.8
Nginx1.11
MySQL5.1
PHP5.6
OSやMYSQLのバージョンは同じ、PHPは移行先のサーバのバージョンが上。
大きく変わるのがWebサーバソフトウェアがApacheからNginxになること。
また、PHP-FPMでPHPを呼び出すので、通常の設定とは異なることが挙げられます。
作業の流れ
- DBのバックアップ取得(移行元)
- WordPressディレクトリのコピー(移行元→移行先)
- バックアップを取得したDBの流し込み(移行先)
- コピーしたWordpressディレクトリの権限変更
- NginxでWordpressを表示する為の各種設定変更
作業内容
1.DBのバックアップ取得
MySQLはバージョン同じなので一番手っ取り早くmysqldumpを使いました。
dumpしたDBはSCPで移行先サーバにコピー。
[bash]
[root@kensyo ~]# mysqldump -u root -p wpdb > dump.sql
[/bash]
2.Wordpressディレクトリのコピー(移行元→移行先)
コピー方法はいろいろ考えましたが、ここはSSH経由でrsyncを利用します。
オプションがごっちゃりしてますが、ディレクトリ権限の状態はそのまま、通信を圧縮して、見やすく、結果を表示しながらrsyncする。ということになります。
[bash]
[root@kensyo ~]# rsync -avuhz -e "ssh -p22 -i /home/harada/default.pem" /var/www/html/wordpress/ harada@hdserver.mydns.jp:/home/harada/wordpress/
[/bash]
ちなみにコピー先の/home/harada/wordpress/ディレクトリは、haradaユーザの書き込み権限がないとエラーがでるので
予め権限周りの設定をしておきます。
3.バックアップを取得したDBの流し込み(移行先)
dumpを流し込むデータベースを作成
[bash]
[root@vps sunspot]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2119
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, 0 rows affected (0.06 sec)
mysql> \q
Bye
[/bash]
dump流し込み。簡単ですね。
[bash]
[root@vps ~]# mysql -u root -p wpdb < dump.sql
[root@vps ~]#
[/bash]
4.コピーしたWordpressディレクトリの権限変更
オーナーはroot、ファイルすべてに実行権限を与えました。
※セキュリティも考慮して、最終的に権限周りは調整します。
[bash]
[root@vps ~]# chown -R root.root wordpress/
[root@vps ~]# chmod 755 wordpress/*
[/bash]
5.NginxでWordpressを表示する為の各種設定変更
Nginxでは.htaccessが使用できないので、それに合わせて新たにconfファイルを作成します。
また、移行先のサーバでは既に別サイトが構築されているので、それとは別で運用する必要があります。
[bash]
[root@vps conf.d]# vi /etc/nginx/conf.d/wordpress.conf
# WordPress Site
server {
listen 80;
server_name hdserver.mydns.jp;
location ^~ / {
alias /usr/share/nginx/html/wordpress;
index index.php index.html index.htm;
try_files $uri $uri/ /wordpress/index.php?$args;
location ~* /wp-config.php {
deny all;
}
location ~* /wp-login\.php|/wp-admin/(^admin-ajax\.php) {
auth_basic "Auth Basic";
auth_basic_user_file "/etc/nginx/conf.d/.htpasswd";
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_split_path_info ^(/wordpress)(/.*)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_split_path_info ^(/wordpress)(/.*)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
}
[/bash]
なお、セキュリティを考慮して管理画面のページにはBasic認証をかけました。
[bash]
[root@vps conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@vps conf.d]# /etc/rc.d/init.d/nginx reload
Reloading nginx: [ OK ]
[/bash]
おしまい。
このNginxのconfファイルの設定が一番大変でした。
phpの設定を入れ子で記載する方法に辿り着くまでかなり時間がかかってしまいました。
apacheをバックエンドに置いて、リバースプロキシさせる方法も考えましたが
既存のNginxだけの環境で動かしたかったのでがんばりました。
なお、PHPの設定が現状不完全なので、ページによってはエラーが出たり
正しく表示できなかったりしますが、致命的なバグは発生していないのでよしとします。
ぼちぼち修正はしていきます。