インスタンスのセットアップ
まずインスタンス管理ページで静的IPを作成しておく。
SSH接続したら次のコマンドでBitnamiアプリケーションのデフォルトパスワードを取得する。
このパスワードはWordPressダッシュボードのログインや、phpMyAdminのログインなどにも使用するので、メモしておく。
cat $HOME/bitnami_application_password
次のコマンドを実行すると、ブラウザからWordPressに静的IPでアクセスできるようにサイトURLを書き換えてくれる。
sudo /opt/bitnami/configure_app_domain --domain <静的IP>
マルチサイトの引越し
WordPress MultisiteインスタンスにはAll-in-One WP Migrationがプリインストールされているが、マルチサイト対応は有償らしいので、プラグインを使わずに手動で移動した。
(実を言うとgitでテーマファイルを入れようとしたら、色々やらかしてwp-content全部消えてしまったので、そうするしかなくなってしまった。)
データベースの移動
さくらのレンタルサーバでphpMyAdminを使って移行するデータベースをエクスポートする。
SQLファイルをVS Code等で開き、一括置換でドメインを静的IPに変更。必要に応じてテーブル接頭辞も変更しておく。
LightsailでphpMyAdminを使えるようにするのにも一手間必要だ。/opt/bitnami/apache/conf/bitnami/phpmyadmin.conf
を開き、コメントアウトされている部分を編集。
AuthType Basic
AuthName phpMyAdmin
AuthUserFile "/opt/bitnami/apache/users/.htpasswd"
Require valid-user
/opt/bitnami/apache/users
ディレクトリを作り、.htpasswdファイル生成ツール等を使って.htpasswd
ファイルを作る。
Apacheを再起動して適用。
sudo /opt/bitnami/ctlscript.sh restart apache
ブラウザからhttp://<静的IP>/phpmyadmin
にアクセス。
Basic認証を終えるとphpMyAdminのログイン画面が出てくる。
ユーザ名はroot
。パスワードはBitnamiアプリケーションのデフォルトパスワードだ。
ログインしたら既存のWordPressのテーブルを削除し、準備したSQLファイルをインポートしたら完了。
wp-contentの移動
さくらのレンタルサーバからFTP等でwp-contentディレクトリをダウンロードし、SFTP等でLightsailの/opt/bitnami/wordpress/wp-content
にアップする。
これで無事完了かと思いきや、ブラウザでアクセスするとサイトが真っ白になっている。
どうやらBitnamiでは決められたパーミッションに設定する必要があるようだ。
ディレクトリのオーナーはbitnami
。グループはdaemon
に設定する。
sudo chown -R bitnami:daemon /opt/bitnami/wordpress/
パーミッションは全てのディレクトリを775
。全てのファイルを664
。ただしwp-config.php
のみ640
にする。
sudo find /opt/bitnami/wordpress/ -type d -exec chmod 775 {} \;
sudo find /opt/bitnami/wordpress/ -type f -exec chmod 664 {} \;
sudo chmod 640 /opt/bitnami/wordpress/wp-config.php
サブディレクトリ型マルチサイトの場合
自分の場合はさくらのレンタルサーバでサブディレクトリ型のサイトネットワークを使っていた。
LightsailのWordPress Multisiteインスタンスではサブドメイン型で設定されているため、このままだと2つ目以降のサイトにアクセスできない。
wp-config.php
は、以下を編集。
define( 'SUBDOMAIN_INSTALL', false );
.htaccess
については、/opt/bitnami/apache2/conf/vhosts
にあるwordpress-vhost.conf
とwordpress-https-vhost.conf
を編集。
# BEGIN WordPress Multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
この後何かエラーが出た記憶があるのだが、インスタンスの再起動や先ほどのパーミッション設定などいじっているうちに直った。
(役立つ情報が提供できず申し訳ない)
ドメインの設定(Cloudflare)
今回ドメインの取得やDNSゾーン作成などは、Amazon Route 53ではなくCloudflareを使用している。
まずCloudflareのダッシュボードで、DNSレコードのAレコードをインスタンスのIPv4アドレスに、AAAAレコードをインスタンスのIPv6アドレスに書き換える。
Cloudflare WAFのIPアクセスルールツールを使用して、インスタンスのIPアドレスをこのWebサイトで許可しておく。
次のコマンドを実行し、今度はWordPressサイトURLをドメインに切り替える。
sudo /opt/bitnami/configure_app_domain --domain <ドメイン>
SSL(Cloudflare)
ブラウザ⇔Cloudflare間の暗号化はできているので、Cloudflare⇔Lightsail間も暗号化してしまおう。
最初に関連サービスを停止しておく。
sudo /opt/bitnami/ctlscript.sh stop
古い証明書は必要に応じて名前を変えて保管しておく。
sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
Cloudflareダッシュボードでオリジン証明書をRSAで作成する。
PEM形式のオリジン証明書を/opt/bitnami/apache2/conf/bitnami/certs/server.crt
に、プライベートキーを/opt/bitnami/apache2/conf/bitnami/certs/server.key
に保存する。
次のコマンドで停止したサービスを起動する。
sudo /opt/bitnami/ctlscript.sh start
WordPressのサイトURLの書き換えは普段だったらサイトヘルス等からできるのだが、今回はマルチサイトなのでできない。
phpMyAdminからデータベースを編集して対応できる。
URLの修正を行なったのは次の箇所。
<テーブル接頭辞>_<ブログID>_options | siteurl |
<テーブル接頭辞>_<ブログID>_options | home |
<テーブル接頭辞>_sitemeta | siteurl |
HTTPSへのリダイレクトが必要な場合は、vhost.conf
を編集するなり、Cloudflareの「常に HTTPS を使用」機能を使用するなりすればいい。
その他にやったこと
- iptablesでファイアウォール
- fail2banインストール
- memcachedのセットアップ
- インスタンス内に別ドメインでもう一つのサイト(HTML)を追加
参考
- クイックスタートガイド: Amazon Lightsail の WordPress Multisite | Lightsail ドキュメント
- チュートリアル: Amazon Lightsail の WordPress インスタンスで Let’s Encrypt の SSL 証明書を使用する | Lightsail ドキュメント
- WordPressマルチサイトのサーバー引っ越しマニュアル | 明日のための記録
- 初心者|AWSのLightsailのWordPressのphpMyAdminへアクセスする方法 – Qiita
- htaccess – サポートフォーラム – WordPress.org 日本語
コメント