LoginSignup
24
20

More than 1 year has passed since last update.

AWSの無料トライアル期間が終わって毎月高額請求されていたサービスをLightsailに移行して1/10にした

Last updated at Posted at 2020-03-07

乗り換えのきっかけ

1年強前に勉強を兼ねてAWSの無料トライアル期間を利用してWordspressを使ったサービスを公開していました。

そうえば、そろそろ無料期間終わってるんじゃない?」と思い、請求画面を開くと、案の定、複数月に跨いで多額の請求が...

コロナで自宅待機だし、今やるしかない!と思い行動に移りました。

スクリーンショット 2020-03-08 1.08.01.png

アーキテクチャとしては、よくある一般的なインフラ構成で、EC2(t2.micro)とRDS(MySQL)を使い、それをALBで流すような構築をしていました。

こんな感じです(AWSの公式サイトから引用しました)
image.png

ちなみに請求内訳はこんな感じで、ALBとRDSがほぼ占めていました。(放置してただけなのに高っ)
スクリーンショット 2020-03-08 1.12.57.png

RDS使わずにEC2の中にMySQL入れれば安くなるんじゃないかと思いつつ、せっかくならもっと安く運用したい...そう思ってググっていると Amazon Lightsail というものが良いらしいという情報が。

せっかくなのでこれを使ってみよう!と思い、記事を書きました。

Amazon Lightsail とは

公式:https://aws.amazon.com/jp/lightsail/

月額 3.50 USD からのプラン 使いやすいクラウドプラットフォーム Lightsail は、アプリケーションやウェブサイトの構築に必要なすべてのものに加えて、コスト効率が良い月額プランを提供します。クラウドに慣れていないお客様でも、信頼している AWS インフラストラクチャを使用してすぐにクラウドにアクセスしようとしている場合も、対応できます。

つまり、簡潔で安いEC2のようなものらしいです。

詳細については、AWS中の人が作ったSlideShareにまとまっています。
スクリーンショット 2020-03-08 6.37.49.png

EC2との主な違い

転送量が無料

LightSailでは各料金プランに応じて一定量までの転送量が無料で、最安3.5$/月の512MBプランで転送量1TB/月まで無料という驚きの価格!

インスタンスを停止時でも課金発生

EC2はインスタンスを止めれば課金されませんでしたが、LightSailでは課金されるそうです。

DNS管理機能が標準であり、Route53を使わなくていい

管理画面から簡単に設定できるそうです

EC2から高速で移行していく

さっそくシステムを移行していきます。

Lightsailのインスタンス作成〜WordPressログインまで

基本的に 参考記事 の手順通りです。

画面がかわいいです。
スクリーンショット 2020-03-08 6.51.14.png

WordpressのExportとImport

なんと便利な既存機能がありました。プラグイン等丸ごと移行する場合は、all-in-one-wp-migration等を利用するとできるそうです。(後から気づきました)

image.png

ドメインの設定切り替え

自分はRoute53でDNS管理していたため、Lightsailで作成したElasticIPをAレコードに設定します。
スクリーンショット 2020-03-08 6.44.49.png

ネームサーバー(NS)レコードの書き換えも忘れずに行います。

続いて、参考記事に倣って wp-config.php を修正していきます。(略)

常時SSL対応

以前はALBを使い対応していましたが、今回は Letsencrypt を利用します。
こちらの記事を参考にさせて頂きました。

$ cd /tmp
$ git clone https://github.com/letsencrypt/letsencrypt

$ cd letsencrypt
$ ./letsencrypt-auto
$ ./letsencrypt-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs/ -d [ドメイン名]
# 管理者のメールアドレスを聞かれるので答える
# 何回か質問されるが基本OKで大丈夫

$ sudo cp /etc/letsencrypt/live/[ドメイン名]/fullchain.pem /opt/bitnami/apache2/conf/server.crt
$ sudo cp /etc/letsencrypt/live/[ドメイン名]/privkey.pem /opt/bitnami/apache2/conf/server.key

$ sudo /opt/bitnami/ctlscript.sh restart apache

httpsにリダイレクトさせる設定を、ApacheとWordpressのconfigにそれぞれ書く。

# opt/bitnami/apps/wordpress/conf/httpd-prefix.conf

- 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://[ドメイン名]/$1 [R,L]
# /opt/bitnami/apps/wordpress/htdocs/wp-config.php

define('WP_SITEURL', 'https:/[ドメイン名]/');
define('WP_HOME', 'https://[ドメイン名]/');

証明書の更新をCronで自動化する

Let's Encrypt の証明書は有効期限が3ヶ月なので、これを更新させる必要があります。

この時点で既に /etc/letsencrypt/renew-certificate.sh のシェルがあるはずなので、これを定期実行させます。
今回は mycron.log に吐かせて実行ログを確認できるようにしておきます。

$ crontab -e

# 以下を追記(毎月1日の0時00分にshellを実行)
0 0 1 * * /etc/letsencrypt/renew-certificate.sh > /var/log/mycron.log 2>&1

status確認

$ /etc/init.d/cron status

crontabを確認

$ crontab -u bitnami -l

メール機能の有効化

LightsailではデフォルトでEメールが有効化されておらず、一手間かける必要があります。

Gmailを利用する場合

こちらの記事を参考にするとできると思います。
APIの認証方法が、GCP-APIの許可と、GmailAPIの許可の両方が必要 なので注意です。(結構わかりづらい..)
image.png

上手くいくと、鳩さんからメールが届きます。
スクリーンショット 2020-03-08 7.19.03.png

AWS SESを利用する場合

公式リファレンスのこちらの記事通りにやればできます。
手順通り、DNSゾーンの編集で、発行した「MX record」「TXT record」「CNAME record」をそれぞれ追加していきます。
image.png

ちなみにSESを利用する場合、WP Mail SMTP に課金する必要がある ので注意です。

総仕上げ

最後に、問題なく移行し終わったか確認していきます。
自分の場合、削除済の移行前ドメインを参照しているパスが残っており、一部のレスポンスが異常に遅かった なんてことがありました。

最初が高すぎるのもありますが、これでコストを1/10以上抑えられたはず..!

参考

AWS LightsailでWordPressを構築しSSL化する方法
Lightsailで常時SSLのWordPress
WordPress on Amazon LightsailでGmailを送受信する
Amazon Lightsail の WordPress で E メール を有効にする

24
20
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
20