Next.js 배포하기2 (aws)
- aws 인스턴스 생성 & git 연동
- 우분투에 노드, DB 설치
1. AWS 계정 생성 후 AWS에 로그인
1) EC2 접속 > Ubuntu 프리티어 인스턴스 생성
6단계 ) 보안 그룹 구성에서 HTTP, HTTPS를 허용해줘야 한다.
* SSH에는 사용자 로컬아이피를 입력하여 해커 접속 방지를 해도 좋음
2) 우분투 접속하기 > aws ec2 환경에 가서 ssh클라이언트에서 예시로 나온 ' ssh -i ~ '주소 복사 > pem이 있는 터미널 경로에 붙여넣는다.
주의! 키페어 .pem파일을 소스폴더에 넣은 후 git에 소스코드를 올릴 때는 .gitignore 필수로 설정해줘야 한다.
3) 처음에 우분투에 접속하려 할 때 아래와 같은 에러가 발생할 수 있다. pem파일의 접근권한에 관련한 문제이다.
4) pem키를 사용해서 원격에 있는 서버 우분투(aws ec2)로 접속 성공
5) 해당 우분투 서버에도 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
- 이런 명령어 대신 해주는 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)
참고
'Dot Programming > React ∙ Next.js' 카테고리의 다른 글
[React] 더미데이터를 만들 때 필요한 Shortid, faker 라이브러리 (0) | 2021.01.20 |
---|---|
[React/ Next.js] Redux-saga 설치 및 알아보기 (vs thunk / generator, effect) (0) | 2021.01.16 |
AWS로 Next.js 배포하기3 (pm2) (0) | 2021.01.14 |
AWS로 Next.js 배포하기1 (next.config .js) (0) | 2021.01.14 |
[Next.js] CSS(styled-components) 서버사이드 렌더링(SSR) (0) | 2021.01.11 |