[Tistory] Spring boot EC2 Nginx certbot 활용 배포(2)

원글 페이지 : 바로가기

https://plants-growth.tistory.com/33 이전글 이 글은 Spring을 활용하여 배포를 하기 위해 공부했던 내용을 하나로 정리를 하기 위해 작성이 되었습니다. 이전 글에서 build 및 확인을 위한 배포까지 진행을 했고 이번글은 Nginx와 certbot 을 활용하여 무중단 배포하는 방법에 대해서 알아보겠습니다. ! 포트번호는 80번과 443번 미리 열어 놓은 전제로 작성했습니다. ! ubuntu를 사용하고 있습니다. Nginx 설치 sudo apt install nginx // nginx 설치
sudo systemctl start nginx // 설치한 Nginx 가 정상적으로 반영되도록 재시작
ps -ef | grep nginx // 정상적으로 Nginx가 실행되었는지 확인 포트번호 없이 IP주소를 입력해 보면 nginx화면이 나오면 성공입니다. Nginx에서 가상 서버 환경 설정하기 다음으로 Nginx에 관한 추가적인 설정이 필요합니다. 설정을 하는 파일은 크게 두개가 있는데요. /etc/nginx/nginx.conf 와 /etc/nginx/sites-available/default 두개가 있습니다. (/etc/nginx/sites-enabled/default는 /etc/nginx/sites-available/default와 같이 연동이 됩니다.) sites-available의 default 파일만 vim 편집기를 통해 추가적인 설정을 하겠습니다. sudo vim /etc/nginx/sites-available/default 정상적으로 이동했다면 아래와 같은 vim 편집 화면이 나오게 될 겁니다. 이제 아래로 내려가시면 location이 보이게 되는데. 여기를 수정해 주면 됩니다. 전 후 proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host; 저는 현재 8081 포트를 사용하고 있어서 http://localhost:8081 을 했고요. 기본포트라면 8080으로 하시면 됩니다. Nginx 문법에 이상이 없지는 확인 후 nginx를 다시 실행해 주세요. sudo nginx -t
sudo systemctl start nginx 문제가 없다면 성공입니다. certbot 활용 ssl인증서 발급받기 도메인문제 해결하기 이번에는 certbot을 활용하여 ssl 인증서를 받아 https를 적용하도록 하겠습니다. 그 전에 ssl 인증서를 발급받기 위해서는 도메인 주소가 필요한데요. IP주소를 도메인 주소로 활용하는 방법이 있습니다. `.nip.io` 를 붙이는 방법이랑 `.sslip.io` 를 붙이는 방법입니다. ex) 3.34.137.59.nip.io 3.34.137.59.sslip.io 이를 통해 도메인을 구입 하진 않고도 ssl 인증서를 받을 수 있습니다. certbot 설치 sudo snap install –classic certbot 명령 준비 sudo ln -s /snap/bin/certbot /usr/bin/certbot 인증서 발급 후 HTTPS 액세스 자동 활성화 sudo certbot –nginx # default 파일 자동 변경 위 명령어를 사용하면 default 파일을 자동으로 변경을 해 줍니다. 이 부분을 직접 하고 싶으시면 아래 명령어를 사용해 주세요. sudo certbot certonly –nginx # 수동 설정 위 명령어를 입력하면 몇가지 정보를 입력합니다. 첫번째는 이메일로, ssl인증서 성공 여부를 해당 이메일로 보내줍니다. 그리고 Y, Y 누르시면 도메인을 입력하라고 뜨는데. `.nip.io` 나 `sslip.io`를 선택해 입력해 주시면 됩니다. (저는 `.nip.io` 로 하니까 안된다고 해서 `.sslip.io`를 사용했습니다.) 자물쇠 모양의 아이콘이 생겼다면 성공입니다. 확인 sudo systemctl restart nginx
java -jar build/libs/project-board-admin-v1.0.jar 이제 이 두 명령어를 입력하시면 홈페이지가 잘 나오면 정상입니다. 무중단 배포 그런데 이와 같이 배포를 한다면, 터미널이 꺼지면 서버도 종료가 됩니다. 무중단 배포를 하시려면 nohup를 사용해야 합니다. nohup java -jar build/libs/project-board-admin-v1.0.jar & 진짜 완성…. if 재배포를 해야 한다면 우선 아래 명령어를 입력해 주세요. $ ps -ef
$ kill -9 {pid번호} // 서버 종료 그러면 리스트가 쭉 나오는데. 여기서 jar 명령어를 찾아 PID 번호를 찾아주세요. ex) kill -9 16043 서버를 종료하고 다시 입력하면 됩니다. ex) # ex)
sudo systemctl restart nginx
nohup java -jar build/libs/project-board-admin-v1.0.jar & 참고자료 nginx 설치 및 설정 https://velog.io/@msung99/AWS-EC2-Spring-Boot-%EC%84%9C%EB%B2%84-%EB%AC%B4%EC%A4%91%EB%8B%A8-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0 AWS EC2, Nginx 를 활용하여 배포하기 localhost 로 돌리고 있던 본인의 스프링부트 프로젝트를 외부에 배포하고 싶을 때가 있습니다. 사이드 프로젝트를 진행하다보면 백엔드에서 개발한 API 서버를 클라이언트에게 넘겨줘야 할때 어 velog.io IP주소를 도메인주소로 바꾸기 https://velog.io/@jungsangu/Docker%EB%A1%9C-Lets-Encrypt-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%B0%9C%EA%B8%89%ED%95%98%EA%B8%B0-%EB%8F%84%EB%A9%94%EC%9D%B8-%EB%B0%9C%EA%B8%89-%EC%97%86%EC%9D%B4 Docker로 Let’s Encrypt 인증서 발급하기 (도메인 발급 없이) nip.io 도메인과 Docker Certbot으로 Let’s Encrypt 인증서를 발급해보자! velog.io certbot nginx 설치 공식 문서 https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal Certbot Instructions Tagline certbot.eff.org

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다