はじめに
LightsailでWordPress環境を構築した際のメモです。
Lightsailについて
###いいところ
- 月額$5からと圧倒的に安い
- $5/monthのプランでも1TBの転送量込み
- すぐに構築できる
- OSイメージはAmazon LinuxとUbuntuが用意されている
- 加えてbitnamiの提供するWordPressやRedmine、GitLab、Magentoなどを設定済みのStackイメージが用意されている
- 設定が簡単
- 固定IPを無料で利用できる
- Static IPと呼ばれている。(Elastic IPかな?)
- インスタンス1つに対し1個、無料で利用できる。
- DNSも利用できる
- 今回は試していない。
わるいところ(留意しておくこと)
- 2017年3月2日現在で、利用できるリージョンは
us-east-1
のみ。 - Shadow VPC と呼ばれる、コンソールからは見えないVPCの中で実行される。
- RDSなどを使おうとすると、VPC Peering が必要になる。
- もちろん課金される。
- Peeringできる先は、現在のところus-east-1のデフォルトVPCのみ。
- RDSなどを使おうとすると、VPC Peering が必要になる。
- Firewallの設定が、開放するポートしか設定できない。
- それ以上はOS側で。
- スナップショットの自動取得はWebコンソールから設定できない。
- 別途、Lambda等からAPIを叩く必要がある。
- なお、公式で公開しているLambdaのコードがあります。スライド参照。
- こちらはまた別記事を書く予定。
- インスタンスのサイズを変更する際には、スナップショットを取得し、スナップショットからインスタンスを再作成する必要がある。
- オンラインのままスケールアップはできない。
- Auto ScalingやAuto Healingのような便利なものはない。
- Lightsailというよりbitnamiの話だが、内部で使用されるApacheやMySQLなどのプログラムは、aptやyumなどのパッケージマネージャで管理されているわけではなく、
/opt/bitnami
というディレクトリにすべてインストールされている。- そのため、セキュリティパッチが当たりません。
- この点が引っかかるなら、Amazon Linux等に自分でインストールして構築していく感じ。
手順
Lightsailコンソールで
Lightsailコンソールを開く
- AWSコンソールで
lightsail
と検索する。
もしくは、 https://lightsail.aws.amazon.com/ から。
インスタンスを作成する
-
コンソール右上の
Create Instance
をクリック
5. 以下の通り設定する
* Pick your instance image:Apps + OS
->Word Press
> 小さくて見逃しやすいが、**Change SSH key pair**をクリックすると、SSHログイン時に使用するキーペアを変更することができる。必要に応じて変更する。
(Create key pair
から新しいキーペアを作成することもできるが、作成した時一度だけしかダウンロードできないので注意する。)
* Choose your instance plan: 今回は$5/month
を選択
* Select Availability Zone: 今はus-east-1?しか選べないので、今回はそのままで
* Name your instance: 後から変更できないのでちゃんと悩む。
> なお、インスタンス自動取得プログラムで、指定した接頭辞(AS-
)から始まるインスタンス名を対象にしているので、今回はAS-test-blog とした。
また、スナップショットを取得、スナップショットからインスタンスを作成することで名前の変更のようなことはできる。
4. Create
をクリック
焦らず5分待つ
インスタンス作成後すぐアクセスすると、インストール処理中なのか、ホームディレクトリにあるはずの初期パスワードが記載されたファイルが存在しないことがあるので、5分ほどはおとなしく待つ。
Static IPを割り当てる
Static IPの設定をしないと、インスタンス再起動時にIPが開放→別のIPが割り当てされるので、IPが変動する。
- コンソール右上の
Create other resources
をクリック、Static IP
をクリック- Instance location: 今はus-east-1しか選べないのでこのまま。
- Attach to an instance: 前の手順で作成したインスタンスを選択。
- Name your static IP: やっぱり変更できないのである程度悩んで決める。
-
Create
をクリック
LightsailのFW設定を確認する
- コンソール上で、作成したインスタンスをクリック
-
Networking
タブをクリック -
Firewall
の項目が、SSH,HTTP,HTTPS
のみになっていることを確認
割り当てたIPにアクセスし、WordPressが表示されるか確認する
割り当てたStatic IPは、ダッシュボードに表示されているインスタンス名の右下から確認できる。
-
ブラウザで、
http://<Static IP>/
にアクセスする。
WordPressの画面が表示されればここまでは成功。> ちなみに、自己署名証明書ながらHTTPSでの通信もできる。
Lightsailインスタンスで
SSH接続する
コンソールからはキーペアやパスワードを使用せずにターミナルにSSH経由でログインできます。
ただし、接続に時間がかかったり、コピペできなかったりと不便なので、今回は従来通りターミナルソフトからSSH接続して設定しました。
- お好みの方法で接続してください。ログイン時の情報は以下の通り。
-
ユーザ名:
bitnami
-
パスワード:なし
-
鍵:設定したキーペア
デフォルトのキーペアは、ダッシュボード右上
Account
->Account
の、Download default private key
からダウンロードできます。
-
初期パスワードを確認する
初期パスワードは、WordPressやMySQLのログイン時に使用します。
$ cat bitnami_application_password
<初期パスワード>
ページ右下に出るbitnamiのロゴをdisableする
$ sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
$ sudo /opt/bitnami/ctlscript.sh restart apache
bitnamiのロゴが消えたか確認する
- WordPressのページをリロードして確認する。
WordPressで
WordPressにログインする
-
http://<IP>/wp-login.phpを開く
- ID:
user
- パスワード: 先ほど確認した初期パスワード
- ID:
本体・プラグイン・テーマの更新を適用する
更新がある場合はダッシュボードに通知される。
- ダッシュボード左側のメニューの、
Updates
をクリック。
4. WordPress本体の更新がある場合は適用する。
5. プラグインの更新がある場合は適用する。
6. テーマの更新がある場合は適用する。
タイムゾーン・言語を変更する
- ダッシュボード左側のメニューから
Settings
->General
をクリック - 以下の通り変更する
- Timezone を
UTC+9
に - Site Language を
日本語
に
- Timezone を
-
Save Changes
をクリック
翻訳の更新を適用する
- ダッシュボード左側のメニューの、
更新
をクリック。 - 翻訳の更新がある場合は適用する。
本体の更新(ローカライズ版)を適用する
日本語ローカライズ版に更新可能なので、必要に応じて更新する。
3. ダッシュボード左側のメニューの、更新
をクリック。
4. WordPressの更新を適用する。
管理者のパスワードを変更する
-
ダッシュボード左側のメニューの、
ユーザー
->あなたのプロフィール
をクリック -
ページ下部のアカウント管理の、新しいパスワードの横にある
パスワードを生成する
をクリック -
生成されたパスワードを消し、設定したいパスワードを入力する
(確認で入力したりしないので、間違えないようにする。) -
プロフィールを更新
をクリック次回ログイン時から設定したパスワードが有効になる。
ダッシュボード右上の「こんにちは、user
さん」の上にカーソルをかざし、出てきたメニューからサインアウト
して、変更後のパスワードでログインできるか確認する。
投稿用のユーザを作成する
-
ユーザー
->新規追加
をクリック -
以下の項目を入力する
-
ユーザー名
-
メールアドレス
-
権限グループを
編集者
に権限グループは適切なものを設定する。
-
-
新規ユーザーを追加
をクリック管理者ユーザと間際らしいので、投稿用ユーザの配色を変更しておくことをおすすめ。
ユーザー一覧でユーザをクリック、管理画面の配色
を適当なものに変更。
テスト投稿をし、正しく表示されるか確認する
- 投稿用のユーザでログインし、テスト投稿をする。
日本語・4バイト絵文字(🍣など)が正しく表示されるかを確認する。 - ブラウザで開いて確認する。
(以下は必要に応じて)
iptablesで指定したIPアドレスからのアクセスに限定する
- HTTP,HTTPSには、指定したIPアドレスからのみアクセスできるようにしたい。
- LightsailのFirewall機能では、「どのポートを開放するか」のみ設定できる。
そのため、インスタンス側のiptablesを用いて設定する。 - ufwというiptablesのフロントエンドツールを用いて、iptablesのルールを設定する。
iptablesのコマンドを直接実行するよりも簡単で、設定後の確認もしやすい。
また、設定は即時反映され、設定は自動的に保存されて、次回システム起動時にも反映される。
-
ufwが有効か無効かを確認する
bash$ sudo ufw status Status: inactive
おそらくinactiveと表示される。
-
すべてのIPからSSHを許可するルールを追加する
すべてのIPからSSHを許可している理由は以下の通り
- LightsailのWebコンソールから使えるターミナルが、グローバルIP経由でSSH接続をしているため。
- 上記ターミナルで接続元IPとなるレンジが公開されていないため。
(実際には、AWSで使用されるIPのレンジは公開されているけれど、Lightsailのドキュメントとしては明記されていないため。変更されるかもしれない。) - もし、「特定のIPからのみ」のルールを追加しようとして、間違えたとする。すると新規にSSHでセッションが張れなくなる。この状態で既存のSSHセッションを閉じてしまうと、LightsailインスタンスにはSSH接続以外に接続する方法が用意されていないので詰む。前述の通り、ufwは即時反映・恒久化されるため、再起動しても回復できない。
ここをすっ飛ばして先にufwを有効にすると、それ以降新規にSSHセッションを張れなくなる。もし有効にしてしまったときはそのセッションを絶対に閉じないように。
bash$ sudo ufw allow ssh Rules updated Rules updated (v6)
-
ufwを有効にする
bash$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Command may disrupt existing ssh connections. Proceed with operation (y|n)? と聞かれます。yキーを押下。
Firewall is active and enabled on system startup と表示されれば成功 -
ufwに登録されているルール・初期設定を確認する
bash$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN Anywhere 22 (v6) ALLOW IN Anywhere (v6)
-
指定したIPからはすべての通信を許可するルールを追加する
bash$ sudo ufw allow from <指定のIP> Rule added
WordPressで、StaticPressというプラグインを用いてS3バケットにHTMLを吐き出したい場合、LightsailインスタンスのグローバルIP(Static IP)も、同様に設定する必要がある。
(設定しないと、StaticPressが正常に動作しない。) -
ufwに登録されているルールを確認する
bash$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN Anywhere [ 2] Anywhere ALLOW IN <指定のIP> [ 3] 22 (v6) ALLOW IN Anywhere (v6)
正しく設定されているか確認する
- 先ほどの設定後に
- LightsailのWebコンソールからターミナルが開けること
- 指定したIPアドレス下の端末から
- SSHセッションが張れること
- WordPressが開けること
- スマホなど別回線の端末から
- SSHセッションが張れること
- WordPressが開けないこと
-
sudo ufw disable
して- スマホなど別回線の端末から
- WordPressが開けること
- スマホなど別回線の端末から
-
sudo ufw enable
→yキー
して- スマホなど別回線の端末から
- WordPressが開けないこと
- スマホなど別回線の端末から
を確認する。
おわりに
安くて簡単で便利だと思いました。
軽めのもの、社内向けのもの を動かすには十分かなと思います。
また別の記事を書きますが、CloudFrontとも連携可能です。
参考に
- WordPressインスタンスを構築する流れと、簡単なLightsailの紹介
- Amazon Lightsail – AWSの力、VPSの簡単さ
https://aws.amazon.com/jp/blogs/news/amazon-lightsail-the-power-of-aws-the-simplicity-of-a-vps/
- Amazon Lightsail – AWSの力、VPSの簡単さ
- Lightsailについて紹介した公式のスライド(よくまとまっています)
- AWS Black Belt Online Seminar 2017 Amazon Lightsail
https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2017-amazon-lightsail
- AWS Black Belt Online Seminar 2017 Amazon Lightsail
- WordPressのユーザー権限について
- 覚えておきたいWordPressのユーザー権限の種類と登録・管理方法
http://bazubu.com/how-to-setup-wp-users-23705.html
- 覚えておきたいWordPressのユーザー権限の種類と登録・管理方法
- ufwについて
- 第76回 Ubuntuのソフトウェアファイアウォール:UFWの利用(1)
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0076 - 第77回 Ubuntuのソフトウェアファイアウォール:ufwの利用(2)
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0077
- 第76回 Ubuntuのソフトウェアファイアウォール:UFWの利用(1)