Amazon Lightsail で LAMP ウェブアプリケーションをデプロイする

入門ガイド

モジュール 1: コンテナを準備する

このモジュールでは、AWS CLI を使用して LAMP スタックを設定します

はじめに

このモジュールでは、AWS CLI を使用して、LAMP コンポーネントが事前設定されているブループリントから Lightsail インスタンスを作成します。インスタンスの作成中に、GitHub リポジトリから PHP アプリケーションをインストールします。

学習内容

  • AWS CLI を使用して Lightsail インスタンスを作成する方法
  • インスタンスのユーザーデータを使用して PHP アプリケーションをデプロイする

 所要時間

10 分

 モジュールの前提条件

  • 管理者レベルのアクセス権を持つ AWS アカウント**
  • 推奨ブラウザ: Chrome または Firefox の最新バージョン

[**] 過去 24 時間以内に作成されたアカウントは、このチュートリアルに必要なサービスへのアクセス権限がまだ付与されていない可能性があります。

実装

Lightsail インスタンスの作成

Lightsail インスタンスを作成するとき、一般的な自動設定タスクを実行したり、インスタンスの起動後にスクリプトを実行したりするために使用できるユーザーデータをインスタンスに渡すオプションがあります。このガイドの後半で、AWS CLI を使用して Lightsail インスタンスを作成します。次のスクリプトをコピーしてコマンドの --user-data 部分に貼り付けます。

# remove default website
#-----------------------
cd /opt/bitnami/apache2/htdocs 
rm -rf *

# clone github repo
#------------------
/opt/bitnami/git/bin/git clone -b loft https://github.com/aws-developer-center/todo-php .

# set write permissons on the settings file
#-----------------------------------
chown bitnami:daemon ./*
chmod 666 connectvalues.php

# inject database password into configuration file
#-------------------------------------------------
sed -i.bak "s/<password>/$(cat /home/bitnami/bitnami_application_password)/;" /opt/bitnami/apache2/htdocs/connectvalues.php

# create database
#----------------
cat /home/bitnami/htdocs/data/init.sql | /opt/bitnami/mariadb/bin/mysql -u root -p$(cat /home/bitnami/bitnami_application_password)

このスクリプトは、ブループリントのデフォルトのウェブサイトを削除し、サンプルアプリケーションのクローンを作成して置き換え、適切なファイル許可を設定し、サンプルアプリケーションの設定ファイルで自動生成されたデータベースパスワードを設定し、init.sql スクリプトを実行して初期値が入力されたデータベースを作成します。

実行開始後にインスタンスにアクセスするには、SSH キーが必要です。生成するには、次のコマンドを実行します。

aws lightsail create-key-pair \
    --key-pair-name LightsailGuide > ssh_key_response.json

cat ssh_key_response.json | jq -r '.publicKeyBase64' > lightsailguide.pub
cat ssh_key_response.json | jq -r '.privateKeyBase64' > lightsailguide
chmod 400 lightsailguide.pub lightsailguide

これで、AWS CLI を使用してインスタンスを作成する準備が整いました。このガイドでは、アイルランド (eu-west-1) リージョンと、lamp_7blueprintId を持つ LAMP ブループリントを使用します。使用可能なブループリントの詳細なリストを表示する場合は、次のコマンドを実行できます。

aws lightsail get-blueprints

Lightsail インスタンスを作成するときは、インスタンスバンドルを指定する必要があります。このガイドでは、micro_2_0 バンドルを使用します。次のコマンドを実行して、使用可能なバンドルのリストを表示できます。

aws lightsail get-bundles

ユーザーデータスクリプトと作成した SSH キーを使用して Lightsail インスタンスを作成するには、次のコマンドを実行します。

# Create the Lightsail instance:
aws lightsail create-instances \
    --instance-names "LightsailLampExample" \
    --availability-zone eu-west-1a \
    --blueprint-id lamp_7 \
    --bundle-id micro_2_0 \
    --key-pair-name LightsailGuide \
    --user-data '# remove default website
#-----------------------
cd /opt/bitnami/apache2/htdocs 
rm -rf *

# clone github repo
#------------------
/opt/bitnami/git/bin/git clone -b loft https://github.com/aws-developer-center/todo-php .

# set write permissons on the settings file
#-----------------------------------
chown bitnami:daemon ./*
chmod 666 connectvalues.php

# inject database password into configuration file
#-------------------------------------------------
sed -i.bak "s/<password>/$(cat /home/bitnami/bitnami_application_password)/;" /opt/bitnami/apache2/htdocs/connectvalues.php

# create database
#----------------
cat /home/bitnami/htdocs/data/init.sql | /opt/bitnami/mariadb/bin/mysql -u root -p$(cat /home/bitnami/bitnami_application_password)' 

このコマンドは、作成したインスタンスの詳細を出力します。

{
    "operations": [
        {
            "id": "a49e1398-fb81-455a-8a50-3159c9bd9966",
            "resourceName": "LightsailLampExample",
            "resourceType": "Instance",
            "createdAt": "2021-09-21T16:38:40.566000+02:00",
            "location": {
                "availabilityZone": "eu-west-1a",
                "regionName": "eu-west-1"
            },
            "isTerminal": false,
            "operationType": "CreateInstance",
            "status": "Started",
            "statusChangedAt": "2021-09-21T16:38:40.566000+02:00"
        }
    ]
}

インスタンスが使用可能になるまで数分かかります。次のコマンドを実行して進行状況を確認できます。

aws lightsail get-instance-state --instance-name LightsailLampExample

次の出力が表示された場合、インスタンスは実行されていますが、引き続きユーザーデータスクリプトを介して機能している可能性があります。

{
    "state": {
        "code": 16,
        "name": "running"
    }
}

アプリケーションをテストするには、インスタンスのパブリック IP アドレスが必要です。次のコマンドを実行して、インスタンスのパブリック IP アドレスを取得します。

aws lightsail get-instance --instance-name LightsailLampExample | jq -r .instance.publicIpAddress

IP アドレスをコピーしてブラウザに貼り付けると、アプリケーションが実行されていることがわかります。

gsg-build-lightsail-6

まとめ

この最初のモジュールでは、AWS CLI を使用してインフラストラクチャを作成し、サンプルアプリケーションをデプロイする方法を学習しました。次のモジュールでは、このガイドで使用されたリソースをクリーンアップする方法を学習します。

次のステップ: リソースをクリーンアップする

当社のサービスについてご意見をお聞かせください。

フィードバックありがとうございます。
このページがお役に立てれば幸いです。今後の改善のために、追加の詳細情報を共有していただけますか?
閉じる
フィードバックありがとうございます。
このページがお役に立たず申し訳ありません。今後の改善のために、追加の詳細情報を共有していただけますか?
閉じる