본문 바로가기
Programming/Python

[Django] 도메인 연결을 위한 Nginx 설정

by 느리게 걷는 즐거움 2022. 11. 30.
728x90
반응형

1. Ngnix 설치

apt-get install nginx

2. Nginx 설정 파일 생성 및 업데이트

nginx 설정으로 외부 IP 80 port로 전달된 request를 내부 ip 8000port로 연결한다.

vi /etc/nginx/site-enabled/django-website

server {
	listen 80;
    server_name : [외부 ip 정보]
    
    location / {
    	proxy_pass http:127.0.0.1:8000/;
    }
}

여기서 외부 IP를 도메인에 연결한 경우 server_name을 자신이 등록한 도메인 이름으로 작성한다.
예를 들어 test.com 도메인 인 경우

server_name : test.com www.test.com

와 같이 server_name을 작성한다. 변경이 완료된 후 nginx를 아래 명령어로 재시작한다.

sudo systemctl restart nginx

장고 프로젝트를 runserver를 이용하여 deploy하지 않는 경우 static파일들을 "collectstatic"파일을 통해서 폴더에 모으는 작업이 필요하다.

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

이때 static파일들을 모을 폴더의 위치를 settings.py에서 STATIC_ROOT라는 변수로 저장한다. 위와 같이 장고 프로젝트의 위치인 BASE_DIR 위치에 'static'과 'media'폴더를 생성하고 각각을 STATIC_ROOT와 MEDIA_ROOT로 지정한다.

"python3 manage.py collectstatic" 명령을 수행하여 INSTALLED_APP 목록의 장고 앱들의 static 폴더들이 STATIC_ROOT 위치로 옮길 수 있다. 그리고 STATIC_ROOT에 이동된 static파일을 사용하기 위해서 nginx에 STATIC_ROOT 위치를 추가해야 한다.

server {
	listen 80;
    server_name [자신의 도메인이름.com] [www.자신의 도메인이름.com]
    
    location / {
    	proxy_pass http://127.0.0.1:8000/;
    }
    location /static/ {
    	alias [자신의 장고 프로젝트의 STATIC_ROOT 절대경로]/;
    }
}

위와 같이 /static/ 부분을 추가해서 css등의 static 파일을 장고 프로젝트에서 사용할 수 있도록 한다.

728x90
반응형