在 Amazon Lightsail 上部署 LAMP Web 應用程式

入門指南

單元 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) 區域,以及 blueprintIdlamp_7 的 LAMP 藍圖。如果您想要查看可用藍圖的完整清單,則可以執行以下命令:

aws lightsail get-blueprints

您必須在建立 Lightsail 執行個體時指定執行個體套件。在本指南中,我們將使用 micro_2_0 套件。您可以使用以下命令來檢視可用套件的清單:

aws lightsail get-bundles

若要建立 Lightsail 執行個體,其中具有使用者資料指令檔,以及您已建立的 SSH 金鑰,請執行以下命令:

# 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 建立基礎設施,以及如何部署範例應用程式。在下一個單元中,我們將了解如何清理本指南中使用的資源。

下一步:清理資源

讓我們知道我們表現如何。

感謝您的意見回饋
我們很高興此頁面對您有所幫助。您願意分享更多詳細資訊以協助我們繼續改進嗎?
關閉
感謝您的意見回饋
很抱歉此頁面沒有幫助到您。您願意分享更多詳細資訊以協助我們繼續改進嗎?
關閉