Azureの仮想マシン(Ubuntu)でWordPressサイトを立ち上げる

ClearDBの20MB制限とは

Microsoft Azureは、ギャラリーから選ぶだけでWordPressを使ったブログサイトを簡単に立ち上げられます。しかしながら、ここで使われているMySQLはClearDBというサードパーティーのサービスで、無料で使えるデータベースのサイズは20MB迄という厳しい制限があります。

本ブログの投稿数は150くらいですが、この制限に間もなく達するようで、ClearDBから警告のメールが毎日のように届いています。

この制限を回避するための方法は幾つかあります。

1. Azureのメニューからアドオンを選び、ストアからClearDBの有料サービスを購入する。784円/月で1GBのVenusプランがあるが、地域で日本が選べない。

2. ダッシュボードの[リンク済みリソース]からデータベース名をクリックし、ClearDBのサイトに飛んでUpgradeする。1GBのVenusプランは$9.99/月なので、レートを考えると1.より少し割高。ただし、今のMySQLデータベースと同じ地域に置ける(日本に置ける)。

どちらの方法にしても、サブスクリプションの残高から支払うことは出来ず、別に引き落とされます。

仮想マシンを立ち上げる

もう一つの回避策は、自分でMySQLをインストールした仮想マシンを立ち上げる方法です。LAMP環境の構築や、WordPressのインストールが必要になりますが、自由度は高くなります。
私の場合は月1万円分のサブスクリプション特典が使えるので、その範囲内で済ませるためにも仮想マシンを作ることにしました。

以下は作成手順です。

Azureのメニューから仮想マシンを新規作成。[ギャラリーから]を選択します。

vm1

Microsoftのサービスですが、仮想マシンのイメージはWindows Server以外にLinuxも選べます。私はDebianに慣れているので、Ubuntu Server 14.04 LTSを選択しました。

vm2

仮想マシン名とユーザー名を入力し、認証の方法を証明書かパスワードのどちらか選択します。認証用のSSH キーは、X.509証明書(.cer 形式または .pem 形式)となります。

vm3

DNS名はxxx.cloudapp.netとなります。独自ドメインの設定は後ほど行います。エンドポイントはSSHが登録済みですが、Webサーバーを公開する場合はHTTPを追加します。

vm4

この辺はお好みでどうぞ(笑)

vm5

確定後、しばらく待っていると仮想マシンが起動します。

LAMP環境の構築

あとは、SSHクライアントで先ほどのDNS名(xxx.cloudapp.net)とポート番号(デフォルトは22番)にアクセスし、先ほど決めたユーザー名とパスワード(または公開鍵認証)でログインします。

ログイン後、まずはタイムゾーンが違っていたので設定します。

$ sudo dpkg-reconfigure tzdata

Asia → Tokyo を選択。

続いて、システムを更新。

$ sudo apt-get update
$ sudo apt-get upgrade

Apache、MySQL、PHPをインストールしてLAMP環境を構築します。合わせてphpMyAdminも入れておきます。

$ sudo apt-get install apache2 mysql-server phpmyadmin

途中、MySQLのrootのパスワードを聞かれるので入力します。

phpMyAdminの設定では[apache2]を選択、dbconfig-commonでデータベースを自動設定します(先ほど決めたMySQLのrootのパスワードを聞かれるので入力します)。

インストール後、ブラウザーからxxx.cloudapp.netにアクセスして「It works!」というウェルカムページが表示されればOKです。表示されない場合は、仮想マシンのエンドポイントにHTTPが設定されているか確認しましょう。

phpMyAdminには xxx.cloudapp.net/phpmyadmin でアクセスできます。ユーザー名は root で、先ほど設定した root のパスワードでログインできます。
ログイン後、「mcrypt 拡張がありません。PHP の設定をチェックしてみてください。」という警告が出ていましたが、所定の場所にmcrypt.iniが無いことが原因みたいなので、以下のようにシンボリックリンクを作り、Apacheを再起動すると出なくなりました。

$ sudo ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/apache2/conf.d/mcrypt.ini

あと、mod_rewriteが有効になっていなかったので、.htaccessを使うために設定を変更。

$ sudo a2enmod rewrite

/etc/apache2/sites-available/000-default.conf を編集し、DocumentRoot /var/www/html の後ろに、以下を追加。

<Directory "/var/www/html">
    AllowOverride All
</Directory>

Apacheをリスタートさせる。
$ sudo service apache2 restart

WordPressのインストール

Ubuntuのパッケージを使ってインストールすることも出来るけど、以前Debianでハマった記憶があるので、本家からzipをダウンロードしてインストールすることにしました。phpMyAdminでデータベースを作り、ダウンロードしたzipを展開して、ごく普通にWordPressをインストール。

いじったところはプラグインやテーマのダウンロードでFTPの接続情報を聞かれるので、wp-config.phpの最後に以下を追加したくらい。

define('FS_METHOD', 'direct');

独自ドメインの使用

AzureのダッシュボードでDNS名(xxx.cloudapp.net)と、パブリック仮想IP(VIP)アドレスを調べます。

vm22

あとは、ドメインを管理しているレジストラ等でDNSの設定をし、AレコードやCNAMEレコードを登録すればOKです。私は、お名前.comを使っていますが、以下のように設定しました。
VIPアドレスは変わることもあるようなので、出来ればAレコードを使わずに登録したかったのですが、ホスト名が空白の場合のCNAMEレコードが設定が出来なかったので仕方なくこうしています。
参考リンク:Azure のクラウド サービスのカスタム ドメイン名の構成
      【ドメイン】CNAMEレコードとは?- お名前.com ヘルプ/サポート

dns

終わりに

この後、旧WordPressサイトからデータを移し、無事移行が終わりました。これで、ClearDBのリミットを気にしなくて済みます。
参考リンク:WordPressで作成したWebサイトの復元 - ニイハチヨンサン

仮想マシンの立ち上げは、WordPressのインストールイメージからスタートするときと比べ難易度は上がりますが、特に引っ掛かるようなところはありませんでした。多少Linuxをかじったことがある方なら十分対応可能です。ClearDBの制限にお悩みの方はチャレンジしてみると良いかもしれませんね。

あと、やはりLinuxは軽いですね。Windows Server + IISのときよりも、WordPressの反応が早くなりました (^^)/

-WordPress