レンタルサーバで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を運用していけそうな雰囲気が出てきました。