Elastic Beanstalk로 한 걸음 더 나아가기

2966 단어 elasticbeanstalkaws
마지막으로 내 PHP 앱을 실행 및 설정했습니다(코드 비트만 .. 여전히 다른 구성 + 데이터베이스에서 작동해야 함).

SSH 설정



이는 변경, 업로드, 작동 여부 확인, 그렇지 않은 경우 로그를 요청하고 검토하는 것과 비교하여 진행 상황을 확인하는 데 도움이 될 수 있기 때문에 핵심입니다. SSH를 작동시키는 몇 가지 단계가 있습니다.
  • 키 페어 생성: ssh-keygen -b 2048 ~/.ssh/elastic-beanstalk
  • .ebextensions에 키 파일 구성을 생성하면(나는 광산.ebextensions/02_setup_ssh.config이라고 함) 아래 1번처럼 보입니다.
  • SSH 포트를 엽니다. 이것은 또 다른 구성 파일(나는 광산.ebextensions/03_open_sshport.config이라고 함)이며 아래 #2처럼 보입니다.
  • 연결할 EC2 인스턴스에서 IP 주소를 찾은 다음 연결합니다. ssh -i "~/.ssh/elastic-beanstalk" root@[IP ADDRESS]

  • 컨테이너 명령



    한 가지 문제는 내 PHP 앱(Codeigniter v4 프레임워크 앱)의 프로젝트 레이아웃이 다르다는 것입니다. 여기서 루트 폴더에는 다양한 구성 항목이 있고 CodeIgniter 앱은 ci4 하위 디렉토리에 설치됩니다. package.jsoncomposer.json 파일이 있던 곳)이며 공용 웹 루트도 그 하위 디렉토리입니다.

    따라서 코드를 추출한 후 배포하기 전에 composer installnpm install 를 수행해야 합니다. 그래서 이를 수행하기 위해 컨테이너 명령을 실행하기 위한 또 다른 .ebextensions 구성이 있었지만 /var/app/current/ci4 의 정적 경로를 사용하고 있었습니다. 이는 스테이징된 코드가 아닌 현재 배포에 영향을 미쳤습니다. 따라서 EB가 준비된 코드를 배포할 때 예상되는 node_modules 또는 vendor 디렉토리가 없었습니다. 앞뒤로 많은 시간이 걸렸지 만 결국 작동하게되었고 아래 # 3처럼 보입니다. 아, 그리고 #3의 보너스로 nodejs(npm 포함)도 설치됩니다.

    #1:

    files:
      "/root/.ssh/authorized_keys" :
        mode: "000600"
        owner: root
        group: root
        content: |
          [contents from your elastic-beanstalk.pub file]
    


    #2:

    Resources:
      sslSecurityGroupIngress:
        Type: AWS::EC2::SecurityGroupIngress
        Properties:
          GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
          IpProtocol: tcp
          ToPort: 443
          FromPort: 443
          CidrIp: 0.0.0.0/0
      sshSecurityGroupIngress:
        Type: AWS::EC2::SecurityGroupIngress
        Properties:
          GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
          IpProtocol: tcp
          ToPort: 22
          FromPort: 22
          CidrIp: 0.0.0.0/0
    


    (나중에 HTTPS 설정을 위해 443을 추가했습니다.)

    #삼:

    commands:
      00_install_curl:
        command: sudo yum -y install curl
      01_nodejs_setup:
        command: curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
      02_install_nodejs:
        command: sudo yum -y install nodejs
      03_enable_epel:
        command: sudo amazon-linux-extras install epel
    
    container_commands:
      01_npm_install:
        command: 'cd ci4 && npm install'
        test: '[ ! -d ci4/node_modules ] && echo "node_modules files not installed"'
      02_composer_install:
        command: 'cd ci4 && /usr/bin/composer.phar install'
        test: '[ ! -d ci4/vendor ] && echo "vendor files not installed"'
    

    좋은 웹페이지 즐겨찾기