codestates / ETON-server

0 stars 0 forks source link

[Task] AWS 배포 준비 - Server #23

Open ddubbu opened 3 years ago

ddubbu commented 3 years ago

Task Card

Assignee: @ddubbu

Job Description

advanced

ddubbu commented 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

ddubbu commented 3 years ago

이슈 발생

https://docs.aws.amazon.com/ko_kr/acm/latest/userguide/troubleshooting-DNS-validation.html

ACM 콘솔에서 "Route 53 에 레코드 생성" 버튼이 나타나지 않음

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/

ddubbu commented 3 years ago

2월4일 아침 6시간 지났는데 ACM 여전히 status : pending validation domain name을 kr-eton.com 만 해서 *kr-eton.com 추가한 2개짜리도 발급했는데 CNAME이 같네 그래서 route53에 추가되는건 없었음.

우선 최대 3일은 기다려보라고 해서 기다리긴 할건데 아마 freenom으로 시도해볼 예정

freenom acm 연결방법 https://velog.io/@zeros0623/%EB%AC%B4%EB%A3%8C%EB%8F%84%EB%A9%94%EC%9D%B8%EA%B3%BC-AWS-Certificate-ManagerACM%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-SSL-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%96%BB%EA%B8%B0-rdk4meryd4

진짜 한 20분 지나니깐 status : Issued 로 바뀜 ㅜㅜ

ddubbu commented 3 years ago

현재상황

Route53에서 구매한 domain 은 acm status : pending validation freenom에서 무료 domain은 완료된 상태

하고 있는 것

ELB에서 VCP 보안 그룹 설정할 때 EC2의 VPC와 같아야한다고 함. 근데 기존에 있던 EC2 region이 서울이고 ACM 및 ELB는 N.Virginia에 있어서

EC2를 새로 생성해보기로함 (N.Virginia에서)

ddubbu commented 3 years ago

EC2 생성하고 ELB 에 연결함

elb 생성할때 1.configure load balancer에서 Listener https 추가함!! (ㅋㅋㅋ elb 추가하고 나중에 listenr 추가할수 있넹ㅎㅎ)

https://happiestmemories.tistory.com/48 따라함 중간에 [routing 구성] 설정에서 왜 프로토콜이 http 가 기본인지는 모르겠지만 따라함. 이유 image

무엇보다 중요한 것은 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 으로 연결함

ddubbu commented 3 years ago

나중에 해볼만한것

공짜로 HTTPS 열기 있다고 함, 이건 elb 안쓰고 ngix 이런거 쓴다고 함. (안써봄)

https://perfectacle.github.io/2017/10/05/letsencrypt-with-certbot-feat-aws/

http to https redirection

https://medium.com/@yangga0070/aws-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%84%9C-http-https-%EB%A6%AC%EB%8B%A4%EC%9D%B4%EB%A0%89%EC%85%98-37c1039be0ab

ddubbu commented 3 years ago

ELB, EC2, domain, Route53 모두 준비하고 나서

EC2 원격으로 접속하고

코드스테이츠 자료 참고 https://urclass.codestates.com/db4467d3-783c-4f66-95ac-358a2079b8f4?playlist=264

내거 블로그 보면서 nvm 설치하고

https://kr-ddubbu.tistory.com/44

그리고 우선 테스트 용으로 express-generator 설치함

https://junjangsee.tistory.com/entry/express-generator%EB%A1%9C-%EB%B9%A0%EB%A5%B4%EA%B2%8C-express-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

그리고 eton-project.tk 접근할 때 무한로딩 뜨길래

Security Group 3000 port 열어줌

ddubbu commented 3 years ago

문제상황

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 실행해야하네

ddubbu commented 3 years ago

Elastic BeanStalk for express ?

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html

ddubbu commented 3 years ago

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 image

Node 3000 port 로 하니깐 server log 달라짐 image

위 에러는 server단에서 /view 로드하려고 해서 생기는 에러 그래서 res.render 삭제하고 res.send 로 해결하니깐 통신은 되는데... 시간 늘려보자 2초에서 60초로

ddubbu commented 3 years ago

시간 조정은 이미 되어있고 아래 키워드로 검색 시작

ec2 200 status but elb 502

그런데 언제부터 Gateway error 사라지고 post 맨에서는 image

브라우저에서는 아래 에러 뜸 image

ddubbu commented 3 years ago
  1. hostname 추가 /etc/hosts 파일 열어서 localhost 대신 hostname 추가했으나 노노 http://blog.naver.com/PostView.nhn?blogId=wnsdud98&logNo=220145962715&redirect=Dlog&widgetTypeCall=true&directAccess=false
ddubbu commented 3 years ago

헬데 질문... 기다리자 https://github.com/codestates/help-desk/issues/2732

Route53 - ELB 연결해서 드디어 되었다. ㅜㅜ 최종본 https://github.com/ddubbu/test-project-deploy/tree/master/test-project

aesopfrom0 commented 3 years ago

ACM 인증서에서 '검증 보류'가 떠서 도메인에 가서 CNAME type 추가했습니다

스크린샷 2021-02-05 11 11 56
aesopfrom0 commented 3 years ago
스크린샷 2021-02-05 11 27 31

발급완료되었습니다.

aesopfrom0 commented 3 years ago

EC2에서 시험파일을 작성 중이었는데 잘 되지 않아서 https://github.com/ddubbu/test-project-deploy 이걸로 해보겠습니다.

aesopfrom0 commented 3 years ago

app.js index.js 둘 다 pm2를 해보았으나 되지 않아 새로 작성해서 해보겠습니다.

aesopfrom0 commented 3 years ago

@ddubbu 님이 올리신 테스트 파일에서 'Hello world' 출력까지 성공했습니다. 이를 위해서는 EC2 인바운드 규칙에서 포트 80을 열어줘야 합니다.

스크린샷 2021-02-05 16 26 28
aesopfrom0 commented 3 years ago

@ddubbu 님이 올리신 테스트 파일 routes/index.js 코드를 그대로 복사해서 제가 만든 폴더에서 실행했는데 Gateway error가 뜹니다. 이 부분을 파악 중입니다.

aesopfrom0 commented 3 years ago

https://stackoverflow.com/questions/49571642/javascript-node-js-res-send-is-not-a-function-error/49571690

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 스프린트 때의 파일로도 같은 반응입니다.

로드 밸런서와 이 오류가 관계 있는 것인지 구글링해보겠습니다.

aesopfrom0 commented 3 years ago

Q. express의 문제인가? 아닌 듯 Q. SSL 인증을 받고 https접속을 받기 위해서는 nginx에 설정을 추가하는 작업? nginx가 뭔가? Q. (PM2 log를 통해 나타나는) fork mode가 무엇인가? 그게 문제인가?

aesopfrom0 commented 3 years ago

app.listen이 있으면 되는 걸로..