EC2 인스턴스를 사용한다.
ec2 인스턴스를 만든다
인스턴스 시작을 클릭하면 된다.
18.04 버전을 선택한다.
다음: 인스턴스 세부 정보 구성을 클릭한다
스토리지 추가를 클릭한다
인스턴스 용량을 정할 수 있는 부분이다. 적당히 정한다.
다음: 태그 추가를 클릭한다.
태그에 Name 을 하나 지정했다.
Name 이라고 적어두면 나중에 식별할 때 편하다
다음: 보안그룹 구성을 클릭한다.
ssh를 내 아이피로 지정한다.
이걸 전체 공개하면 누구나 접속해서 파일을 업로드하고 지울수도 있다.
http, https 도 열어둔다.
검토 시작을 클릭한다.
시작하기를 클릭한다.
기존 키페어를 쓰거나 새 키페어를 생성하고 [인스턴스 시작]을 클릭한다.
이제 탄력적 IP를 발급 받습니다.
인스턴스에 고정 ip 를 발급받는 과정입니다.
탄력적 IP를 클릭한다.
탄력적 ip 주소 할당을 클릭한다.
할당 클릭
태그를 클릭하고 태그 관리를 클릭한다.
태그를 적는다.
저장한다.
이제 인스턴스를 할당한다.
Actions 를 클릭하고 인스턴스를 지정하면 된다.
인스턴스 목록에서 고른다.
아래 그림처럼 작성하고
연결을 클릭한다.
자 이제 ssh 를 사용해서 접속해보겠습니다.
sudo ssh -i <pem 키 파일 위치> ubuntu@<주소>
접속을 했다면 nginx 를 설치해보겠습니다.
nginx 는 나중에 서버에 접속했을때 앱을 보여주기 위해서 설치합니다. 또한 최근 서버 개발자 중에서 Nginx 를 사용할줄 아는 개발자는 굉장히 많습니다.
접속했다면 아래와 같이 표시됩니다.
nginx 는 아래 명령어로 설치합니다.
sudo apt-get install nginx
이제 ip 주소로 접속하면 nginx 가 표시됩니다.
이제 nginx 가 스프링의 포트 8080으로 리다이렉트 시켜주도록 설정한다.
nginx 설정 파일을 바꿔주면 된다.
https://eladnava.com/binding-nodejs-port-80-using-nginx/
수정하는 방법은 위의 링크에 있는 명령어 3줄을 차례대로 입력하면 된다.
1. sudo su
2. sudo rm /etc/nginx/sites-enabled/default
3.sudo nano /etc/nginx/sites-available/node
4. 아래 내용 입력
80번 포트에 대해서 listen 이라고 적혀있다.
8080 포트로 요청을 보내주면 된다.
server {
listen 80;
server_name example.com;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass "http://127.0.0.1:1337";
}
}
저장 하려면 이렇게 편집을 마친 상태에서 Ctrl + O 를 눌러줍니다.
그리고 엔터를 누릅니다.
여기서 Ctrl + X 를 누릅니다.
작성이 완료됩니다.
5. nginx 를 재시작한다.
sudo service nginx restart
sudo su 명령어를 안쓰면 아래와 같은 상황이 생길 수 있다.
괜히 암호 찾는다고 시간 쓰지 말자.
sudo su 명령어를 치고 진행해야한다.
그리고 service nginx restart 를 하면 된다.
이제 접속하면 8080 포트로 우회 했기 때문에 스프링 부트 앱이 보인다.
자 이제 https 를 입히면 된다.
로드밸런서를 사용하면 쉽게 할 수 있다.
로드밸런서 생성 클릭
application loadbalancer 를 선택한다.
https, http 를 열고 가용 영역을 선택한다.
2개 이상 골라줘야 한다.
2a , 2c 고르면 무난하다.
골랐으면 보안 설정 구성을 클릭한다.
인증서를 고른다.
보안그룹 구성을 클릭한다.
이전에 ec2 에 지정한 보안 그룹을 고르고 다음을 클릭한다.
라우팅 구성을 클릭한다.
새 대상 그룹을 만들면 인스턴스를 선택하는 화면이 나타난다.
지금 진행 중인 ec2 인스턴스를 선택한다.
이름을 적고 대상 등록을 클릭한다.
다음 검토를 클릭한다.
생성 한다.
생성을 완료 했다면 이제 route 53으로 간다.
url 로 접속했을때 로드밸런서로 가도록 지정해준다.
레코드 세트를 만듭니다.
ㅁㅁㅁ.<도메인 주소> 를 적었을때 로드밸런서가 응답하도록 지정해줍니다.
여기까지 했다면 nginx 사이트에 https 로 접속이 될 것입니다.
이제 스프링 부트 애플리케이션을 서버에 업로드 할 차례입니다.
지금까지의 내용과 하는 방식을 정리하면 이렇습니다.
여기서 80번 포트로 접속했을때 스프링 부트 애플리케이션으로 가도록 해주면 됩니다.
gradle assemble 로 jar 파일을 빌드합니다.
빌드가 되었다면 jar 파일이 생깁니다.
그리고 ec2 인스턴스에 scp 명령어를 사용해서 옮기고 실행합니다.
sudo scp -i pem키 복사할파일 ubuntu@서버주소:/경로/경로
복사했다면 실행하면 된다.
그런데 아직 자바가 설치되어 있지 않다.
자바를 설치한다. 안된다면 sudo apt-get update 하고 난 후에 설치한다.
sudo apt install openjdk-11-jre-headless
java -jar aaa.jar
이때 실행이 안된다면 지금 개발한 RDB 서비스에서 ec2 의 주소를 허가 했는지 확인하자.
ec2 인스턴스의 보안 그룹을 선택하고 규칙을 저장한다.
실행한 프로세스는 아래 글을 참고해서 끄고 나오면 된다.
명령어 순서
ctrl z
bg
disown
exit
이제 도메인 주소로 접속해보겠습니다.
https 로 서비스가 배포되었습니다.
- 추가사항
Mysql 을 쓰는 경우 한글이 insert 되지 않는다면 아래 사항을 변경해주세요
Mysql 은 5.xx 버전을 사용하시면 RDS에서 추가로 utf8 설정을 해야합니다.
8.xx 버전을 선택하면 아래 명령어 2줄로 utf8 설정을 마칠 수 있습니다.
ALTER TABLE (테이블명) convert to charset utf8;
또는
ALTER DATABASE (데이터베이스 이름) DEFAULT CHARACTER SET utf8;
- 추가 사항
우분투 ec2에 깃 설치하기
sudo apt-get install git
우분투에 노드js 설치하기
github.com/nodesource/distributions/blob/master/README.md
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
ssh 키 생성하기
ssh-keygen
pm2 - typescript 설치하기
sudo su
npm install -g pm2
## Add the new typescript dependency in PM2:
pm2 install typescript
## Start app.ts in watch & restart:
pm2 start app.ts --watch
-------
배포 원리
Route53에 있는 도메인 주소 -> ELB로 이동 -> ELB (80포트)로 이동 -> ELB(443포트)로 이동 -> EC2(80포트)로 이동 -> Nginx가 ec2 80을 -> ec2 3000으로 이동시킴 (스프링이면 8080)
이 상태에서 3000(또는8080)에 nodejs, 스프링 서버 띄우기
'Azure | AWS' 카테고리의 다른 글
깃허브 EKS 배포 자동화 구축하기 (0) | 2020.05.16 |
---|---|
Azure Devops 팀즈 배포 알림 설정하기 (0) | 2020.05.15 |
AWS S3와 Cloudfront를 활용한 배포 방법 정리 - 프론트엔드 편 (2) | 2020.05.14 |
EKS를 도입하면서 정리한 글 - 쿠버네티스 ImagePullBackOff , Image 에러 해결 (2) | 2020.04.20 |
aws aurora db 연결하기 - 엔드포인트 오류 해결 (0) | 2020.04.17 |
댓글