ドメインをLightsailに紐付ける
お名前.comでドメインを取得済みの場合、DNS設定とネームサーバーの変更が必要です。
お名前.comでAレコードを追加
お名前.com管理画面 →「DNS設定」→「DNSレコード設定」でAレコードを追加します。
- ホスト名:空欄(@)
- TYPE:A
- VALUE:Lightsailの静的IPアドレス
ネームサーバーを変更する
お名前.comの「ネームサーバー設定」で以下に変更します。これをしないとDNSが反映されません。
01.dnsv.jp
02.dnsv.jp
03.dnsv.jp
04.dnsv.jp
DNS反映を確認する
反映には数分〜数時間かかります。以下のサイトで世界各地の反映状況を確認できます。
緑のチェックが増えてきたらブラウザで http://ドメイン名 にアクセスしてみましょう。WordPressのトップが表示されれば成功です。
WordPressのURLをドメインに更新する
DNSが反映されたら、WordPressに設定されているURLをドメインに変更します。LightsailのSSHで以下を実行してください。
sudo wp --path=/var/www/html option update siteurl 'http://ドメイン名' --allow-root
sudo wp --path=/var/www/html option update home 'http://ドメイン名' --allow-root
Success: Updated 'siteurl' option. と表示されれば完了です。
SSL化(HTTPS)する
Let’s EncryptとCertbotを使って無料でSSL化できます。
ハマりポイント:bncert-toolが使えない
Lightsailの古い記事では以下のコマンドが紹介されていますが、このインスタンス構成では使えませんでした。
# これは動かなかった
sudo /opt/bitnami/bncert-tool
代わりにcertbotを使います。
certbotをインストール
sudo apt update && sudo apt install -y certbot python3-certbot-apache
Apacheの設定ファイルにServerNameを追加
certbotがドメインを認識できるよう、Apacheの設定ファイルを編集します。
sudo bash -c 'cat > /etc/apache2/sites-available/000-default.conf << '"'"'EOF'"'"'
ServerName ドメイン名
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
EOF'
設定を確認してApacheを再起動します。
sudo apache2ctl configtest && sudo systemctl restart apache2
Syntax OK と表示されれば問題ありません。
SSL証明書を取得・インストール
sudo certbot --apache -d ドメイン名
メールアドレスの入力と利用規約への同意を求められます。完了すると証明書が自動でインストールされます。
もし証明書のインストールに失敗した場合は以下で再試行できます。
sudo certbot install --cert-name ドメイン名
ブラウザで https://ドメイン名 にアクセスして鍵マークが表示されれば完了です。証明書は90日ごとに自動更新されます。
メモリ不足でサイトが落ちる問題を解決する
作業後少ししたらアクセスできなくなっていました….
Lightsailの$5プランはRAMが512MBしかありません。SWELLなど重めのテーマをインストールすると、メモリ不足でApacheが落ちてサイトにアクセスできなくなることがあります。
スワップメモリを追加することで仮想的にメモリを増やし、安定させることができます。
スワップメモリを追加する
SSHで以下を順番に実行してください。
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
最後のfstabへの追記で、再起動後もスワップが有効になります。
確認する
free -h
以下のようにSwapの行に1.0Giと表示されれば成功です。
total used free shared buff/cache available
Mem: 447Mi 280Mi 8.9Mi 42Mi 212Mi 167Mi
Swap: 1.0Gi 0B 1.0Gi
これで重めのテーマを使っていても安定して動作するようになります。
【補足】画像やリンクがIPアドレスで表示される場合
httpsに変更したはずなのに画像がたまに表示されないことがある…という人向けの補足です。
WordPressの内部設定がまだhttpのままになっていることが原因です。
SSL設定が完了してもサイトを開くと画像が表示されなかったり、ソースを見るとURLがIPアドレスになっていることがあります。
これはLightsailのWordPressに最初から入っている wp-config.php の設定が原因です。
php
define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/' );
アクセス時のホスト名をそのまま使う設定になっているため、httpやIPアドレスでアクセスされると混在が起きてしまいます。
修正手順
LightsailのブラウザSSHで接続して以下を実行します(あなたのドメイン は自分のドメインに置き換えてください)。
bash
sudo python3 -c "
content = open('/var/www/wp-config.php').read()
content = content.replace(\"define( 'WP_HOME', 'http://' . \$_SERVER['HTTP_HOST'] . '/' );\", \"define( 'WP_HOME', 'https://あなたのドメイン' );\")
content = content.replace(\"define( 'WP_SITEURL', 'http://' . \$_SERVER['HTTP_HOST'] . '/' );\", \"define( 'WP_SITEURL', 'https://あなたのドメイン' );\")
open('/var/www/wp-config.php', 'w').write(content)
print('done')
"
done と表示されれば成功です。念のため確認しましょう。
bash
grep -n "WP_HOME\|WP_SITEURL" /var/www/wp-config.php
以下のように https://あなたのドメイン になっていればOKです。
define( 'WP_HOME', 'https://あなたのドメイン' );
define( 'WP_SITEURL', 'https://あなたのドメイン' );
これで画像やリンクが正しく https://あなたのドメイン で出力されるようになります。

