본문 바로가기

Dot Programming/React ∙ Next.js

AWS로 Next.js 배포하기2 (aws)

    Next.js 배포하기2 (aws)

    1. aws 인스턴스 생성 & git 연동
    2. 우분투에 노드, DB 설치

     

    1. AWS 계정 생성 후 AWS에 로그인

    1) EC2 접속 > Ubuntu 프리티어 인스턴스 생성

    보안 설정

    6단계 ) 보안 그룹 구성에서 HTTP, HTTPS를 허용해줘야 한다.
    * SSH에는 사용자 로컬아이피를 입력하여 해커 접속 방지를 해도 좋음

     

    2) 우분투 접속하기 > aws ec2 환경에 가서 ssh클라이언트에서 예시로 나온 ' ssh -i ~ '주소 복사 > pem이 있는 터미널 경로에 붙여넣는다.

    주의! 키페어 .pem파일을 소스폴더에 넣은 후 git에 소스코드를 올릴 때는 .gitignore 필수로 설정해줘야 한다.

    SSH 주소 복사

     

     

    3) 처음에 우분투에 접속하려 할 때 아래와 같은 에러가 발생할 수 있다. pem파일의 접근권한에 관련한 문제이다.

    에러 해결 방법

     

    접근권한 에러

     

     

    4) pem키를 사용해서 원격에 있는 서버 우분투(aws ec2)로 접속 성공

    EC2 접속 성공

     

    5) 해당 우분투 서버에도 git clone을 한 후 소스코드가 있는 폴더로 이동한다

    git clone

     

     

     

    2-1. 우분투에 Node설치하기

    • $ sudo apt-get update
    • $ sudo apt-get install -y build-essential
    • $ sudo apt-get install curl
    • $ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash --
    • $ sudo apt-get install -y nodejs

     

    (node -v / npm -v 로 설치 확인)

     

     

    $ npm i 로 패키지 설치 후 next build > next start

    build 성공

    • 이런 명령어 대신 해주는 CI/CD 툴이 있는데 (travis CI, circle CI 등..) 이건 나중에 사용하자
    • Docker는 기존 서버 1대 띄우고 sudo apt-get같은 명령어를 적은 후 실행하면 기존과 똑같은 서버를 만들어냄 (컨테이너 방식)

     

    2-2. 우분투 MySql설치하기 

    • $ sudo apt-get install -y mysql-server   

    기본적으로 v5.7 깔린다.

    v8으로 다운받으려면 'install-mysql-8-in-ubuntu' 검색 

     

    1) wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.11-1_all.deb

     

    2) sudo dpkg -i mysql-apt-config_0.8.11-1_all.deb

    4가지 선택 중 'OK' 선택3. sudo apt-get update

     

    3) sudo apt-get install mysql-server


    4) sudo mysql_secure_installation

    • 패스워드 설정 (STRONG)
      • yes 하면 된다.

     

    5) 접속 방법 

    • 'sudo mysql -uroot -p '후 패스워드 입력

     

    6) EC2에 .env 파일 생성

    • $ vim .env

    → a 입력하면 INSERT모드로 변경

    → 파일 내용 직접 입력 후 esc

    → :wq (저장후 종료)

     

    • $ ls -a      : 파일이 생성되었는지 확인
    • $ cat .env : 생성된 파일 내용 확인하기

     

    7) db 생성

    시작하기 전에 아래 명령어로 db 생성

    • $ npx sequelize db:create

     

    8) 서버 실행

    • $ npm start 

     

    주의할점

    1. app.js에 설정한 port번호와 ec2에서 허용한 port번호는 같아야 함 (default: 80)
    2. 접근 거부 에러가 뜨면 명령어 앞에 'sudo'를 붙여라 (sudo npm start)

     


    참고

    인프런 강의 - React로 Nodebird SNS 만들기