Amazon LightsailでWordPressをやってみる

5月 14, 2021

レンタルサーバでWordPressを使っていたのですが、もう少し安くできないかと調べていました。

調べていると、Amazon Lightsailがよさそうだと思い始めたのでやってみようと思いました。

Amazon Lightsailとは

仮想プライベートサーバーだけを必要とする場合、Amazon Lightsail は AWS の使用を開始する最も簡単な方法です。
Lightsail には、プロジェクトをすばやく開始するためのすべてが揃っています。仮想マシン、SSD ベースのストレージ、データ転送、DNS 管理、静的 IP アドレスなどが予測可能な低価格で提供されます。インスタンスを作成した後、簡単にインスタンスに接続できます。インスタンスの管理には、Lightsail コンソール、Lightsail API、または Lightsail コマンドラインインターフェイス (CLI) を使用できます。

インスタンスを作成する

ここからAWSにログインして、インスタンスを作成します。
https://aws.amazon.com/jp/lightsail/

画面からボタン押していくと簡単に作成できました。

ドメインを設定する

インスタンスにアタッチしたデフォルトの動的なパブリック IP アドレスは、インスタンスを停止して開始するたびに変わります。パブリック IP アドレスが変わらないようにするには、静的 IP アドレスを作成してインスタンスにアタッチします。その後にドメイン名をインスタンスで使用すると、インスタンスを停止して開始するたびにドメインの DNS レコードを更新する必要がなくなります。

パブリックIPは再起動のたびにIPアドレスが変わってしまうので、やはりドメインで接続できたほうが楽です。
なので、ドメインで接続できるように設定していきます。

Lightsail インスタンス->Networking メニュー->静的IPの作成をクリック

インスタンスへのアタッチで先ほど作成したインスタンスを指定します。

これで、静的IPの取得ができました。

静的IPをもとにRoute53でドメインの設定をします。

WordPressの設定をする

インスタンスにSSH接続する

コマンドプロンプトで以下のコマンドを実行します。

ssh -i [秘密鍵のファイル名] bitnami@[パブリックIP]

WordPress インスタンスのデフォルトのアプリケーションパスワードを取得する

SSH接続したところで、以下のコマンドを実行します。

cat bitnami_application_password

WordPress ウェブサイトにサインインする

設定したドメインをもとに、Webサイトにアクセスします。
wordpressのテストページが表示されるので、右下のManageをクリックします。

ユーザ名をuserを入力、パスワードを先ほど取得したパスワードを入力してログインします。

これで、wordpressがいじれるようになりました。

bitnamiのバナーを非表示にする

bitnamiイメージから作成されたWordpressにはデフォルトでbitnamiバナーが表示されます。
なので、以下のコマンドで表示されないようにします。

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
sudo /opt/bitnami/ctlscript.sh restart apache

SSL設定

webサイトの必須ともいえる、SSLの設定をしていきます。

gitコマンドをインストールする

以下のコマンドでインストールします

sudo apt-get update
sudo apt-get install git

gitからletsencryptをcloneして設定する

cd /tmp
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto
./letsencrypt-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs/ -d worker1188.com
sudo cp /etc/letsencrypt/live/worker1188.com/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo cp /etc/letsencrypt/live/worker1188.com/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo /opt/bitnami/ctlscript.sh restart apache

SSLリダイレクト設定を追加する

ApacheとWordpressのconfigにそれぞれリダイレクトのための設定を追加します。

/opt/bitnami/apps/wordpress/conf/httpd-prefix.confをviで開いて、以下の変更をします。

- RewriteCond "%{HTTP_HOST}" ^ec2-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,3})\..*\.amazonaws.com(:[0-9]*)?$
- RewriteRule "^/?(.*)" "%{REQUEST_SCHEME}://%1.%2.%3.%4%5/$1" [L,R=302,NE]
+ RewriteCond %{HTTPS} !=on
+ RewriteRule ^/(.*) https://example.com/$1 [R,L]

/opt/bitnami/apps/wordpress/htdocs/wp-config.phpをviで開いて、以下を追加します。

define('WP_SITEURL', 'https://example.com/');
define('WP_HOME', 'https://example.com/');

/opt/bitnami/apache2/conf/bitnami/bitnami.confをviで開いて、<VirtualHost _default_:80>タグ内に以下を追加します。

  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^[ドメイン名]\. [NC]
  RewriteRule ^(.*)$ https://[ドメイン名].com%{REQUEST_URI} [R=permanent,L]

設定の変更が完了したら、apacheを再起動します。

sudo /opt/bitnami/ctlscript.sh restart apache

再起動が完了したら、httpでアクセスしてhttpsになっていることを確認してみましょう。

証明書更新のシェルを準備してCron実行を仕掛ける

letsencryptを使った証明書更新のためのシェルを書いて、Cron実行の設定を追加します。

sudo vi /etc/letsencrypt/renew-certificate.sh

#!/bin/bash
sudo /opt/bitnami/ctlscript.sh stop apache
sudo /usr/local/certbot/certbot-auto --email="user@example.com" --domains="www.example.com" renew
sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo cp /etc/letsencrypt/live/example.com/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo /opt/bitnami/ctlscript.sh start apache
# crontab -e (root実行、取扱注意)

0 0 1 * * /etc/letsencrypt/renew-certificate.sh 2> /dev/null

これで、ひとまずWordPressを運用していけそうな雰囲気が出てきました。

IT

Posted by papa