Django+Uwsgi+Nginx 생산 환경 배치 방법
Django 의 배 치 는 여러 가지 방식 이 있 을 수 있 습 니 다.nginx+uwsgi 방식 을 사용 하 는 것 은 그 중에서 흔히 볼 수 있 는 방식 입 니 다.
소개
uWSGI 는 웹 서버 로 WSGI 프로 토 콜,uwsgi,http 등 프로 토 콜 을 실현 했다.Nginx 에서 HttpUwsgiModule 의 역할 은 uWSGI 서버 와 교환 하 는 것 이다.
WSGI/uwsgi/uwsgi 라 는 세 가지 개념의 구분 에 주의해 야 한다.
1.WSGI 는 웹 서버 게 이 트 웨 이 인터페이스 이다.이것 은 웹 서버(예 를 들 어 nginx,uWSGI 등 서버)와 웹 응용 프로그램(예 를 들 어 Flask 프레임 워 크 로 쓴 프로그램)이 통신 하 는 규범 이다.
2.uwsgi 는 통신 프로 토 콜 이 아 닌 선로 프로 토 콜 로 uwsgi 서버 에서 다른 네트워크 서버 와 의 데이터 통신 에 자주 사용 된다.
3.uWSGI 는 uwsgi 와 WSGI 두 가지 협 의 를 실현 한 웹 서버 이다.
4.uwsgi 프로 토 콜 은 uwsgi 서버 자체 의 프로 토 콜 로 정 보 를 전송 하 는 유형(type of information)을 정의 하 는 데 사 용 됩 니 다.모든 uwsgi packet 전 4byte 는 전송 정보 유형 에 대한 설명 으로 WSGI 에 비해 두 가지 입 니 다.
성능
uwSGI 의 주요 특징 은 다음 과 같다.
1.초고 속 성능
2.저 메모리 점용(apache2 로 실측 한 mod반 쯤
3.멀 티 앱 관리
4.상세 한 로그 기능(app 성능 과 병목 을 분석 할 수 있 음)
5.높이 맞 춤 형(메모리 크기 제한,서비스 일정 횟수 후 재 부팅 등)
한 마디 로 하면 uwgi 는 배치 용 으로 좋 은 것 입 니 다.uwsgi 작가 가 자랑 하 는 것 처럼:
If you are searching for a simple wsgi-only server, uWSGI is not for you, but if you are building a real (production-ready) app that need to be rock-solid, fast and easy to distribute/optimize for various load-average, you will pathetically and morbidly fall in love (we hope) with uWSGI.
Uwsgi 설치 사용
# Install the latest stable release:
pip install uwsgi
# ... or if you want to install the latest LTS (long term support) release,
pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
기본 테스트Create a file called test.py:
# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2
운행 하 다.
uwsgi --http :8000 --wsgi-file test.py
django
uwsgi --http :8000 --module mysite.wsgi
설정 파일 에 인 자 를 쓸 수 있 습 니 다.
alex@alex-ubuntu:~/uwsgi-test$ more crazye-uwsgi.ini
[uwsgi]
http = :9000
#the local unix socket file than commnuincate to Nginx
socket = 127.0.0.1:8001
# the base directory (full path)
chdir = /home/alex/CrazyEye
# Django's wsgi file
wsgi-file = CrazyEye/wsgi.py
# maximum number of worker processes
processes = 4
#thread numbers startched in each worker process
threads = 2
#monitor uwsgi status
stats = 127.0.0.1:9191
# clear environment on exit
vacuum = true
시동 을 걸다
/usr/local/bin/uwsgi crazye-uwsgi.ini
Nginx 설치 사용
sudo apt-get install nginx
sudo /etc/init.d/nginx start # start nginx
프로젝트 에 Nginx 프로필 생 성You will need the uwsgi_params file, which is available in the nginx directory of the uWSGI distribution, or from https://github.com/nginx/nginx/blob/master/conf/uwsgi_params
Copy it into your project directory. In a moment we will tell nginx to refer to it.
Now create a file called mysite_nginx.conf, and put this in it:
# mysite_nginx.conf
# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 8000;
# the domain name it will serve for
server_name .example.com; # substitute your machine's IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /path/to/your/mysite/media; # your Django project's media files - amend as required
}
location /static {
alias /path/to/your/mysite/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
}
}
This conf file tells nginx to serve up media and static files from the filesystem, as well as handle requests that require Django's intervention. For a large deployment it is considered good practice to let one server handle static/media files, and another handle Django applications, but for now, this will do just fine.Symlink to this file from /etc/nginx/sites-enabled so nginx can see it:
sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
Deploying static filesBefore running nginx, you have to collect all Django static files in the static folder. First of all you have to edit mysite/settings.py adding:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
and then run
python manage.py collectstatic
이 때 Nginx 와 Uwsgi 를 시작 하면 django 프로젝트 가 높 은 합병 을 실현 할 수 있 습 니 다!이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.