Django + Nginx + uwsgi + Ubuntu 설정

4815 단어
공식 문서 참조
설치 부분:
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

좋은 웹페이지 즐겨찾기