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_DIR を WP_LOCAL_CONTENT_DIR に置き換えます。
wp-config.php に WP_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
新しくインストールしたプラグインが管理画面に表示されます。

