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 키가 필요합니다. 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
사용자 데이터 스크립트와 앞서 생성한 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 주소를 복사하고 브라우저에 붙여 넣습니다. 앱이 실행 중인 것을 볼 수 있습니다.
