2014/10/26

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
これをサーバーの /tmp にアップロードしておきます。

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]> source /tmp/wordpress/wordpress_db.sql;

MariaDB [wordpress]> quit;

データベースの復元が終了したので、今度はファイルの復元を行います。

# 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] を実行します。

Pic01

※作業終了後にこのスクリプトを全て削除するのを忘れないで下さい!

これで、データベースの内容がローカルのサーバーに切り替わったので、再度ローカルのサーバーの管理画面に一度アクセス(/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
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから