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 주소를 복사하고 브라우저에 붙여 넣습니다. 앱이 실행 중인 것을 볼 수 있습니다.

gsg-build-lightsail-6

결론

이 첫 번째 모듈에서는 AWS CLI를 사용하여 인프라를 생성하고 샘플 애플리케이션을 배포하는 방법을 배웠습니다. 다음 모듈에서는 이 가이드에 사용된 리소스를 정리하는 방법을 배웁니다.

다음 단계: 리소스 정리

내용이 마음에 드셨는지요.

피드백을 제공해 주셔서 감사합니다.
이 페이지가 도움이 되어 기쁩니다. 지속적인 개선에 도움이 되는 추가 세부 정보를 공유해 주시겠습니까?
닫기
피드백을 제공해 주셔서 감사합니다.
이 페이지가 도움이 되지 못해 죄송합니다. 지속적인 개선에 도움이 되는 추가 세부 정보를 공유해 주시겠습니까?
닫기