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)
이를 통해 도메인을 구입 하진 않고도 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 설치 및 설정
IP주소를 도메인주소로 바꾸기
certbot nginx 설치 공식 문서
https://certbot.eff.org/instructions?ws=nginx&os=ubuntufocal
'개발 > Spring Boot 배포' 카테고리의 다른 글
Spring Boot AWS EC2 배포(1) (0) | 2023.11.09 |
---|