새소식

기타

django 80 port로 띄우기(caddy)

  • -

로컬에서 개발하던 django 웹 서버를 AWS로 배포한 뒤, 443 또는 80 포트로 띄우고 싶어서

gunicorn, nginx같은 방법을 알아보다가, 좀 더 빠른 처리를 위해 caddy를 사용했습니다.

caddy는 지금처럼 80 포트 포워딩으로도 써도 되고, letsencrypt HTTPS 인증서 처리도 자동으로 세팅해줘서

무료 HTTPS 설정을 할 때도 용이합니다.

 

Caddy 설치해서 80 -> 8000으로 port forwarding 처리해서 해결했습니다.

 

1. Caddy 설치

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

 

2. Caddy 파일 수정

:80 {
        reverse_proxy localhost:8000
}

기존 부분 제거 후 80포트를  django port (8000)로 포워딩하도록 설정 파일 수정했습니다.

위 파일은 sudo vi /etc/caddy/Caddyfile 로 접근 가능합니다.

 

3. Caddy 재시작

sudo systemctl reload caddy

 

이 때 재시작하다 에러나는 경우가 있는데, 그런 경우 결과 메시지에 나오는 "journalctl -xe" 명령을 입력하면 에러 메시지를 확인할 수 있습니다.

caddy reload 에러

저의 경우는 위처럼, 80 port를 이미 사용중이라는 에러가 떴는데, 설치해둔 nginx가 실행중이라 이런 오류가 발생했습니다.

nginx 종료는 아래 명령으로 해결했습니다.

 

sudo service nginx stop

 

그리고 다시 caddy 실행

sudo service caddy start

 

그리고 리로드는 아래 명령으로 똑같이 하시면 됩니다

sudo systemctl reload caddy

 

그리고 다시 python manage.py runserver 0.0.0.0:8000 으로 진행하면 해결됩니다.

gunicorn이 더 적절한 해결책인 것 같지만 우선 빠른 해결을 위해 이렇게 처리했습니다.

 

참고자료

https://junbuml.ee/caddy-reverseproxy-https

 

Caddy로 Reverse Proxy HTTPS 서빙하기 (feat. Let’s encrypt)

Junbum Lee Personal Notion Site

junbuml.ee

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.