あっかぎのページ

WordPress(MySQLなし)

20150408_1

WordPressのMySQLなし版をやってみました。
(2015/04/23所有権の箇所を追記しました)

ロリポップ100円/月に移行を考えています。100円/月ではMySQLに非対応なため普通のやり方ではWordPressが使えません。(このWebもWordPressを使っています)
そこでMySQLなしでもWordPressを動かす方法があるということで、まずは自分のローカル環境で試してみました。

メリット

MySQLなし版を使うことのメリットはこれに尽きると思います。

  • 安いレンタルサーバーを使える

あと、WordPress以下のフォルダをまるごとコピーだけでバックアップや移行も簡単にできるようになると思います(未検証)。(MySQL版はMySQLのデータベースのバックアップも必要)

やり方

  • SQLite Integrationを利用
  • データの移行

SQLite Integrationというプラグインを利用します。このプラグインはWordPressのデータベースMySQLをSQLiteに置き換えます。

MySQLとSQLiteの違いは簡単に言うと

  • MySQL => 本格的なデータベース
  • SQLite => 簡易的なデータベース

MySQLは本格的なデータベースなので大量のデータ処理にも対応できます。それに対してSQLiteは簡易データベースです。SQLiteはファイル1つがデータベースになっているので、データのバックアップやコピーが通常のコピペでできるという利点があります。反面、大量のアクセスに弱くロックしたりデータ漏れが発生する可能性があります。

SQLite Integrationはこのデータベース操作の部分をMySQLからSQLiteに置き換えることでWordPressを動作させます。これにより見かけ上は普通のWordPressと同じように使うことができます。

先ほど紹介したデータベースの違いによる特徴があるので、Webサイトがとても人気でアクセスが多いサイトや頻繁なデータの書込みが多いサイトでは通常のMySQL版を使う方がいいと思います。逆にぼくのような過疎サイトwはMySQLなし版でもきっと対応できると思います。(下の方にMySQLなし版のリスクも取り上げています)

SQLite Integrationを利用

まずは、こちらのサイトからデータをとってきます。

SQLite Integration

設定ややり方はこのサイトがとてもわかりやすかったです。

SQLite Integration(ja)

SQLite Integrationの導入とWordPressの設定の一連の操作はこんな感じです(/var/wwwにインストールするとして)。(コマンドラインでわかりづらくてすみません。次回ロリポップ導入編ではWindows操作でやる予定です。)

$ cd /var/www
$ curl -O http://ja.wordpress.org/latest-ja.tar.gz
$ curl -O http://downloads.wordpress.org/plugin/sqlite-integration.1.8.1.zip
$ tar zxvf latest-ja.tar.gz
$ cd wordpress/wp-content/plugins
$ unzip ../../../sqlite-integration.1.8.1.zip
$ mv sqlite-integration/db.php ../
$ cd ../../
$ mv wp-config-sample.php wp-config.php
$ vi wp-config.php

まず、インストールするフォルダに移動して必要なファイルをとってきます(WordPressとSQLite integration)。そしてWordPressを先に展開します。

SQLite integrationはWordPressのpluginsで使うので、そちらで展開します。そしてSQLite integrationの中のdb.phpファイルをwp-contentファイルに移動します。

ここまでで、一旦ファイルの準備は完了します。

WordPress

次にWordPressの設定ファイルの準備です。

と言っても簡単で、こちらのサイトでWordPress用の認証keyを取得します(ブラウザでアクセス)。これらをコピーしてwp-config.phpファイルの同じ記述の所に置き換えます。

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

...
$table_prefix  = 'wp_';

そして、最後の部分でデータベースの識別記号を任意のキーワードに設定します。(例:wp_) ※MySQLは重複すると大変ですが、SQLiteはWordPressごとにデータベースを1つずつ作るので何でも構いません。

所有権

Apacheの所有権で動作させるので、それに伴って所有権の設定をします。ここではApacheが所有者www-data・グループwww-dataで、所有者とグループがアクセス権があると想定します。

$ cd /var/www
$ sudo chown -R www-data:www-data wordpress
$ find wordpress -type d | sudo xargs chmod 775
$ find wordpress -type f | sudo xargs chmod 664

