[Spring] AWS EC2, Github Actions, Docker, Nginx를 활용한 무중단 배포(2)
무중단 배포 구현하기 - (2)
- Nginx 설치
- Nginx 세팅
- Nginx의 역할: 8080 blue 서버가 정상적으로 작동하고 있다면 green 서버를 켠다
green 서버가 정상적으로 작동하면 Nginx가 green 서버를 가리키게 되고 blue와의 연결을 끊고 서버를 중지한다
8081 green 서버가 정상적으로 작동하고 있다면 blue 서버를 켠다
blue 서버가 정상적으로 작동하면 Nginx가 blue 서버를 가리키게 되고 green과의 연결을 끊고 서버를 중지한다 - 즉, 서버의 중단 없이 무중단 배포가 가능하게 된다
[5] Nginx 설치
Trouble Shooting 1
- 실행되고 있지 않으므로 아래의 명령어를 실행한다
- 도커 시작
sudo systemctl start docker
- root라는 사용자를 도커그룹에 추가 & 권한 설정
sudo usermod -aG docker root
- 도커 재실행
sudo systemctl restart docker
- 도커 실행중인지 확인
systemctl status docker
트러블 슈팅 해결!!
도커 컨테이너를 실행한다
docker container run --name nginxserver -d -p 80:80 nginx
Trouble Shooting 2
먼저 아래 명령어로 현재 실행중인 도커 컨테이너 확인한다
docker ps -a
트러블 슈팅 해결!!
다시 도커를 해당 컨테이너에 올려서 Nginx를 실행시킨다
docker container run --name nginxserver -d -p 80:80 nginx
도커, nginx 설치 완료!
[6] Nginx 세팅
Nginx 에 접속
외부에서 접속시 EC2 안에 가상의 공간으로 들어가야 Nginx에 접속할 수 있다
docker exec -it nginxserver bash
(Ngnx에서 나올 때 명령어)
exit
주요 편집기 설치(vim, nano)
- vim은 내용 수정 전 전체 삭제시 용이
nano는 변경사항을 줄바꿈, 들여쓰기 그대로~ 붙여넣기가 가능해서 구분해서 사용한다
vim 에디터 설치
apt-get update
apt-get upgrade
apt-get install vim
- nano 에디터 설치
apt-get update
apt-get upgrade
apt-get install nano
Nginx default.conf 파일 생성 및 설정
Tip: + Tab 키 누르면 하위 폴더가 보여짐
나갈 때: Esc키 누르고 :q(저장하지 않고 나감) 또는 :wq(저장하고 나감) 입력 하면 화면에서 나간다 (왼쪽 하단에 집중)
전체 내용 삭제: ggDG 한글자씩 입력하면 한번에 삭제가 가능하다
default.conf 전체 파일
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
upstream blue { server 44.219.159.74:8080; } upstream green { server 44.219.159.74:8081; } server { listen 80; listen [::]:80; server_name api.eroom-challenge.com; include /etc/nginx/conf.d/service-env.inc; location / { proxy_pass http://$service_url; # reverse proxy의 기능 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; root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
service-env.inc 파일 생성 및 설정
- service_url을 green으로 set
1
nano service-env.inc
- service-env.inc 파일
- 초기 서버세팅을 green 서버로 진행하겠다는 뜻
1
set $service_url green;
주의 할점
- Nginx의 default.conf 파일과 service-env.inc 파일을 생성 및 수정 할 때
- 반드시
docker exec -it nginxserver bash
이 명령어로 Nginx 서버에 접속 후 진행해야 된다는 점을 잊지 말자!!
This post is licensed under CC BY 4.0 by the author.