Django nginx 연결하기

Youngkwon Kim·2022년 7월 28일
0

Django

목록 보기
2/3
post-thumbnail

지난시간에 uWSGI 연결을 완료한 장고 프로젝트를 nginx와 연결하려 한다.
nginx는 대표적인 웹 서버 애플리케이션이다.

1. nginx 설치하기

먼저 nginx를 설치한다. (간단하쥬~)

$ sudo apt-get install -y nginx

2. nginx 사용자 수정하기

nginx를 사용하여 배포하는 사용자는 역시 uWSGI와 마찬가지로 ubuntu이므로 다음과 같이 설정파일을 수정한다.

  1. 설정파일 열기
$ sudo vi /etc/nginx/nginx.conf
  1. Username 수정하기 (첫번째 줄만 ubuntu로 수정)
user ubuntu;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
 
events {
        worker_connections 768;
        # multi_accept on;
}
...

3. nginx 설정 파일 생성하기

기존에 manage.py가 존재하는 위치에 .config 폴더를 생성하였다.
.config 폴더 내부에 nginx 폴더를 생성하자.
이후 mysite.conf 설정 파일을 생성하자.

$ cd .config
$ mkdir nginx
$ cd nginx
$ vim mysite.conf

파일 내용은 다음과 같다.

server {
    listen 80;
    server_name *.compute.amazonaws.com;
    charset utf-8;
    client_max_body_size 128M;
 
    location / {
        uwsgi_pass  unix:///tmp/mysite.sock;
        include     uwsgi_params;
    }
}

4. uWSGI 설정 수정하기

nginx를 통해 port를 80번을 사용하게 되었으니, uWSGI 설정 역시 수정하자.

$ vim uwsgi/mysite.ini

파일 내용은 다음과 같다.

[uwsgi]
chdir = /srv/youngkwonFE/
module = youngkwonFE.wsgi:application
home = /home/ubuntu/myvenv/
static-map = /static=/srv/youngkwonFE/project/static

uid = ubuntu
gid = ubuntu

# 여기부터
socket = /tmp/mysite.sock
chmod-socket = 666
chown-socket = ubuntu:ubuntu
# 여기까지 수정

enable-threads = true
master = true
vacuum = true
pidfile = /tmp/mysite.pid
logto = /var/log/uwsgi/mysite/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true

5. 백그라운드 실행을 위한 설정 파일 생성하기

.config 폴더의 uwsgi 폴더안에 uwsgi.service 파일을 생성한다.

파일 내용은 다음과 같다.

[Unit]
Description=uWSGI service
After=syslog.target
 
[Service]
ExecStart=/home/ubuntu/myvenv/bin/uwsgi -i /srv/youngkwonFE/.config/uwsgi/mysite.ini
 
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
 
[Install]
WantedBy=multi-user.target

6. 데몬 관련 명령어 수행하기

# uwsgi.service 파일을 데몬(백그라운드에 실행)에 등록
# /etc/systemd/system/ 에 링크 걸기
$ sudo ln -f /srv/youngkwonFE/.config/uwsgi/uwsgi.service /etc/systemd/system/uwsgi.service

# 데몬 새로고침
$ sudo systemctl daemon-reload

# uwsgi 서비스를 사용 가능하게 변경, restart
$ sudo systemctl enable uwsgi
$ sudo systemctl restart uwsgi

# Django 프로젝트 내의 nginx 설정 파일을 nginx 어플리케이션에 등록
$ sudo cp -f /srv/youngkwonFE/.config/nginx/mysite.conf /etc/nginx/sites-available/mysite.conf

# sites-available에 복사된 설정 파일을 sites-enables폴더 내부에 링크
$ sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf

# sites-enables폴더 안의 default 파일 삭제
$ sudo rm /etc/nginx/sites-enabled/default

# 데몬 새로고침, nginx, uwsgi 다시 실행
$ sudo systemctl daemon-reload
$ sudo systemctl restart uwsgi nginx

7. 서버 접속하기

서버의 80번 포트로 접근하면 정상적으로 페이지가 로딩됨을 확인할 수 있다.


[Django-nginx 연결 참고 블로그] https://nerogarret.tistory.com/48?category=800142

0개의 댓글