Open ddubbu opened 3 years ago
참고 자료 https://happiestmemories.tistory.com/48
주의사항 ACM 발급 시 위치 N.Virginia 에서
ACM 인증서 만료 및 갱신 확인하기 https://docs.aws.amazon.com/ko_kr/acm/latest/userguide/check-certificate-renewal-status.html
https://docs.aws.amazon.com/ko_kr/acm/latest/userguide/troubleshooting-DNS-validation.html
Amazon Route 53을 DNS 공급자로 선택할 경우, AWS Certificate Manager는 도메인 소유권 검증과 직접 상호작용할 수 있습니다. 콘솔의 Create record in Route 53(Route 53에 레코드 생성) 버튼을 예상한 대로 이용하지 못하는 경우도 있습니다. 이러한 일이 발생할 경우, 다음 발생 가능 원인을 확인합니다.
Route53 에서 domain register (적당한거 구매) > Hosted zones 등록까지해야 생김
domain registration in progress : 약 1시간 걸림
What is Route 53 : https://aws.amazon.com/ko/route53/faqs/
2월4일 아침 6시간 지났는데 ACM 여전히 status : pending validation domain name을 kr-eton.com 만 해서 *kr-eton.com 추가한 2개짜리도 발급했는데 CNAME이 같네 그래서 route53에 추가되는건 없었음.
우선 최대 3일은 기다려보라고 해서 기다리긴 할건데 아마 freenom으로 시도해볼 예정
진짜 한 20분 지나니깐 status : Issued 로 바뀜 ㅜㅜ
Route53에서 구매한 domain 은 acm status : pending validation freenom에서 무료 domain은 완료된 상태
ELB에서 VCP 보안 그룹 설정할 때 EC2의 VPC와 같아야한다고 함. 근데 기존에 있던 EC2 region이 서울이고 ACM 및 ELB는 N.Virginia에 있어서
EC2를 새로 생성해보기로함 (N.Virginia에서)
EC2 생성하고 ELB 에 연결함
elb 생성할때 1.configure load balancer에서 Listener https 추가함!! (ㅋㅋㅋ elb 추가하고 나중에 listenr 추가할수 있넹ㅎㅎ)
https://happiestmemories.tistory.com/48 따라함 중간에 [routing 구성] 설정에서 왜 프로토콜이 http 가 기본인지는 모르겠지만 따라함. 이유
무엇보다 중요한 것은 ELB VPC 선택시 default VPC 말고 연결하고자 하는 EC2 VPC를 선택하자
한 5분도 안되서 elb status active 완료
ELB 정보를 Route53에 연결해야하나봐 그래서 freenom 도메인으로 route53 record 생성하고 NS 4개를 freenom management Tools > Nameservers 에 custom 등록함
그리고 Route53에서 ELB DNS를 A Type 으로 연결함
https://perfectacle.github.io/2017/10/05/letsencrypt-with-certbot-feat-aws/
ELB, EC2, domain, Route53 모두 준비하고 나서
EC2 원격으로 접속하고
코드스테이츠 자료 참고 https://urclass.codestates.com/db4467d3-783c-4f66-95ac-358a2079b8f4?playlist=264
내거 블로그 보면서 nvm 설치하고
그리고 우선 테스트 용으로 express-generator 설치함
그리고 eton-project.tk 접근할 때 무한로딩 뜨길래
Security Group 3000 port 열어줌
eton-project.tk 접속하면 502 Bad Gateway 뜸.
https://ivorycirrus.github.io/TIL/aws-alb-502-bad-gateway/ 에서 //node.js 서버의 keepAliveTimeout 설정 해주어도 안됨.
node 버전 낮추기 15.8.0 0 -> 14.15.1 버전 낮추니깐 npx 키워드 붙이고 pm2 실행해야하네
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html
load balancer 에서 routing (forwarding) https://stackoverflow.com/questions/9024783/how-to-force-node-js-express-js-to-https-when-it-is-running-behind-an-aws-load-b 코드스테이츠 헬데 https://github.com/codestates/help-desk/issues/2505
Node 3000 port 로 하니깐 server log 달라짐
위 에러는 server단에서 /view 로드하려고 해서 생기는 에러 그래서 res.render 삭제하고 res.send 로 해결하니깐 통신은 되는데... 시간 늘려보자 2초에서 60초로
시간 조정은 이미 되어있고 아래 키워드로 검색 시작
ec2 200 status but elb 502
그런데 언제부터 Gateway error 사라지고 post 맨에서는
브라우저에서는 아래 에러 뜸
헬데 질문... 기다리자 https://github.com/codestates/help-desk/issues/2732
Route53 - ELB 연결해서 드디어 되었다. ㅜㅜ 최종본 https://github.com/ddubbu/test-project-deploy/tree/master/test-project
ACM 인증서에서 '검증 보류'가 떠서 도메인에 가서 CNAME type 추가했습니다
발급완료되었습니다.
EC2에서 시험파일을 작성 중이었는데 잘 되지 않아서 https://github.com/ddubbu/test-project-deploy 이걸로 해보겠습니다.
app.js index.js 둘 다 pm2를 해보았으나 되지 않아 새로 작성해서 해보겠습니다.
@ddubbu 님이 올리신 테스트 파일에서 'Hello world' 출력까지 성공했습니다. 이를 위해서는 EC2 인바운드 규칙에서 포트 80을 열어줘야 합니다.
@ddubbu 님이 올리신 테스트 파일 routes/index.js 코드를 그대로 복사해서 제가 만든 폴더에서 실행했는데 Gateway error가 뜹니다. 이 부분을 파악 중입니다.
You need to do res.end instead of res.send. res.send is a part of express module and not of core http module. express 모듈이 설치되어 있지만, res.end로도 바꿔봤습니다. 역시 502 에러 뜹니다.
https://github.com/aesopfrom0/practice-node-server-deploy 지난 AWS 스프린트 때의 파일로도 같은 반응입니다.
로드 밸런서와 이 오류가 관계 있는 것인지 구글링해보겠습니다.
Q. express의 문제인가? 아닌 듯 Q. SSL 인증을 받고 https접속을 받기 위해서는 nginx에 설정을 추가하는 작업? nginx가 뭔가? Q. (PM2 log를 통해 나타나는) fork mode가 무엇인가? 그게 문제인가?
app.listen이 있으면 되는 걸로..
Task Card
Assignee: @ddubbu
Job Description
advanced