본문 바로가기
일지/헬키

[React native + Web] 헬키 개발일지 2. HTTPS + 배포 도전기

by 리나그(ReenAG) 2024. 5. 7.
728x90
반응형

오늘은 다소 짜증날 수도 있는 구현을 해보려고 한다.

어제 대충 회원가입/로그인 페이지 기틀을 짜두었다. 뭐 엄청난 디테일을 준 건 아니고 적당히 이쁘면 된다.

내가 UI/UX 디자인까지 다 하는게 아니기 때문에...

 

이 정도 해주면 나중에 UI/UX가 들어와도 수정 가능할 것이다. 이젠 백엔드 서버와 통신이 제대로 되기 때문에(네트워크 문제가 없다는 전제하에), 구현해야할 건 대략 3가지가 남았다.

 

1. App의 AuthContext.

2. HTTPS로 보안 챙기기

3. 배포하기.

 

인데... 흠. 앱 배포는 그렇다치는데, backend 배포를 해야지 android / ios 기종에서 테스트가 가능해지니까 빠르게 하는게 좋다. 
이걸 제외하고도, 기획단에서 더 저장해달라고 부탁한 사항도 있기 때문에 빠르게 완성해야할 것 같다.

 

1번은 완벽하지는 않을지는 몰라도 일단 구현해두었다. stroage를 좀 더 보안이 좋은 녀석으로 바꿔두기만 한다면 문제 없을 것 같다. 쿠키도 제대로 쓰여지는 것 같다.

 

2번은 생각보다 디버깅 환경에서 오래 걸리지는 않아서 3번이랑 같이 해보고 있다.

 

https://blog.bespinglobal.com/post/github-action-%EC%9C%BC%EB%A1%9C-ec2-%EC%97%90-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0/

 

github-action 으로 ec2 에 배포하기 - BESPIN Tech Blog

Github Actions는 Github 저장소를 기반으로 Github에서 제공하는 Workflow 자동화 도구 입니다. Workflow는 Github Repository에 있는 소스들의 build, test, release, deploy 을 flow에 정의된 순서대로 실행 할 수 있도록

blog.bespinglobal.com

일단은 이 쪽의 튜토리얼을 보고 조금씩 따라하고 있는 중이다.

 

현재까지 한일은

0. e2c 인스턴스 생성, 접근제어(ip), instance connect 제거

1. e2c role생성

2. codedeploy role생성

3. e2c 인스턴스의 iam role을 1.에서 만들었던 것으로 변경

4. codedeploy의 get started에서 application 생성

5. 생성 완료 화면에서 배포그룹을 추가로 생성

6. e2c 인스턴스에 접속해서 codedeploy agent 깔기. 다른 os라서 까는 법을 따로 찾았다.

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html

 

아마존 리눅스 또는 RHEL용 CodeDeploy 에이전트 설치 - AWS CodeDeploy

앞의 명령에서 /home/ec2-user는 Amazon Linux 또는 RHEL Amazon EC2 인스턴스의 기본 사용자 이름을 나타냅니다. 사용자 지정 AMI를 사용하여 인스턴스를 만든 경우 AMI 소유자가 다른 기본 사용자 이름을 지

docs.aws.amazon.com

중간에 안깔리는 애가 있을 텐데 이걸로 써주면 된다.

wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install

 

7. 해당 repo의 github action에 들어가서 set up workflow by yourself를 클릭한다.

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  # 지정한 branch에서 push/pull_request 에 해당하는 command가 수행되면 이 workflow가 동작 합니다.
  push:
    branches: [ master ] 

  # 이부분은 위의 trigger가 없어도 수동으로 동작 할 수 있게끔 해주는 역할을 합니다.
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build" 
  build:
    runs-on: ubuntu-latest
    
    permissions:
      id-token: write
      contents: read

    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - name: checkout release
      uses: actions/checkout@v3

    # 빌드 전 .env파일 생성
    - name: Generate Environment Variables File for Production
    #2.$를 통해 변수 할당
      [redacted]
      
    - name: Cache node modules
      uses: actions/cache@v2
      id: cache
      with:
        path: node_modules
        key: npm-packages-${{ hashFiles('**/package-lock.json') }}

    - name: Install Dependencies	# 디펜던시 키가 없으면 디펜던시 인스톨
      if: steps.cache.outputs.cache-hit != 'true'
      run: npm install
      
    - name: archive hive-f-server 
      run: tar cvfz ./hive-f-server.tar.gz *

    - name: AWS configure credentials
      uses: aws-actions/configure-aws-credentials@v4
      with:
        role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
        role-session-name: GitHubActions
        aws-region: ap-northeast-2
        
    - name: upload to S3
	  [redacted]

    - name: deploy with AWS codeDeploy
      [redacted]

초장엔 잘 모르니까 일단 어느 정도는 복붙을 하기로 했는데, 어찌저찌 하다보니 꽤 복잡해졌다.

 

8. instance에 mysql설치

sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
sudo yum update
sudo dnf install mysql-community-server

 

8-1. root mysql 다시 따오는 법

sudo grep 'temporary password' /var/log/mysqld.log
sudo mysql_secure_installation -p

 

9. .env는 따라가지 않기 때문에 일일이 action secret 변수로 케어

...

 

10. IAM role 세팅 다시하기...

아 이게 날 2시까지 붙잡았는데, 일단 deploy가 성공하기는해서 놔두고 내일 아침에 와서 다시보려고 한다. 중요한 건 일단,

여기서 3번째 옵션을 이용해서 github를 등록하는데, 기본적으로는 없을 것이다. 따라서, 

 

여기서 등록해주어야한다.

 

그리고 organization을 등록하라고 하는데 쌩까고 그냥 아무 핸들명이나 넣어도 된다.

아 일단 오늘은 여기까지. 내일 다시 와서 보자.

728x90
반응형