지난시간에 uWSGI 연결을 완료한 장고 프로젝트를 nginx와 연결하려 한다.
nginx는 대표적인 웹 서버 애플리케이션이다.
먼저 nginx를 설치한다. (간단하쥬~)
$ sudo apt-get install -y nginx
nginx를 사용하여 배포하는 사용자는 역시 uWSGI와 마찬가지로 ubuntu이므로 다음과 같이 설정파일을 수정한다.
$ sudo vi /etc/nginx/nginx.conf
user ubuntu;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
...
기존에 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;
}
}
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
.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
# 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
서버의 80번 포트로 접근하면 정상적으로 페이지가 로딩됨을 확인할 수 있다.