본문 바로가기
웹개발/aws

NEXT.js Elastic Beanstalk으로 배포하기

by julysein 2021. 10. 25.
728x90

1. Git 설정

먼저 git을 이용하지 않고 있는 경우 git init, git add, commit 를 통해 배포할 내용을 지정해준다.

 

2. eb init -i

eb init -i

2-1. 배포할 지역 선택

Seoul 에 배포하고자 하여 10 선택

2-2. 배포할 Application 선택

새로운 application으로 배포하고자 했기 때문에 마지막 번호를 선택하여 이름을 설정해주었다.

2-3. 코드의 언어를 선택

react는 node 기반이기 때문에 7을 선택해준다.

2-4. 플랫폼 사양 선택

default를 선택했다.

2-5. ssh key 생성

새로운 키 페어를 만들어서 비밀번호를 설정한다.

 

3.ebextentions

.ebextentions 라는 폴더를 만들고 안에 options.config 파일을 생성한다.

root에 직접 생성을 해준다.

option_settings:
  aws:elasticbeanstalk:application:environment:
    NODE_ENV: production

그리고 다음과 같이 저장해주면 완성

 

4. eb create

4-1. 터미널에 eb create를 입력한다.

eb create

이름을 지정해서 바로 만들어줄 수도 있지만 그렇게 하면 application(3-3)의 타입을 지정해줄 수 없기 때문에 eb create라는 명령어를 이용해서 대화형으로 생성해준다.

4-2. eb application의 이름을 설정해준다.

4-3. Load banlancer typedms 2번 application으로 지정해주는 것이 좋다.

4-4. 둘 다 n, n을 선택해준다.

 

5. 기다리면 배포가 완료된다.

eb open을 통해 페이지를 열 수 있다.

eb open

 

 

 

 

기타 삽질 후기

1. procfile을 추가해라

Instance deployment failed to generate a 'Procfile' for Node.js. Provide one of these files: 'package.json', 'server.js', or 'app.js'. The deployment failed.

 

 

계속 인터넷을 뒤져보는데 아무 정보도 안 나오고 비슷한 에러를 겪었다는 사람도 없어서 너무 당황스러웠다.

몇 가지 해결책으로 .ebignore도 추가해보고 .gitignore도 확인했는데 둘 다 안에 package.json도 없고 git 저장소에도 잘 올라가 있었다.

 

몇 시간 동안 난리치던 끝에 찾았던 문제점 :

package.json이 있는 위치에서 eb deploy를 해야 했던 건데 그냥 계속 그 바깥의 폴더가 있는 root에서 배포를 하고 있었다... (폴더가 이중으로 특이한 형식으로 되어 있어서 계속 헷갈렸던 것 ㅜㅜ)

 

2. module이 없다.

Error: Cannot find module 'terser-webpack-plugin'

이 모듈이 없다고 계속 nginx 502 Bad Gateway오류가 떴는데

package.json을 보니 저 모듈이 devDependencies에 들어있어서 dependencies로 위치를 옮겨줬다.

 

 

참고

https://medium.com/swlh/how-to-deploy-your-nextjs-project-on-elastic-beanstalk-in-5-minutes-7f6bbd8b05be

728x90