Nginx uWSGI Django Private Ver

0. 본 글 작성자 디렉터리 구조

프로젝트 : /home/사용자명/django/glasswort/myapp
가상환경 : /home/사용자명/django/glasswort/myenv
  1. settings.py
ALLOWED_HOSTS = [ '127.0.0.1', '도메인' ]

2. log파일과 socket 파일 생성될 위치생성

run : sock 파일 생성됨

logs : log파일 생성됨

sudo mkidr /var/www/uwsgi/run
sudo mkidr /var/www/uwsgi/logs

3. nginx, uwsgi 설치

sudo apt install nginx -y
sudo apt install uwsgi -y

4. nginx site config 추가

glasswort : 임의로 해당 사이트에 대한 nginx 설정파일명으로 지정하면 됨

sudo nano /etc/nginx/sites-available/glasswort
upstream django {
    server unix:/var/www/uwsgi/run/glasswort.sock;
}
server {
    listen 80;
    server_name wort.debtolee.pe.kr;
    charset     utf-8;
    access_log /var/www/uwsgi/logs/access.log;
    error_log /var/www/uwsgi/logs/error.log;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        alias /home/ubuntu/django/glasswort/myapp/static/;
    }
    location /staticfiles/ {
        alias /home/ubuntu/django/glasswort/myapp/staticfiles/;
        }
    location /media/ {
        alias /home/ubuntu/django/glasswort/myapp/media/;
        }
    location / {
        include         /etc/nginx/uwsgi_params;
        uwsgi_pass      django;
    }
}

5. uwsgi 설정파일 추가

uwsgi 사이트들 설정파일을 모아놀 폴더생성

sudo mkdir /etc/uwsgi/sites

glasswort.ini 생성

sudo nano /etc/uwsgi/sites/glasswort.ini

pi : 사용자명
home : 가상환경 있는 폴더
chdir : 장고사이트 폴더
module : django 프로젝트명.wsgi:application

[uwsgi]
uid = pi
base = /home/pi/django/glasswort/

home = %(base)/myenv
chdir = %(base)/myapp
module = mysite.wsgi:application
env = DJANGO_SETTINGS_MODULE=mysite.settings

master = true
processes = 5

socket = /var/www/uwsgi/run/glasswort.sock
logo = /var/www/uwsgi/logs/glasswort.log
chown-socket = %(uid):www-data
chmod-socket = 660
vacuum = true

6. 데모에 등록하여 자동 실행하도록 설정

sudo nano /etc/systemd/system/uwsgi.service
[Unit]
Description=uWSGI Emperor service
[Service]
ExecStart=/usr/local/bin/uwsgi  --emperor /etc/uwsgi/sites
Restart=on-failure
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
StandardError=syslog
[Install]
WantedBy=multi-user.target

7. 데몬 및 nginx uwsgi 재시작

sudo systemctl daemon-reload
sudo systemctl restart nginx.service uwsgi.service

Leave a Comment