在 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) 區域,以及 blueprintId 為 lamp_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 地址並在瀏覽器中貼上它。您應該會看到應用程式執行中:
