다른 글들을 조합해서 하다 보니.... 매번 여러 블로그 찾아서 해야하고 막상 다 하고나서도 까먹어서 다시 찾고..이게 반복되서 그냥 내 블로그에 찾아와야겠다~ 생각 들어서 이 게시글을 쓰게 됐다.
아래 기본 셋팅과 환경에서 진행한다고 생각한다.
- ubuntu 환경
- ncp든..aws든.. 뭐든 ?
- docker에 server, db image
- 이미지 정도는 다른거 참고해서 받아오자
- http 배포
http
배포 또한..이미 되있는 상태라고 가정
- 가비아 도메인 구매
- 암거나.. 뭐 가비아든 뭐든 DNS 설정할 수 있는건 anything?
- Server : 8080 port, DB 3306 POrt를 이용할거고 이 두개가 docker network 연결되있음.
그렇다면 목표는
http -> https 배포
해야할것은
nginx
설정cerbot
셋팅 withDNS
설정https
기쁨 만끽하기
경로 : etc/nginx/nginx.conf
root@swipe-jeju:/etc/nginx# vim nginx.conf
나는 swipe-jeju라서 이렇게 들어갔다.
이제 vim으로 열어주는데 뭐 어쩌고 저쩌고~ 있는데
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/server.conf;
}
여기를 집중하자
include /etc/nginx/sites-enabled/server.conf;
이 부분은 서버마다 다를 수 있는데 아마 기본적으로
include /etc/nginx/sites-enabled/*;
이렇게 전체라고 되어 있을 수 있다.
그런데 일단.. 우리는 server.conf 파일을 만들어서 해당 파일을 토대로 진행해줄거니 위와 같이 적어주자.
자, 그럼 이제 뭐 해야할까?
당연히...
그런데 우리 서버에는 아마 sites-enabled, sites-available 두개가 있을거다.
이 두개 차이가 뭐냐?
nginx의 sites-enabled과 sites-available 디렉토리는 서버 설정 파일을 관리하는 데 사용됩니다.
sites-available: 이 디렉토리에는 사용 가능한 모든 사이트 설정 파일이 들어 있습니다. 이 파일들은 현재 활성화되지 않았지만 필요할 때 활성화할 수 있습니다.
sites-enabled: 이 디렉토리에는 현재 활성화된 사이트 설정 파일의 심볼릭 링크가 들어 있습니다. 이 링크들은 실제로 nginx가 사용하는 설정 파일들을 가리킵니다. 활성화된 사이트는 실제로 nginx에 의해 서비스됩니다.
일반적으로 nginx 설정에서는 sites-available에 설정 파일을 생성하고, 필요할 때 해당 파일을 sites-enabled로 심볼릭 링크를 만들어 활성화합니다. 이를 통해 설정 파일을 쉽게 활성화 및 비활성화할 수 있습니다.
뭐 이렇단다.
그치만, 우리의 관심은 https배포니 available로 이동해서 server.conf를 만들어보자
root@swipe-jeju:/etc/nginx/sites-available# vim server.conf
아까와 같이 vim으로 열어준다
upstream jeju-swiping-was {
server 127.0.0.1:8080;
}
server {
server_name jeju-back.swiping.kr;
location / {
proxy_pass http://jeju-swiping-was;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connetion upgrade;
proxy_set_header Host $host;
proxy_set_header Accept-Encoding gzip;
}
}
server {
server_name jeju-back.swiping.kr;
listen 80;
}
이와 같이 설정해준다
그런데... 원래 이러면 되는데 나는 요상하게 enabled를 수정해줘야 됐다
혹 모르니 그냥 지금은 둘다 저걸로 해주자.
그 후 nginx reload 또는 restart 한번 해주자
만약 reload했을때 pid 못찾아~
error: invalid PID number "" in "/var/run/nginx.pid"
이러면
sudo service nginx start
이거해주자 그냥 시작을 안해서 리스타트를 못하는거다.
참고로 리로드 리스타는
// Restart
sudo service nginx restart
// Reload
nginx -s reload
이와 같다.
뭐 어쩌고 적용됐다~ 하고 잘 뜨면 된거고 에러나면 서칭해서 찾아보자
잘됐다고 간주하고 이제 cerbot setting을 해줄거다.
apt-get inall certbot python3-certbot-nginx
certbot -d {너의 도메인} --manual --preferred-challenges dns certonly
예시)
certbot -d naver.com --manual --preferred-challenges dns certonly
이러면 블라라 나오는데
y, y 누르다 보면
Please deploy a DNS TXT record under the name:
_acme-challenge.{너의 도메인 네임서버}
with the following value:
`chVJah312312937821czxlkncxznldsadnQGc`
뭐 이런 얘기가 나온다
그러면 이제 본인 도메인 DNS에 가서
이렇게 txt, a record에 추가해주자
그리고 바로 엔터 누르지말고 한 30초 정도 머엉 때리다가 엔터누르면 성공~
이라고 뜬다
그 후 http를 https로 라우팅해주는것도 해줄까 하면 y이나 엔터 누르면 된다.
그러면 거의 끝났다.
이제
certbot --nginx -d {너의 도메인}
1: Attempt to reinstall this existing certificate
2: Renew & replace the certificate (may be subject to CA rate limits)
---
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Deploying certificate
뭐 이런 얘기가 나오는데 1로 누르면 와다다 될거다.
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx -t를 눌러서 성공적으로 된거 확인해보고
vim ./etc/nginx/nginx.conf
여기 들어가서 #certbotonly
이런거 잘 있는지도 확인하고~
nginx -s reload
하면 이제 https로 접속이 성공적으로 될것이다.
뭐 그러면...빠르게 하기 위해서 명령어만 적어두겠다.
certbot부터... 엔지닉스 설명까지는 보거나 본인 방식대로 해서 어찌저쩌 되있다고 생각하고...
apt-get inall certbot python3-certbot-nginx
certbot -d {너의 도메인} --manual --preferred-challenges dns certonly
본인 도메인 구매 사이트 DNS가서 txt record 추가
적용
certbot --nginx -d {너의 도메인}
1
nginx -t
nginx -s reload
테스트하고 리로드하기
끝~