Django + Nginx + uwsgi + Ubuntu 설정
설치 부분:
1. 가상 환경 에서 Djang 설치
pip install django
2. uwsgi 설치
sudo pip install uwsgi
3. Nginx 설치
sudo apt-get install nginx
Nginx 상용 동작:
nginx:
sudo serverice nginx start
nginx 재 부팅: sudo serverice nginx restart
nginx 종료: sudo serverice nginx stop
준비 & 테스트 부분:1. 가상 환경 에서 Django 프로젝트 만 들 기
python django-admin startproject mysite
2. 테스트 실행 uwsgi
(1) Django 프로젝트 에서 manage. py 와 같은 디 렉 터 리 에서 테스트 파일 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
(2) manage. py 같은 디 렉 터 리 에 들 어가 uwsgi 를 실행 합 니 다.
uwsgi --http :8000 --wsgi-file test.py
(3) 브 라 우 저 에 127.0.0.1: 8000 을 입력 하고 Hello World 를 정상적으로 표시 하면 the web client uWSGI Python 3 자가 통 하 는 것 을 설명 합 니 다.
설정 부분:
1. 파일 복사 uwsgiparams ~ Django 프로젝트
cp /etc/nginx/uwsgi_params ~/mysite
2. 프로젝트 manage. py 같은 디 렉 터 리 에 파일 mysite 만 들 기nginx. conf 및 쓰기:
# 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
}
}
3. nginx 에 소프트 링크 만 들 기
sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
4. Django 프로젝트 의 setting. py 를 설정 하고 끝 에 추가:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
5. Django 프로젝트 동기 화 정적 파일
python manage.py collectstatic
6. 프로젝트 manage. py 같은 디 렉 터 리 에 media 폴 더 를 만 들 고 media. png 에 넣 습 니 다.
7. Nginx 다시 시작
sudo serverice nginx restart
8. 브 라 우 저 에 127.0.0.1: 8000 / media / media. png 를 입력 하 십시오. media. png 를 정상적으로 표시 하면 Django 프로젝트 가 nginx 에서 정상적으로 실행 되 고 있 음 을 설명 합 니 다.
9. nginx, uWSGI, test. py 를 연결 합 니 다.
uwsgi --socket :8001 --wsgi-file test.py
10. 브 라 우 저 에 127.0.0.1: 8000 을 입력 하고 Hello World 를 정상적으로 표시 하면 the web client the web server the socket uWSGI Python 3 자가 통 하 는 것 을 설명 합 니 다.
11. 포트 대신 유 닉 스 소켓 을 사용 하여 mysite 변경nginx.conf:
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)
12. nginx, uWSGI, test. py 를 연결 하여 다음 명령 을 실행 하고 브 라 우 저 에 127.0.0.1: 8000 을 입력 하여 성공 여 부 를 관찰 합 니 다.
uwsgi --socket mysite.sock --wsgi-file test.py
13. 502 오류 발생 시 권한 문제 해결
uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=664 # (more sensible)
14. django, nginx, uwsgi 로 전환
uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664
15. 브 라 우 저 에 127.0.0.1: 8000 을 입력 하고 Django 의 "It works" 를 정상적으로 표시 하면 성공 을 설명 합 니 다.
최적화 부분:
1. 프로젝트 manage. py 같은 디 렉 터 리 에 uWSGI 를 만 드 는 초기 화 파일 mysiteuwsgi. ini (실행 명령 간소화)
# mysite_uwsgi.ini file
[uwsgi]
# Django-related settings
# the base directory (full path)
chdir = /path/to/your/project
# Django's wsgi file
module = project.wsgi
# the virtualenv (full path)
home = /path/to/virtualenv
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
socket = /path/to/your/project/mysite.sock
# ... with appropriate permissions - may be needed
chmod-socket = 664
# clear environment on exit
vacuum = true
2. 실행
uwsgi --ini mysite_uwsgi.ini
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.