[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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.