13
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Lightsailを用いてWordPressのインスタンスを構築する

Last updated at Posted at 2017-03-02

はじめに

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のみ。
  • Firewallの設定が、開放するポートしか設定できない。
    • それ以上はOS側で。
  • スナップショットの自動取得はWebコンソールから設定できない。
    • 別途、Lambda等からAPIを叩く必要がある。
    • なお、公式で公開しているLambdaのコードがあります。スライド参照。
      • こちらはまた別記事を書く予定。
  • インスタンスのサイズを変更する際には、スナップショットを取得し、スナップショットからインスタンスを再作成する必要がある。
    • オンラインのままスケールアップはできない。
  • Auto ScalingやAuto Healingのような便利なものはない。
  • Lightsailというよりbitnamiの話だが、内部で使用されるApacheやMySQLなどのプログラムは、aptやyumなどのパッケージマネージャで管理されているわけではなく、/opt/bitnamiというディレクトリにすべてインストールされている。
    • そのため、セキュリティパッチが当たりません。
    • この点が引っかかるなら、Amazon Linux等に自分でインストールして構築していく感じ。

手順

Lightsailコンソールで

Lightsailコンソールを開く

  1. AWSコンソールでlightsailと検索する。
    もしくは、 https://lightsail.aws.amazon.com/ から。

インスタンスを作成する

  1. コンソール右上の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が変動する。

  1. コンソール右上のCreate other resourcesをクリック、Static IPをクリック
    • Instance location: 今はus-east-1しか選べないのでこのまま。
    • Attach to an instance: 前の手順で作成したインスタンスを選択。
    • Name your static IP: やっぱり変更できないのである程度悩んで決める。
  2. Createをクリック

LightsailのFW設定を確認する

  1. コンソール上で、作成したインスタンスをクリック
  2. Networkingタブをクリック
  3. Firewallの項目が、SSH,HTTP,HTTPSのみになっていることを確認

割り当てたIPにアクセスし、WordPressが表示されるか確認する

割り当てたStatic IPは、ダッシュボードに表示されているインスタンス名の右下から確認できる。

  1. ブラウザで、http://<Static IP>/にアクセスする。
    WordPressの画面が表示されればここまでは成功。

    > ちなみに、自己署名証明書ながらHTTPSでの通信もできる。
    

Lightsailインスタンスで

SSH接続する

コンソールからはキーペアやパスワードを使用せずにターミナルにSSH経由でログインできます。
ただし、接続に時間がかかったり、コピペできなかったりと不便なので、今回は従来通りターミナルソフトからSSH接続して設定しました。

  1. お好みの方法で接続してください。ログイン時の情報は以下の通り。
    • ユーザ名:bitnami

    • パスワード:なし

    • 鍵:設定したキーペア

      デフォルトのキーペアは、ダッシュボード右上Account -> Account の、Download default private keyからダウンロードできます。

初期パスワードを確認する

初期パスワードは、WordPressやMySQLのログイン時に使用します。

bash
$ cat bitnami_application_password
<初期パスワード>

ページ右下に出るbitnamiのロゴをdisableする

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

bitnamiのロゴが消えたか確認する

  1. WordPressのページをリロードして確認する。

WordPressで

WordPressにログインする

  1. http://<IP>/wp-login.phpを開く

    • ID: user
    • パスワード: 先ほど確認した初期パスワード

本体・プラグイン・テーマの更新を適用する

更新がある場合はダッシュボードに通知される。

  1. ダッシュボード左側のメニューの、Updatesをクリック。
    4. WordPress本体の更新がある場合は適用する。
    5. プラグインの更新がある場合は適用する。
    6. テーマの更新がある場合は適用する。

タイムゾーン・言語を変更する

  1. ダッシュボード左側のメニューからSettings -> General をクリック
  2. 以下の通り変更する
    • Timezone をUTC+9
    • Site Language を日本語
  3. Save Changes をクリック

翻訳の更新を適用する

  1. ダッシュボード左側のメニューの、更新をクリック。
  2. 翻訳の更新がある場合は適用する。

本体の更新(ローカライズ版)を適用する

日本語ローカライズ版に更新可能なので、必要に応じて更新する。
3. ダッシュボード左側のメニューの、更新をクリック。
4. WordPressの更新を適用する。

管理者のパスワードを変更する

  1. ダッシュボード左側のメニューの、ユーザー -> あなたのプロフィールをクリック

  2. ページ下部のアカウント管理の、新しいパスワードの横にあるパスワードを生成するをクリック

  3. 生成されたパスワードを消し、設定したいパスワードを入力する
    (確認で入力したりしないので、間違えないようにする。)

  4. プロフィールを更新をクリック

    次回ログイン時から設定したパスワードが有効になる。
    ダッシュボード右上の「こんにちは、userさん」の上にカーソルをかざし、出てきたメニューからサインアウトして、変更後のパスワードでログインできるか確認する。

投稿用のユーザを作成する

  1. ユーザー -> 新規追加をクリック

  2. 以下の項目を入力する

    • ユーザー名

    • メールアドレス

    • 権限グループを編集者

      権限グループは適切なものを設定する。

  3. 新規ユーザーを追加 をクリック

    管理者ユーザと間際らしいので、投稿用ユーザの配色を変更しておくことをおすすめ。
    ユーザー一覧でユーザをクリック、管理画面の配色を適当なものに変更。

テスト投稿をし、正しく表示されるか確認する

  1. 投稿用のユーザでログインし、テスト投稿をする。
    日本語・4バイト絵文字(🍣など)が正しく表示されるかを確認する。
  2. ブラウザで開いて確認する。

(以下は必要に応じて)

iptablesで指定したIPアドレスからのアクセスに限定する

  • HTTP,HTTPSには、指定したIPアドレスからのみアクセスできるようにしたい。
  • LightsailのFirewall機能では、「どのポートを開放するか」のみ設定できる。
    そのため、インスタンス側のiptablesを用いて設定する。
  • ufwというiptablesのフロントエンドツールを用いて、iptablesのルールを設定する。
    iptablesのコマンドを直接実行するよりも簡単で、設定後の確認もしやすい。
    また、設定は即時反映され、設定は自動的に保存されて、次回システム起動時にも反映される。
  1. ufwが有効か無効かを確認する

    bash
    $ sudo ufw status
    Status: inactive
    

    おそらくinactiveと表示される。

  2. すべての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)
    
  3. 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 と表示されれば成功

  4. 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)
    
  5. 指定したIPからはすべての通信を許可するルールを追加する

    bash
    $ sudo ufw allow from <指定のIP>
    Rule added
    

    WordPressで、StaticPressというプラグインを用いてS3バケットにHTMLを吐き出したい場合、LightsailインスタンスのグローバルIP(Static IP)も、同様に設定する必要がある
    (設定しないと、StaticPressが正常に動作しない。)

  6. 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)
    

正しく設定されているか確認する

  1. 先ほどの設定後に
    • LightsailのWebコンソールからターミナルが開けること
    • 指定したIPアドレス下の端末から
      • SSHセッションが張れること
      • WordPressが開けること
    • スマホなど別回線の端末から
      • SSHセッションが張れること
      • WordPressが開けないこと
  2. sudo ufw disableして
    • スマホなど別回線の端末から
      • WordPressが開けること
  3. sudo ufw enableyキーして
    • スマホなど別回線の端末から
      • WordPressが開けないこと

を確認する。

おわりに

安くて簡単で便利だと思いました。
軽めのもの、社内向けのもの を動かすには十分かなと思います。
また別の記事を書きますが、CloudFrontとも連携可能です。

参考に

13
20
0

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
13
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?