WordPress を MySQLから CentOS 7 の MariaDB に移行して動作確認してみる
CentOS 7 に WordPress をインストール、またはバージョンアップするにあたって、データベースを MySQL にするか MariaDB にするか悩むところだと思います。
MySQL は今まで使ってきたから変更したくないけれども、RedHat/CentOS のサポートは受けられなくなるという課題があります。一方、MariaDB は MySQL と互換性があると言われても不安があります。しかし、RedHat/CentOS の長期サポートが受けられるのは魅力的です。
そこで、CentOS7 の MySQL に WordPress に移行する方法は以下の記事で検証しましたので、今度は、MariaDB を検証してみます。
SELinux の無効化
CentOS 7 では SELlinux がデフォルトで有効になっているので、後で問題が起きないように無効化しておきます。
# vi /etc/sysconfig/selinux
SELINUX=disabled# reboot
Apache の設定
CentOS 7 では Apache がデフォルトでインストールされていないので、Apache のインストールが必要です。また、CentOS 7 から導入された Firewalld が HTTP ポートを塞いでいるので、ポートを開放する必要があります。
Apache のインストールとサービスの起動設定をします。
# yum –y install httpd
# systemctl start httpd.service# systemctl enable httpd.service
# systemctl list-unit-files |grep httpd
httpd.service enabled
Firewalld の HTTP ポートを開放します。
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --reload
この状態でブラウザから、正しく Web サーバーにアクセスできるか確認します。問題なく表示できれば次に、mod_rewrite の設定もここで行っておきます。
/etc/httpd/conf/httpd.conf の、 /var/www/html ディレクトリにある AllowOverride を All に設定し、Apache を再起動します。
# vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
…
AllowOverride All
…
</Directory># systemctl restart httpd.service
PHP のインストール
PHP の必要なモジュールは、デフォルトでインストールされているようなので特になにもしませんでした。
WordPress のバックアップファイルの作成とアップロード
WordPress のバックアッププラグインである BackWPup で、WordPress 全体のバックアップを取ります。バックアップしたファイルは、今回は以下のものとします。
- backwpup_1_2014-10-26_03-00-39.tar.gz
MariaDB のインストール確認と起動
まず、MariaDB がインストールされているか確認します。
# yum list installed | grep mariadb*
mariadb-libs.x86_64 1:5.5.35-3.el7
意外にもデフォルトではインストールされていないようですね。
では、MariaDB のインストールを行います。
# yum -y install mariadb mariadb-server
これで、MariaDB のインストールができたので、MariaDB の起動と起動設定をします。
# systemctl start mariadb.service
# systemctl enable mariadb.service# systemctl list-unit-files |grep mariadb
mariadb.service enabled
WordPress の復元
WordPress をバックアップした、backwpup_1_2014-10-26_03-00-39.tar.gz から WordPress の内容を復元します。
# cd /tmp
# mkdir wordpress
# mv backwpup_1_2014-10-26_03-00-39.tar.gz wordpress
# cd wordpress
# tar zxvf backwpup_1_2014-10-26_03-00-39.tar.gz
# rm backwpup_1_2014-10-26_03-00-39.tar.gz
それから復元先のデータベースを作成します。事前に、wp-confnig.php からデータベースにアクセスする、ユーザー名、パスワード、データベース名を確認しておきます。
# mysql -u root -p
MariaDB [(none)]> create database データベース名;
MariaDB [(none)]> grant all privileges on データベース名.* to ユーザー名@localhost identified by 'パスワード';MariaDB [(none)]> use wordpress;
MariaDB [wordpress]> quit;
MariaDB [wordpress]> source /tmp/wordpress/wordpress_db.sql;
データベースの復元が終了したので、今度はファイルの復元を行います。
# pwd
/tmp/wordpress
# rm –f *.txt *.sql *.json
# cp -rfa * /var/www/html
ここで、ローカルのサーバー (http://192.168.11.6) にアクセスすると本番サーバーに飛ばされてしまいます。バックアップしたデータベースの中身が、本番サーバーの設定になっているので当然といえば当然です。
そこで、フリーで公開されている以下のスクリプトを利用して、データベース内の本番サーバー設定をローカルのサーバーの設定に書き換えます。なお、WordPress のデータベースの中身を手作業で修正すると、不具合が起きるようなのでご注意ください。
ダウンロードしたスクリプトを回答するとフォルダが作成されるので、フォルダ名を適当に(ここでは db)に変えた後、ローカルサーバーのルートにコピーし、ブラウザからフォルダのパス (ここでは、http://192.168.11.6/db/) にアクセスします。
データベースの設定は、wp-config.php から自動的に読み込まれるので、変換をかけるドメイン名をのように指定して(http:// はつけない、末尾に/はつけない)[live run] を実行します。
※作業終了後にこのスクリプトを全て削除するのを忘れないで下さい!
これで、データベースの内容がローカルのサーバーに切り替わったので、再度ローカルのサーバーの管理画面に一度アクセス(/wp-admin) してからサイトを表示すると、ローカルのサーバーで表示されるようになります。
しかし、この状態だとリンク先が本番サーバーの設定のままになっています。データベースの設定だけではドメイン名の変更はできないようです。できるのが普通のようですが、できない場合は以下の対応が必要です。
この場合、ドメイン名の変更をするには、wp-config.php に以下の2行を追加してドメイン名の変更を WordPress に知らせる必要があります。
define('WP_HOME', 'http://192.168.11.6');
define('WP_SITEURL', 'http://192.168.11.6');
設定後に、Apache の再起動が必要になります。
これだけではまだだめで、.htaccess の設定で mod_rewrite を有効にする必要があります。mod_rewrite を有効にするには、管理画面の [パーマリンク設定] にある、.htaccess の設定をコピーして、WordPress のルートフォルダに .htaccess ファイルを作成します。
今回であれば、以下のようになります。
# cd /var/www/html
# vi .htaccess
編集画面で、例としてですが以下のように管理画面からコピーしてきた設定を貼り付けて保存します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
動作検証
画面の表示やリンク、新規投稿、プラグインもうまく動作しているので、これで WordPress を MariaDB に移行することができたということができると言えます。
投稿のプレビューでエラーがでるという課題が残ったのですが、これは WordPress 自体の問題のようなので、MariaDB とは分けて考えてよいのではないかと思います。
おわりに
MariaDB は MySQL と互換性があると言われても、そうは言ってもね、というのがありますが、こと WordPress において問題はなさそうです。ほぼ、MySQL と同様に使えるのは体験してみると分かると思います。
これから MariaDB は、徐々にメジャーになっていくでしょうから、現在、多少の問題があっても近いうちに解消するだろうと楽観的にとらえてもよいのではないでしょうか。
参考サイト
スポンサーリンク
Twitter ではブログにはない、いろんな情報を発信しています。
@fnyaさんをフォロー
コメント