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로 위치를 옮겨줬다.
참고
'웹개발 > aws' 카테고리의 다른 글
EB deploy error notfounderror, invalidparametervalueerror (0) | 2022.02.16 |
---|---|
git branch로 테스트서버를 만들어보자 (feat. 반성하는 글...) (0) | 2022.02.16 |
eb deploy time-out (0) | 2021.10.04 |
putty 창을 꺼도 계속해서 서버가 돌아가도록 하기 (django) (0) | 2020.09.26 |
[AWS에 작성한 django 업로드하기] 3. putty로 접속하기 (0) | 2020.09.19 |