Lightsailで月500円でWordPressを始める方法

Lightsailで月500円でWordPressを始める方法

エンジニアであれば触ったことも多いAWSの中でも、安価で低額なLightsailでWordpressを利用する方法を書いていきます。

ちなみに当サイトもこの構成でできています。

WordPressは有名なCMSなので割愛しますが、Lightsailについて少し説明します。

AWSの公式HPでは以下のように紹介されています。

「オールインワンクラウドプラットフォームとして設計された Lightsail は、すべてのクラウドニーズに対応するワンストップショップを提供します。」

つまり、EC2のようなコンピューティングの機能だけではなく、様々な機能をまとめたプラットフォームです。まあここまで聞くとそんなになんでもできるものはありえない、と思われると思いますが、その通りで、オールインワンなので自由度は低いと思います。

以下がLightsailを作成するときの選択肢です。

プロジェクト管理ツールのRedmineもありますね。

まあWrodpressで社内のPortalサイトをWordpressで立てたりする場合には選択肢になると思います。そして値段も安いので個人のBlogにも使えると思います。

それでは実際に構築するまでの手順を紹介します。

LightsailでWordpressを立ち上げる

  1. AWSのアカウントを作成する
  2. AWS Consoleにログイン
  3. ServiceからLightSailをクリック
  4. 「インスタンスの作成」をクリック
  5. すでに選択されている「Linux WordPress 2 GB RAM、1 vCPU、60 GB SSD」で一番下の「インスタンスの作成」をクリック
  6. 2,3分するとインスタンスのStatusが「実行中」になります
  7. パブリックIPにアクセスするとWordpressが動いていることを確認できます

ここまででLightsailでWordpressを立ち上げることに成功しました。

AWSのアカウントを持っていると約3分ほどでWordpressを作成できるので楽ですね。

ただし、快適なBlog運用までにはまだやることがありますので以下の記事でサイトを強化していきます。

WordPressの右下のBitnamiを消す

サイトをみてみると右下にBitnamiがあって邪魔です。まずはこちらを消してみましょう。といってもコマンドを二つ打つだけです。

1.まずはLightsailのTopにいきましょう

2.先ほど作成したWordpress-1をClickします

3.「SSHで接続」をClickします
するとTerminalが出てきます。(ボタンを押すだけでSSHができるというのも楽ですね。)

4.あとは以下のコマンドを実行するだけです

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

Wrodpressの管理画面にアクセスする

wordpressといえばCMS、やはり管理者画面から記事を作成したりできるのがいいところですよね。

LightsailではすぐにWordpressができたけど、じゃあ管理者画面にどうやってアクセスするのか。

これも簡単ですが紹介します。

先ほど開いていたTerminalで以下のコマンドを実行します

  cat /home/bitnami/bitnami_application_password

すると文字列が出てくるのでコピーします

