개발이야기

호스팅 이전 작업중 labs.junho85.pe.kr

준호씨 2023. 10. 21. 10:32
반응형

기존 목표는 6월이 되기 전에 호스팅을 이전하는 것이었는데요. 바쁘다는 핑계로 아직까지 진행형입니다.

 

가상서버호스팅 이사가기. 스쿨호스팅 -> VULTR로의 이전 검토

가상서버호스팅을 좀 옮겨 볼까? VULTR? 개인적으로 스쿨 호스팅에서 가상 서버호스팅을 받고 있습니다. 스쿨호스팅 최저가,최대트래픽 국내최대개발자커뮤니티 phpschool.com 과 함께하는 월400원,

junho85.pe.kr

 

이번에 labs.junho85.pe.kr 이전작업을 했는데 간단히 기록을 남겨 봅니다.

labs.junho85.pe.kr는 html 파일로 이루어져 있어서 특별한 세팅이 많이 필요하지 않은 간단한 홈페이지입니다.

소스코드는 https://github.com/junho85/labs 에 있어서 /var/www/ 경로에 clone 받고 nginx를 설정해 주었습니다.

 

nginx 설정은 /etc/nginx/sites-enabled/labs.junho85.pe.kr 파일을 만들어 주고 다음과 같이 내용을 작성하였습니다.

server {
    root /var/www/labs;

    index index.html index.htm index.nginx-debian.html;

    server_name labs.junho85.pe.kr;

    location / {
        try_files $uri $uri/ =404;
    }
}

설정을 바꿨을 때 문제가 없는지 확인하려면 nginx -t 명령을 사용해 보면 됩니다. 그리고 systemctl restart nginx 명령어로 nginx를 재시작하여 설정을 적용합니다.

 

잘 동작하는지 확인하기 위해 맥북에서 /etc/hosts 파일을 수정해 줍니다. vultr 호스팅 IP는 158.247.226.178 이기 때문에 다음과 같이 설정을 추가해 주었습니다.

158.247.226.178 labs.junho85.pe.kr

 

http://junho85.pe.kr 에 접속해서 내용이 잘 나오면 성공입니다.

 

https 설정 - certbot

certbot --nginx -d labs.junho85.pe.kr

명령어를 이용하면 인증서를 설정하고 기존 /etc/nginx/sites-enabled/labs.junho85.pe.kr 설정을 https에 맞게 바꿔주게 되는데요.

 

오류가 발생하면서 실패합니다.

root@vultr:/etc/nginx/sites-enabled# certbot --nginx -d labs.junho85.pe.kr
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for labs.junho85.pe.kr

Certbot failed to authenticate some domains (authenticator: nginx). The Certificate Authority reported these problems:
  Domain: labs.junho85.pe.kr
  Type:   unauthorized
  Detail: 115.71.237.125: Invalid response from https://labs.junho85.pe.kr/.well-known/acme-challenge/MumTu2oN7cPs6zmXp3l3W_WeUhN-C8ALJrHlvJApfzg: 404

Hint: The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet.

Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

 

아무래도 아직 도메인의 IP가 이전하기 전 호스팅 서버로 되어 있기 때문인 거 같습니다. 저는 가비아에서 도메인을 관리하기 때문에 가비아에서 설정을 바꿔 주었습니다.

 

 

certbot 명령어로 다시 설정해 봅니다.

certbot --nginx -d labs.junho85.pe.kr

 

/etc/nginx/sites-enabled/labs.junho85.pe.kr 설정이 다음과 같이 바뀝니다.

server {
    root /var/www/labs;

    index index.html index.htm index.nginx-debian.html;

    server_name labs.junho85.pe.kr;

    location / {
        try_files $uri $uri/ =404;
    }


    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/labs.junho85.pe.kr/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/labs.junho85.pe.kr/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
    if ($host = labs.junho85.pe.kr) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



    server_name labs.junho85.pe.kr;
    listen 80;
    return 404; # managed by Certbot


}

 

다만 이러한 순서로 작업하면 아무래도 도메인 변경 내용이 전파되는 과정 중 https 서비스가 잠시 동작하지 않을 수 있는데요. 서비스 중단 없이 매끄럽게 이전하려면 인증서를 수동으로 세팅해 주거나, certbot을 사용하려면 TXT 레코드 설정 및 --manual, --preferred-challenges dns 옵션을 이용하는 방법을 사용할 수 있는 것으로 보입니다.

 

참고: https://www.lesstif.com/system-admin/dns-txt-record-let-s-encrypt-ssl-59343172.html

 

DNS TXT Record 로 Let's Encrypt SSL 인증서 발급 받기

 

www.lesstif.com

저는 아직 중요한 서비스를 운영하고 있지는 않아서 괜찮긴 한데 다음에는 TXT 레코드 설정을 이용해서 인증서를 받는 방법도 사용해 봐야겠습니다.

반응형