Team5-be01-Final-Project / Frontend

https://bpssystem.store/
2 stars 0 forks source link

[ 배포 ] Frontend Deploy document #32

Open parc02 opened 5 months ago

parc02 commented 5 months ago

STEP 1 AWS INSTANCE, BUCKET, CODEDEPLOY(APPLICATION) 생성

EC2 INSTANCE 생성

parc02 commented 5 months ago

STEP 2

parc02 commented 5 months ago

STEP GitHub Repository Secrets 액세스 키 저장(각자)

parc02 commented 5 months ago

AWS EC2 내부 설정

각 리전 참조 : https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

$ sudo aws configure AWS Access Key ID [None]: <CSV - AWS_ACCESS_KEY_ID 입력> AWS Secret Access Key [None]: Default region name [None]: Default output format [None]: json


- codedeploy-agent 설치

루비 설치

$ sudo apt update $ sudo apt install ruby-full $ sudo apt install wget

$ wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install $ chmod +x ./install $ sudo ./install auto > /tmp/logfile

실행 확인

$ sudo service codedeploy-agent status

인스턴스가 부팅시 codedeploy-agent 가 자동 실행 파일 작성 및 권한

$ sudo cat /etc/init.d/codedeploy-startup.sh

!/bin

sudo service codedeploy-agent restart $ sudo chmod +x /etc/init.d/codedeploy-startup.sh

parc02 commented 5 months ago

-https://mag1c.tistory.com/465

parc02 commented 5 months ago

.github/workflows/actiondev.yml 생성

name: Deployaws

on:
  push:
    branches:
      - release/1.0.0
  pull_request:
    types:
      - closed

jobs:
  deploy:
#    if: github.event.pull_request.merged == true
    environment: release/1.0.0
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      # AWS 인증 (IAM 사용자 Access Key, Secret Key 활용)
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ vars.AWS_REGION }}

      # 빌드 결과물을 S3 버킷에 업로드
      - name: Upload to AWS S3
        run: |
          aws deploy push \
            --application-name ${{ vars.CODE_DEPLOY_APP_NAME }} \
            --ignore-hidden-files \
            --s3-location s3://${{ vars.S3_BUCKET_NAME }}/$GITHUB_SHA.zip \
            --source .

      # S3 버킷에 있는 파일을 대상으로 CodeDeploy 실행
      - name: Deploy to AWS EC2 from S3
        run: |
          aws deploy create-deployment \
            --application-name ${{ vars.CODE_DEPLOY_APP_NAME }} \
            --deployment-config-name CodeDeployDefault.AllAtOnce \
            --deployment-group-name ${{ vars.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
            --s3-location bucket=${{ vars.S3_BUCKET_NAME }},key=$GITHUB_SHA.zip,bundleType=zip

appspec.yml 생성

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/app/bps
    overwrite: yes

permissions:
  - object: /
    pattern: "**"
    owner: ubuntu
    group: ubuntu

hooks:
  AfterInstall:
    - location: stop.sh
      timeout: 60
      runas: ubuntu
  ApplicationStart:
    - location: start.sh
      timeout: 300
      runas: ubuntu

aws deploy 확인

image

parc02 commented 5 months ago

EC2 내부에 nvm npm 설치 및 버전 변경

parc02 commented 5 months ago

(BUG) EC2내부에서 localhost가 띄어졌지만 해당 ip:port로 접근이 불가능합니다.

<<해결방법>>

만약에 localhost 가 아닌 외부 서버에서 dev-server 실행 시, –host 옵션을 추가하지 않으면 접근이 안됩니다.
 localhost 인경우에는 생략하시면 됩니다. 
-https://meongae.tistory.com/37
parc02 commented 5 months ago

FrontEnd Docker로 배포하기

EC2 내부에 docker, dockercompose 다운받기

sudo apt update
$ sudo apt install docker
$ docker -v
$ sudo service docker start
$  sudo usermod -aG docker ubuntu
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
- start.sh

!/usr/bin/env bash

cd /home/ubuntu/app/bps

Docker Compose를 사용하여 컨테이너를 시작합니다.

docker-compose -f docker-compose.yml up -d

- stop.sh

!/usr/bin/env bash

echo "stop" ls

parc02 commented 5 months ago