以上で設定は完了です。

あとは、上記のサイトにアクセスしてWordPressの初期設定の画面が出れば完了です。

Raspberry Piの場合

Raspberry Piの場合、次のパッケージをインストールする必要がありました。(WordPressの初期画面で「PDO対応されてないよ」と怒られました)

$ sudo apt-get install php5-sqlite

データの移行

現在MySQL版運用のWordPressのデータをMySQLなし版(SQLite)へ移行しました。

やり方はこの順番です。

  1. データのエクスポート
  2. データのインポート

データのエクスポート(抽出)のやり方です。

WordPressの管理画面 → ツール → エクスポート → すべてのコンテンツにチェック → エクスポートファイルをダウンロード

移行元の管理画面から上記の手順で現在の投稿データなどを取り出すことができます。データは「wordpress.20xx-yy-zz.xml」という感じでダウンロードされると思います。これを移行先で読み込むことで移行が完了します。

データのインポート(読み込み)のやり方です。こちらは移行先のWordPressで操作します。

WordPressの管理画面 → ツール → インポート → WordPress

ここで、下のような画面のWordPress Importerというプラグインがポップアップされますので、こちらをインストールして有効化します。

20150408_2

WordPress Importerのインストールが完了すると、インポートの手続きを進めます。

WordPress のインポート → ファイルを選択 → ファイルをアップロードしてインポート

ここで「ファイルを選択」では、先ほどエクスポートした「wordpress.20xx-yy-zz.xml」というファイルを選択します。そうすると少し待つと画面が変わります。

WordPress のインポート → 投稿者の割り当て → 添付ファイルのインポート(チェックする) → 実行

投稿者の割り当てについては、投稿者をデータ移行する時に変更できます。(何もしない場合はそのまま)

添付ファイルのインポートはチェックすることをおすすめします。これは移行元の画像データなどを移行先にコピーする機能です。チェックをしない場合は、リンクだけされた状態となりますので、移行元のサーバーを消してしまうと画像データなどもいっしょになくなってしまいます。これをチェックすることで移行先にも画像データをコピーして移行先サーバーの中でサイトを完結することができます。

ぼくの場合、ローカル環境に移行してこんな感じになりました。

20150408_1

複雑なプラグインなどを使っていないので、ほぼそのまま再現できています。投稿データなどのデータはSQLite形式でwp-content/database/.ht.sqliteに保存されています。このファイルが投稿データなどのWordPressのデータベースを司るようになります。

あとは、ウィジェット設定やテーマやプラグインなどを必要に応じてコピーやインストールすることでデータの移行が完了します。このあたりについては通常のMySQL版WordPressのデータ移行と同じでできると思います。

MySQLなし版のリスク

MySQLなし版を使うことでリクスもあります。WordPressの基幹部のデータベースを変更することで次のようなことが考えられます。

  • 使えないプラグインが発生 一例
  • 多アクセスで処理が追いつかない
  • 問題が発生したときに通常の方法で解決できない場合がある

WordPressはMySQLを想定した作りになっているため、MySQLなし版を使うといろんな場面で上記のようなトラブルが発生する可能性があります。

ぼくのような技術興味のある人は少々のトラブルも覚悟の上でやっているので大丈夫ですが、普通にWordPressを使いたいだけの場合や初心者の人は「WordPress対応」の表記があるレンタルサーバーやプランを選択するのが賢い選択だと思います。

例えば、ロリポップの場合だと最安の100円/月とWordPress対応の250円/月を比べると、150円/月の差くらいは少々のトラブルや下調べを考えるとすぐにひっくりかえると思います。

最近のレンタルサーバーは「WordPress対応」がひとつのウリになっているので、「WordPress対応」の場合は管理画面や設定も初心者でもやりやすくなっています。また、使い方もいろんなWebサイトで紹介されているので「WordPress対応」のサーバー・プランがおすすめですね。

おわりに

今回はテスト用のローカルサーバー(Raspberry Pi)にMySQLなし版をインストール&データの移行をしました。今度は同じ内容をロリポップの100円/月プランで試してみようと思います。

参考