[django] Nginx + uWSGI + Django 내 블 로그 사이트 배치

머리말
저 희 는 보통 nginx 를 서버 의 맨 앞 에 두 고 WEB 의 모든 요청 을 받 아들 여 관리 요청 을 통일 합 니 다.그리고 nginx 는 모든 정적 요청 을 스스로 처리 합 니 다 (이것 은 NGINX 의 강점 입 니 다). 그리고 모든 정적 요청 을 uwsgi 를 통 해 Django 에 전달 하고 Django 가 처리 하여 WEB 요청 을 완성 합 니 다.
이 를 통 해 알 수 있 듯 이 uwsgi 의 역할 은 브리지 와 유사 하 다.
작업 환경
Ubuntu14.04 LTS
Django1.8
설치, 테스트 uwsgi
$ export LDFLAGS="-Xlinker --no-as-needed"
$ pip install uwsgi

프로그램 test. py 작성:
# test.py
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"

셸 명령 실행:
uwsgi --http :8000 --wsgi-file test.py

웹 페이지 방문:
http://127.0.0.1:8000/
웹 페이지 에 Hello World 가 표시 되면 올 바 르 게 실 행 됩 니 다.
django 설정
django 작성파일 manage. py 와 같은 디 렉 터 리 에 파일 을 두 었 습 니 다.
os. environ. setdefault ("DJANGO SETTINGS MODULE", "blog. settings") 에서 블 로 그 는 프로젝트 이름 입 니 다 ~
#!/usr/bin/env python
# coding: utf-8

import os
import sys

#          UTF8
reload(sys)
sys.setdefaultencoding('utf8')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application()

만약 우리 가 프로젝트 의 디 렉 터 리 아래 에 있다 고 가정 하면 (즉 django wsgi. py 가 있 는 디 렉 터 리) 실행:
uwsgi --http :8000 --chdir ./ --module django_wsgi

브 라 우 저 에서 Django 프로그램 을 열 었 습 니 다. 모든 요청 은 uwsgi 를 통 해 Django 프로그램 에 전 달 됩 니 다. (이 때 정적 파일 은 접근 할 수 없 을 것 같 습 니 다 ~)
5. uWSGI 설정
Nginx 와 uWSGI 의 연결 을 실현 하기 위해 둘 사이 에는 soket 으로 통신 할 것 이다.
여기에서, 우 리 는 uWSGI 프로필 을 사용 하여 uWSGI 의 시작 방식 을 개선 할 것 입 니 다.
프로그램 디 렉 터 리 가 / home / work / testdjango / my site 라 고 가정 합 니 다.
우 리 는 Nginx 가 8077 포트 를 사용 하여 uWSGI 와 통신 하도록 할 것 입 니 다. 이 포트 가 다른 프로그램 에 사용 되 지 않 았 는 지 확인 하 십시오.
/ home / work / testdjango / mysite 아래 XML 파일 djangochina 새로 만 들 기socket.xml:
<uwsgi>
    <socket>:8077</socket>
    <chdir>/home/work/testdjango/mysite</chdir>
    <module>django_wsgi</module>
    <processes>4</processes> <!--     --> 
    <daemonize>uwsgi.log</daemonize>
</uwsgi>

위의 설정 에서, 우 리 는 uwsgi. log 를 사용 하여 로 그 를 기록 하고, 4 개의 프로 세 스 를 열 어 요청 을 처리 합 니 다.
6. 설치, Nginx 설정
 $ sudo apt-get install nginx

디 렉 터 리 / home / work / testdjango / my site / logs 에 Nginx 프로그램 로 그 를 넣 을 것 이 라 고 가정 합 니 다. 디 렉 터 리 가 존재 하 는 지 확인 하 십시오.
Django 의 static 디 렉 터 리 가 / home / work / testdjango / my site / blog / static / 라 고 가정 합 니 다. 이 디 렉 터 리 가 존재 하 는 지 확인 하 십시오.
우 리 는 당신 의 도 메 인 이름 이 localhost 라 고 가정 합 니 다.
도 메 인 이름 포트 가 80 이 라 고 가정 합 니 다. (디 버 깅 할 때 8070 과 같은 특수 포트 를 설정 할 수 있 습 니 다)
위의 가설 을 바탕 으로 우 리 는 conf / nginx. conf 에 설정 을 추가 합 니 다.(whereis nginx 로 다음 nginx 디 렉 터 리 를 보면 디 렉 터 리 에서 conf / nginx. conf 라 는 설정 파일 을 찾 을 수 있 습 니 다. conf 다음 에 conf / nginx. conf. default 라 는 파일 이 있 을 수 있 습 니 다. 이름 을 바 꾸 지 않 으 면 시스템 이 기본적으로 이 파일 을 사용 합 니 다)
user root

server {

        listen   80;
        server_name localhost;
        access_log /home/work/testdjango/mysite/logs/access.log;
        error_log /home/work/testdjango/mysite/logs/error.log;

        location / {
         include        uwsgi_params;
         uwsgi_pass     127.0.0.1:8077;
        }

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location /static/ {
            alias  /home/work/testdjango/mysite/blog/static/;
            index  index.html index.htm;
        }
    }

따라서 Nginx 는 정적 파일 (/ static) 을 처리 하고, 비 정적 파일 요청 Nginx 는 socket 8077 에 보 내 고, uWSGI 로 처리 합 니 다.
운행
위 설정 을 완료 한 후 다음 단계 로 해 야 합 니 다.
Nginx 설정 을 적용 하기 위해 Nginx 서버 를 다시 시작 합 니 다.
nginx -s  reload

재 부팅 후 Nginx 로그 에 이상 이 있 는 지 확인 합 니 다.
uWSGI 서버 시작
cd /home/work/testdjango/mysite

uwsgi -x djangochina_socket.xml

로그 uwsgi. log 에 이상 이 있 는 지 확인 합 니 다.
액세스 서비스
      localhost,           Django          ,      ~!

서비스 닫 는 방법
방식
#  nginx    
ps -ef | grep nginx
#       kill -QUIT     
#       kill -TERM     
#       kill -9 nginx

방식
nginx -s stop  :    nginx
nginx -s quit  :       nginx

좋은 웹페이지 즐겨찾기