Sina App Engine(SAE)に WordPress をデプロイする

SAE 標準環境で WordPress ブログを構築する

WordPress は現在もっとも人気のある個人ブログプラットフォームの一つで、PHP で開発されており、軽量でシンプル、機能も充実しています。新浪雲では、WordPress を利用して自分の個人ブログをすばやく構築できます。

以下の手順はすべて Ubuntu オペレーティングシステム上で行います。使用するツールは Git、Firefox/Chrome、tar です。これらのツールは macOS や Windows 公式の Ubuntu サブシステムのソフトウェアリポジトリにもあります。Windows でも対応する代替ツールがあります。

SAE アプリケーションを作成する

新浪雲(sae.sina.com.cn) のトップページにあるアプリケーション管理で、新規アプリケーションの作成を選択します。

開発言語は PHP を選択します。

実行環境は標準環境を選択します。

言語バージョンとコード管理では、PHP 5.6 を使用し、Git でコードを管理するように選択します。

新しく作成したアプリケーションページに入り、サイドバーの概要をクリックすると、アプリケーションの詳細情報を確認できます。

クラウドアプリケーションは独自ドメインがなくても、先ほど登録したサブドメインで直接アクセスできます。たとえば、この時点でブラウザに新しく登録したアプリケーションドメイン http://myblogger.applinzi.com を入力できます。

もちろん、この時点のクラウドアプリケーションはまだ空です。

コードをデプロイする

公式サイトから WordPress の最新版をダウンロードします。URL は https://wordpress.org/latest.tar.gz です。当時のバージョンは 4.9.8 でした。実際に作業するときは、公式サイトが提供している最新の安定版をダウンロードし、ローカルのファイル名に合わせてください。

WordPress を作業ディレクトリに展開します。

$ tar xf wordpress-4.9.8.tar.gz

ローカル Git リポジトリを作成します。

$ cd wordpress
$ git init
Initialized empty Git repository in /home/guanqiao/Workspace/wordpress/.git/
$ git add .
$ git commit -s -m "Init my wordpress"

ローカルコードを SAE のリモート Git リポジトリに関連付けます。

$ git remote add origin https://git.sinacloud.com/myblogger

SAE の Git リポジトリ情報は、アプリケーションのコード管理ページで確認できます。

最後に、ローカルコードを SAE Git サーバーのバージョン 1 にプッシュします。

$ git push origin master:1
Username for 'https://git.sinacloud.com':
Password for 'guanqiao':
Counting objects: 1636, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (1611/1611), done.
Writing objects: 100% (1636/1636), 8.54 MiB | 550.00 KiB/s, done.
Total 1636 (delta 166), reused 0 (delta 0)
To https://git.sinacloud.com/myblogger
 * [new branch]      master -> 1

ここでのパスワードはログインパスワードではなく、セキュリティパスワードである点に注意してください。

ブラウザで自分のアプリケーションアドレスにアクセスすると、WordPress が正常にアップロードされたことを確認できるはずです。

コードデプロイに関する詳細は、SAE のコードデプロイマニュアルを参照してください。

データベースを作成する

この時点では WordPress にまだ正常にアクセスできず、ページにはバックエンドにデータベースがないというメッセージが表示されます。

SAE アプリケーションページでデータベースとキャッシュサービスをクリックし、共有型 MySQL を選択します。ページが空であれば、このアプリケーションにはまだデータベースがありません。

MySQL の作成をクリックします。

共有 MySQL データベースなので、データベース名は自動生成されます。

データベース操作内の詳細リンクをクリックすると、データベースの詳細情報を確認できます。

WordPress のプロジェクトディレクトリに戻り、公式の wp-config-sample.php をもとに wp-config.php を作成します。

$ cp wp-config-sample.php wp-config.php

wp-config.php の内容を編集し、先ほど SAE が生成したデータベース情報を入力します。

コードを再度コミットしてデプロイします。

$ git add wp-config.php
$ git commit -s -m "Add wp-config.php"
$ git push origin master:1
Username for 'https://git.sinacloud.com':
Password for 'guanqiao':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 1.51 KiB | 1.51 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://git.sinacloud.com/myblogger
   852f9e5..8122bfc  master -> 1

この時点でブラウザから自分のアプリケーションアドレスにアクセスすると、WordPress の初期化ページが表示されます。

ページで入力するのは、ブログタイトルと管理画面の管理者ユーザー名、パスワードです。公式のデフォルト設定を使用している場合、ブログの管理画面アドレスは通常 https://{アプリケーションのサブドメイン}/wp-admin です。

ここでは例として http://myblogger.applinzi.com/wp-admin になります。

ページを送信したあと、ブラウザで再び自分のアプリケーションアドレスを入力すると、個人ブログのトップページが表示されます。

SAE Storage を使用する

新しいブログの管理画面では記事を書いて公開できますが、この時点ではおそらく問題があります。画像をアップロードしようとすると、常にアップロード失敗と表示されます。

WordPress の画像アップロード先ディレクトリは、デフォルトではコードディレクトリ配下です。実行環境として標準環境を選択している場合、アプリケーションは自分自身のコードディレクトリを直接変更できません。これは SAE 標準環境の分散アーキテクチャの特徴です。

