初めに
Ubuntu14.04LTS 間で wordpress を移設したときの個人的メモです。
移設理由
主たる理由はサーバ統合によるコストダウン。現状は負荷が少ないのでより安いサービスに移設する。
wordpressのインストール
前提
- Ubuntu-14.04 LTSに、apt から apache と mysql がインストールされれている。 (個人的にはnginx とか marinaDBも試したいが時間がないのでパス)
- Global IPアドレス、もしくは、ルータやLoadBalancer等でインターネット側からアクセスで http アクセスができる
インストール
今回は apt を使い、依存パッケージを含めてまとめてインストール。
$ sudo apt-get install wordpress
https://ja.wordpress.org/ から最新版をダウンロードする方法でもよい。
Apacheの設定
- 今回は、別ドメインを使うので、VirtualHost 設定を利用。
$ vi /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:80>
ServerAdmin staff@example.com
ServerName www.example.com
RewriteEngine on
DocumentRoot /var/share/wordpress/
<Directory /var/share/wordpress/>
Options FollowSymLinks
AllowOverride Limit Options FileInfo
DirectoryIndex index.php
Require all granted
</Directory>
</VirtualHost>
非公開コンテンツがある場合は、設定がおわるまでダイジェスト認証等をつけておいたほうが安心。
- 設定の有効化
$ ln -s /etc/apache2/sites-available/wordpress.conf /etc/apache2/sites-enable/wordpress.conf
- 設定ファイルの文法確認
$ apache2ctl configtest
Syntax OK
- 設定反映
$ /etc/init.d/apache2 graceful
- 動作確認
必要であれば、設定したホスト名でアクセスできるようにDNS設定を行う。
DNS設定確認後、curlコマンドで http://www.example.com にアクセスする。
$ curl http://www.example.com
Neither /etc/wordpress/config-www.example.com nor /etc/wordpress/config-example.com could be found.
Ensure one of them exists, is readable by the webserver and contains the right password/username.
まだ設定ファイルがないので、このエラーで正しい動作。
WordPress設定
ここからが本題で、旧サーバの環境を移行します。
DBデータの移行
- DBデータのダンプ
phpMyAdminが便利ですが、セキュリティ的にあまり使いたくないのでコンソールから行います。
まずは移行元にsshログインしてmysqldumpでダンプを取得し、scp等で移行先にコピーする。。
mysqldump -h [mysqlDBhost] -u [user] -p --default-character-set=binary [DBname] > wpdump.sql
SSLアクセスができるなら、一時的にポートを開けてリモートからダンプする方法も使えます。
- DBアカウントの作成
移行先サーバにログインしDBアカウントを作成する。
- DBデータのリストア
URLが変更になる場合は、予め sed を使ってURLを変更する。エディタでも可能ではあるいが、修正ミスのおそれがあるのでお勧めしない。
$ sed -i 's|[旧URL]|[新URL]|' wpdump.sql
あたらしいサーバのデータベースにリストア
mysql -h HOST -u USER -p DBNAME < wpdump.sql
- データベース内容の修正
旧サーバへのリダイレクト設定を修正する場合は、「wp_options」というテーブルの「siteurl」と「home」という項目を更新する。
UPDATE wp_options SET option_value = 'http://wptest.example.com' WHERE option_value = 'http://wp.example.com';
(追記)
DBのURL修正について
「Search and Replace for WordPress Databases Script]
を使うのが公式な方法です。データベースを直接書き換えるのは、事故の元にななるので、このツールを使うほうが確実でと思われます。
コンテンツの移行
作業時間節約のため、コンテンツは丸ごとコピーします。
まず旧サーバにログインして、WordPressのディレクトリを丸ごとコピー。
$ cd /usr/share/wordpress/
$ car cvfz /tmp/wpdump.tgz *
DBダンプと同様、scp等で新サーバにコピーし展開
mv /usr/share/wordpress /usr/share/wordpress.orig
cd /usr/share/wordpress/ /usr/share/wordpress/
tar xvfz wpdump.tgz
cd /usr/share/wordpress/ /usr/share/wordpress/
- 設定ファイルの修正
/usr/share/wordpress/wp-config.php のデータベース名、DBユーザとパスワードなどを新サーバに合わせて修正する
- 動作確認
ブラウザでアクセスしてみる。
その他Tips
- WordPress更新時にFTP接続情報入力画面となる場合の回避方法。
ウェブサーバの実行権限と、wordpressのファイル権限が違いことで発生するらしい。ubuntuの場合 www-data で統一すれば解消できる。
sudo chown -R www-data:www-data /usr/share/wordpress/
ファイルオーナが書き換えられない場合は「wp-config.php」に以下の行を書着こむことでも可能
define('FS_METHOD', 'direct');