カテゴリー
AWS

Azure App ServiceとAzure Database for MySQLでWordPressを立ち上げる

Azure Database for MySQLを作成する

インスタンスの作成は、https://docs.microsoft.com/ja-jp/azure/mysql/quickstart-create-mysql-server-database-using-azure-portal に記載されているとおり。

DBが起動後、Wordpress用にDBユーザを分ける場合は以下のようにして分けておく。

CREATE USER wordpress IDENTIFIED BY ‘password’;
CREATE DATABASE wordpressdb;
GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpress;
FLUSH PRIVILEGES;

Azure App ServiceでPHP 7.3を起動する

サービスの作成とランタイムの選択はウィザードに従うとできると思うので割愛。

作成後、https://wordpress.org/download/ からZIPファイルをダウンロードして、FTPS経由でwwwroot配下にファイルをアップロードする。

Azure Database for MySQLに接続するための設定

Azure Database for MySQLはデフォルトでSSLがオンになっているため、wp-config.phpに以下の設定をしておく。

define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL);

Azure Front Door配下に入れるための設定

また、Azure Front DoorなどのCDNやリバースプロキシ配下にするとWordpressの実ホスト名と異なることから、特にSSLをオンにするとリダイレクトループが発生してしまうので、リバプロが付与するX-Forwarded-Forヘッダを読み取るようにwp-config.phpに以下のコードも入れておく。

$_SERVER[‘HTTP_HOST’] = $_SERVER[‘HTTP_X_FORWARDED_HOST’];
$_SERVER[‘REMOTE_ADDR’] = $_SERVER[‘HTTP_X_FORWARDED_FOR’];

define(‘FORCE_SSL_ADMIN’, true);

if (isset($_SERVER[‘HTTP_X_FORWARDED_PROTO’])
&& $_SERVER[‘HTTP_X_FORWARDED_PROTO’] === “https”) {
$_SERVER[‘HTTPS’] = ‘on’;
}