このため、SAE は Storage を提供しています。

SAE の Storage は分散ファイルストレージサービスで、永続化が必要なファイルを保存するためのものです。テキスト、マルチメディア、バイナリなど、あらゆる種類のデータに対応しています。WordPress の各種リソースは Storage に置くことができます。

アプリケーションページに入り、ストレージサービス内の Storage を選択し、新規 Bucket をクリックします。Bucket 名はユーザーが指定します。

Storage の Bucket には 10G の容量が提供されていることがわかります。

当時、Storage は FTP ログインに対応しており、FTP サーバーの接続情報は次のとおりでした。

アドレス:ftp.sinas3.com
ポート:10021
ユーザー名:アプリケーションの AccessKey
パスワード:アプリケーションの SecretKey

このユーザー名とパスワードは、アプリケーションの概要ページにあります。

FTP クライアント FileZilla を使って、WordPress プロジェクトディレクトリ内の wp-content をアプリケーションの Storage にアップロードします。ここでは Bucket のディレクトリ名に注意し、Storage のルートディレクトリにファイルを送らないようにしてください。

次に wp-config.php ファイルを編集し、define('WP_DEBUG', false); の後ろに Storage の定義を追加します。

このうち WP_CONTENT_DIR の形式は次のとおりです。

define('WP_CONTENT_DIR', 'saestor://{bucket名}/wp-content');

WP_CONTENT_URL の形式は次のとおりです。

define('WP_CONTENT_URL', 'http://{アプリケーション名}-{bucket名}.stor.sinaapp.com/wp-content');

続いて wp-includes/functions.php ファイルも編集します。関数 wp_mkdir_p の冒頭に、Storage アドレスかどうかの判定を追加します。

if ( substr($target, 0, 10) == 'saestor://' ) {
    return true;
}

図のとおりです。

編集が完了したらコードをコミットします。

$ git add wp-config.php
$ git add wp-content
$ git add wp-includes/functions.php
$ git commit -s -m "Move wp-content to sae storage"
$ git push origin master:1
Username for 'https://git.sinacloud.com':
Password for 'guanqiao':
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 639 bytes | 639.00 KiB/s, done.
Total 5 (delta 4), reused 0 (delta 0)
To https://git.sinacloud.com/myblogger
   6588858..b74cedc  master -> 1

ブログの管理画面に戻ると、画像アップロードが正常にできるようになっています。

Storage の操作に関する詳細は、SAE Storage ヘルプを参照してください。

テーマを変更する

WordPress では画面テーマを変更できます。公式に同梱されている 3 つのテーマのほか、ユーザーは WordPress 公式テーマディレクトリやサードパーティサイトからテーマをダウンロードできます。

画像アップロードで発生した問題と同じく、WordPress のテーマもコードディレクトリ内に置かれるため、SAE 上では直接テーマを変更できません。

先ほどアップロードパスを変更した際に wp-content ディレクトリを SAE Storage に移動したため、テーマを変更するには、テーマディレクトリを別途設定する必要があります。

wp-includes/theme.php ファイルを編集し、その中のすべての WP_CONTENT_DIRWP_LOCAL_CONTENT_DIR に置き換えます。

wp-config.phpWP_LOCAL_CONTENT_DIR の定義を追加します。

define('WP_LOCAL_CONTENT_DIR', dirname(__FILE__) . '/wp-content');

図のとおりです。

あとは公式サイトから対象テーマの ZIP パッケージをダウンロードし、プロジェクトの wp-content/themes ディレクトリに展開して、再度コードをデプロイするだけです。

$ git add wp-content/themes/minimal-2017
$ git commit -s -m "Add a new theme named minimal-2017"
$ git push origin master:1
Username for 'https://git.sinacloud.com':
Password for 'guanqiao':
Counting objects: 30, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (30/30), 706.77 KiB | 19.63 MiB/s, done.
Total 30 (delta 4), reused 0 (delta 0)
To https://git.sinacloud.com/myblogger
   5379c5c..9f2d5a2  HEAD -> 1

管理画面のテーマディレクトリで新しいテーマを確認できるようになります。

プラグインをインストールする

プラグインのインストール方法はテーマと似ています。wp-config.php でプラグインディレクトリを再指定します。

define('WP_PLUGIN_DIR', dirname(__FILE__) . '/wp-content/plugins');

図のとおりです。

WordPress 公式プラグインディレクトリからプラグインの ZIP パッケージをダウンロードし、展開してプロジェクト内の wp-content/plugins ディレクトリに配置してから、再度コードをデプロイします。

$ git add wp-content/plugins/easy-social-icons/
$ git commit -s -m "Add a new plugin named easy-social-icons"
$ git push origin master:1
Username for 'https://git.sinacloud.com':
Password for 'guanqiao':
Counting objects: 54, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (52/52), done.
Writing objects: 100% (54/54), 1.26 MiB | 1.15 MiB/s, done.
Total 54 (delta 1), reused 0 (delta 0)
To https://git.sinacloud.com/myblogger
   72b353c..01782d7  master -> 1

新しくインストールしたプラグインが管理画面に表示されます。

Leave a Reply