34 Nginx / uWsgi / Django 연결하기

34.1 collectstatic - 정적 파일 관리

웹서버에서 관리할 정적파일 경로 설정이 필요합니다.

로컬 환경으로 가서 base.py 변경 과 collectstatic 명령어을 통해
static 파일을 분리하고 하고 서버에 반영하겠습니다.

collectstatic 명령을 사용하면 base_dir 위치에
staticfiles 디렉토리가 생성됩니다.

collectstatic은 프로젝트내 흩어져 있는 js, image, css 파일등를 모아
staticfiles 디렉토리로 수집하는 기능을 합니다.

1
python manage.py collectstatic

34.2 uWSGI 설정 변경 - Unix socket

uWSGI DJango 셋팅 및 구동하기에서
uWsgi는 설치 및 장고서버 실행을 했었습니다.

오버헤드가 적은 Unix 소켓으로 연결하는 방식으로 변경하겠습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[uwsgi]
chdir=/usr/local/share/pythonblog
module=config.wsgi:application
master=True
processes = 5
vacuum=True
max-requests=5000
daemonize=/usr/local/share/pythonblog/logs/uwsgi.log

socket = /usr/local/share/pythonblog/config/pythonblog.sock
chown-socket = root:root
chmod-socket = 666

34.3 Nginx설정 변경 - nginx.conf

Nginx access_log와 error_log 경로를 변경하여,
장고 어플리케이션이 있는 logs 디렉토리에 쌓이도록 하였습니다.

1
2
3
4
5
6
cd /etc/nginx

vi nginx.conf

access_log /usr/local/share/pythonblog/logs/access.log;
error_log /usr/local/share/pythonblog/logs/error.log;

34.3 Nginx설정 변경 - sites-available/default

sites-available 디렉토리에 default 파일이 있습니다.

default 수정 전 파일을 백업합니다.

편집기로 default 내용을 변경합니다.

현재는 도메인이 없으므로

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
cd /etc/nginx/sites-available

cp default default_20210219

vi default 

#default
upstream django {
        server unix:///usr/local/share/pythonblog/config/pythonblog.sock;
        }


server {
        listen 80 default_server;
        listen [::]:80 default_server;

        #server_name www.xxxxxx.com
        charset     utf-8;

        location / {
                uwsgi_pass django;
                include /etc/nginx/uwsgi_params;
        }

        location /static {
                alias /usr/local/share/pythonblog/staticfiles;
        }


}

nginx -t로 Nginx 변경내용을 적용 해야합니다.

1
2
3
4
(pythonblog_env) root@oc-webwas:/etc/nginx/sites-available# sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(pythonblog_env) root@oc-webwas:/etc/nginx/sites-available#

34.4 정상구동 확인

프로세스를 확인하고
nginx 와 uwsgi를 재시작 해줍니다.

브라이저에서 ip로 정상접속되는 것이 확인됩니다. ^__^

1
2
3
4
5
6
7
8
9
ps -ef | grep nginx

ps -ef | grep uwsgi

service nginx restart

killall -9 uwsgi

uwsgi --ini pythonblog_uwsgi.ini