0. 본 글 작성자 디렉터리 구조
프로젝트 : /home/사용자명/django/glasswort/myapp
가상환경 : /home/사용자명/django/glasswort/myenv
- 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