あとはご自身のWordpressのURL + wp-admin(http://OOOO/wp-admin)にアクセスし、user名は「user」、passwordに先ほどコピーしたものを入力するとアクセスができます。

Domainを登録する(111.11.1.1のようなIPアドレスではなく、oo.comにする)

続いてDomainの設定を行いましょう。

流れとしてはLightsailで静的なIPを設定し、R53でAレコードを登録です。

1.LightsailのDefaultではIPアドレスは動的になっているのでネットワーキングタブで静的なIPの作成をクリックします

すると静的なIPが発行されます 例. 52.192.126.10

2.あとはAWSのRoute53を開いて先ほどのIPアドレスをAレコードに追加します。(ドメインを持っていない方は年間12$なので買っても良いと思います。ドメインによっては100$するものもあるので注意してください。)

*お名前.comなどでドメインを購入された方はそちらで登録が必要です。

3. 登録したら5分くらい待ってdomain でアクセスしてみましょう。

繋がらない場合はキャッシュの可能性があるので携帯や違うデバイスでも確認してみましょう。

SSL化する(https化)

普段スマホやPCでブラウザしている場合に、「このサイトは安全ではありません」的なメッセージを見たことがある方は多いと思います。

これは、httpというシンプルな接続方法ではなく、httpsという暗号化された接続を推奨というか、SSLはやれよ!とGoogleやAppleが言っているんですね。そして、httpsに対応するにはSSL証明書が必要になります。

今回はLet’s Encryptと言うSSL証明書を無料で発行してくれる機関のサービスを使います。

1.まずはlightsailにSSHでアクセスします。
2. 以下のコマンドを打っていきましょう
 *****.comは前回設定したDomain名にしてください。

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
sudo chmod 700 /usr/bin/certbot-auto
mkdir /home/bitnami/apps/wordpress/htdocs/.well-known
sudo nano /home/bitnami/apps/wordpress/htdocs/.well-known/.htaccess
#
# Override overly protective .htaccess in webroot
#
RewriteEngine On
Satisfy Any
sudo /usr/bin/certbot-auto certonly --webroot -w /home/bitnami/apps/wordpress/htdocs/ --email bask1939@gmail.com -d isseisuzuki.com
sudo cp /etc/letsencrypt/live/****.com/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo cp /etc/letsencrypt/live/****.com/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo /opt/bitnami/ctlscript.sh restart apache

やっていることはLet’s Encryptによって証明書を発行して、生成されたcrt や pemファイルをapache以下に移動し、apacheを再起動です。

これでサイトはhttpsで繋げるようになりました。

やったあ。と思うのですが、SSL証明書には期限があります。。。。。。

サービスによって期限は変わりますが、今回のLet’s Encryptでは3ヶ月です。



すると3ヶ月ごとに上記の作業をするのか。。

まあ手動でやってもいいのですが、自動化しときましょう。

LightsailにSSHアクセスした後に以下を実行しましょう

cd /home/bitnami
vim ssl_cert_update.sh

するとvim エディターの画面になるので以下をコピペしましょう。(****.comはご自身のDomainに変更してください。)

sudo /usr/bin/certbot-auto renew –force-renewalsudo cp /etc/letsencrypt/live/****.com/fullchain.pem /opt/bitnami/apache2/conf/server.crtsudo cp /etc/letsencrypt/live/****.com/privkey.pem /opt/bitnami/apache2/conf/server.keysudo ls -l /opt/bitnami/apache2/conf/server.*sudo /opt/bitnami/ctlscript.sh restart apacheecho date ‘+[%Y/%m/%d %H:%M:%S] ssl cert update end’

escapeボタンを押して :wq を押してエンターを押すとファイルの保存ができます。

このファイルが証明書の更新を行う実行ファイルになります。

あとはこのファイルを毎月実行してあげれば良いので、以下のコマンドを打ちます。

sudo crontab -e

以下をコピペしましょう。

1 1 1 * * /home/bitnami/ssl_cert_update.sh 1>/home/bitnami/ssl_key_update.log 2>&1

nanoエディターで開かれるので、Ctrl + X を押して y を押して Enterで保存、終了ができます。

ここで一点注意点としてはLightsailの時間がUTCなので上記の設定はUTC時間で毎月1の01:01に実行と言う意味になります。つまり日本時間だと毎月1日の10:01にSSLが更新されます。

また、この設定が本当に動くのか気になる方もいると思います。

その際には1 1 1 * * の部分を変えて実験してみましょう。

例えば、作業しているのが10/23の19:32だとしたら 33 10 23 * * (UTC なので10時)に変更してみて1分後にSSL証明書が変わるのかを確認してみましょう。更新されたら毎月1日に更新する必要もないのでそのままの設定でもOKです。

Securityの設定を行う

WordPressは便利な反面、Securityのリスクも高いのでSecurityの設定はしておきましょう。

WordPressのプラグインでは有名なAll In One WP Securityを使います。

以下が今回設定した内容になります。これ以外にも有効なものがあればご教授ください。

WordPressのVersionを隠す
Settings ->WP Version Info -> WP Generator Meta Info -> Remove WP Generator Meta info
管理画面への不正アクセスを減らす
ブルートフォース対策

User Login -> Login Lockdown ->Enable Login Lockdown feature
新しいユーザー作成禁止
UserRegistration ->Manual Approval -> Enable manual approval of new registrations

詳細を調べきれていないですが以下でFirewallも設定しました。

Basic Firewall Rules->Enable Basic Firewall Protection

また、Enable Login Lockdown featureでNotify By Email:と言うのがあります。

これは不正ログインを受けている場合にメールがくるのですが、Defaultの設定だとメールを投げることができないので、WP Mail SMTPでGmailを設定すると良いと思います。

設定すると結構毎日「Site Lockout Notification」と言うメールがきて、攻撃を受けているという危機感を持つことができると思います。

AWS のWAFについては今後紹介しますが、個人Blogではここまでで基本的には割と守れるのではないでしょうか?

まとめ

どうでしたか?エンジニアの方であれば1時間くらいで構築できたのではないでしょうか?

domain が年間12$、Lightsailは毎月3.5$なので毎月4.5$(約500円)であれば試しに作ってもいいと思います。

この記事が誰かの助けになれたら幸いです。
ここまで読んでいただきありがとうございます。