AWSでbitnamiのwordpress イメージを使って構築するプラン
マルチサイトには2種類ある
Wordpressのマルチサイトにはサブドメイン方式と、サブディレクトリ方式の2つがある。
日本語サイトと英語サイトをひとつのwordpressで管理するようにした場合に以下のような違いになる。
サブドメイン方式では
Webサイトへのアクセスが
https://example.com と https://eng.example.com のようになるのに対して
サブディレクトリ方式だと
https://example.com と https://example.com/eng のような感じになる。
メリット、デメリットについてはよくわからないが、最近ではサブドメイン方式でもサブディレクトリ方式でもSEO的にはあまり変わらないようで、どちらかというと、体面的なことで、企業や商品のランディングページで日本語版と英語版を設置するならサブディレクトリ、ひとつの企業の中の事業単位でサイトを建てるならサブドメイン方式とかなのかなぁと思うくらい...
AMIの選択
インスタンスを作成するときにAWSマーケットプレイスで wordpress bitnami で検索すると、現時点(2022/11) で4つほど該当するAMIが表示される。
マルチサイトのwordpressを建てたいときはMultisite用のものを最初から使う。
シングルサイトのものを使って建てたWordpressを後からマルチサイトに変更してみたのだが、私にはうまく構築することができなかった。
★3つというのは、ちょっとうなづけるところがある。
というのは、普通のシングルサイト用のbitnamiのWordpressは本当に簡単で起動までほぼ何もすることが無いのだが、マルチサイトの場合起動までにひと手間かかるのと、マルチサイトのwordpressの管理の方法が直感的には把握しづらいところがあるからではないかと思う。まあ、そこはbitnamiが悪いわけではないのだが...
Bitnami Multisite のAMIを使ってもそのままではマルチサイトにならない
以下のURLにbitnamiのマルチサイトでの設定方法が書かれている。
https://docs.bitnami.com/installer/apps/wordpress-multisite/administration/use-directories/
アプローチ方法にAとBがあるのだが、どちらを選ぶかはAWSのAMI埜ようなシステパッケージを使用している場合はA、そうでない場合はBということになるようだ。
テスト方法としては 下記のコマンドでわかるようだ
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
実際に実行してみると以下の様な感じになる。この場合は、アプローチAの方法で行けということ。
bitnami$ test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
Approach A: Using system packages.
後からこれを読んだときにはBitnamiやWordpressのアップデートが行われている可能性があるので、実際の対応方法はURLから確認するべきだが、今回の対応とてしては、以下のファイルの変更と、apacheの再起動だった。
installdir/wordpress/wp-config.php
から下記の部分を変更
define( 'SUBDOMAIN_INSTALL', true ); ⇒ define('SUBDOMAIN_INSTALL', false);
installdir は、 bitnami インストールフォルダでAWSのAMIの場合は、 /opt/bitnami
だった。
installdir/apache2/conf/vhosts/wordpress-vhost.conf
のファイルの下記の部分を
# BEGIN WordPress Multisite
# Using subdomain network type: https://wordpress.org/support/article/htaccess/#multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
下記の内容で置換
# BEGIN WordPress Multisite
# Using subfolder network type: https://wordpress.org/support/article/htaccess/#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
installdir/apache2/conf/vhosts/wordpress-https-vhost.conf についても上記と同様の変更を行う。
最後にapacheの再起動
sudo installdir/ctlscript.sh restart apache
これであっさりとマルチサイトのWordpressになった。