Django 1.6 배포

30184 단어
준비 작업
우선settings.py 내 DEBUG 및 TEMPLATEDEBUG 항목은 False로 설정됩니다.
그리고templates 디렉터리에서 404와 500 템플릿을 실행합니다.
 
오류 경고 설정
코드 예외가 발생하면 ADMINS의 메일 주소에 버그 보고서를 보냅니다. 이 기능을 사용하려면django의 메일 발송 기능이 정상적인지 확인하십시오.

   
   
   
   
ADMINS = ( ( ' John Lennon ' , ' [email protected] ' ), ( ' Paul McCartney ' , ' [email protected] ' ), )

사용자가 비어 있지 않은 링크에 접근하여 오류 404가 발생하고 연결이 끊겼을 때, MANAGERS에 오류 보고서를 보낼 수 있습니다.이 동작은 CommonMiddleware 활성화 및 SEND 에 의존합니다.BROKEN_LINK_EMAILS 값은 True입니다.MANAGERS의 구문은 ADMINS와 같습니다.
 
여러 프로파일 설정
자고는 DJANGO를 통해서...SETTINGS_MODULE 환경 변수는 "os.environ ['DJANGO SETTINGS MODULE']"을 사용하여 구성 파일을 찾습니다.기본적으로 값은 "mysite.settings"로 설정됩니다.
개발 및 프로덕션 환경에 대해 다른 프로파일을 설정하려면 두 개의 다른 파일을 사용하는 경우 하나를 기준으로 다른 하나를 가져오고 차이가 있는 항목을 덮어쓸 수 있습니다.

   
   
   
   
# settings.py DEBUG = True TEMPLATE_DEBUG = DEBUG DATABASE_ENGINE = ' postgresql_psycopg2 ' DATABASE_NAME = ' devdb ' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_PORT = '' # ... # settings_production.py from settings import * DEBUG = TEMPLATE_DEBUG = False DATABASE_NAME = ' production ' DATABASE_USER = ' app ' DATABASE_PASSWORD = ' letmein '

하나의 파일을 사용하는 경우 호스트 이름을 통해

   
   
   
   
# settings.py import socket if socket.gethostname() == ' my-laptop ' : DEBUG = TEMPLATE_DEBUG = True else : DEBUG = TEMPLATE_DEBUG = False # ...

 
주의: 환경 변수는 프로세스 범위이기 때문에 같은 프로세스에서 여러 사이트를 실행할 때 (예:mod wsgi) 위의 설정은 작동하지 않습니다.이럴 때mod 를 사용해야 합니다wsgi의 데몬 모드 또는 wsgi.py 파일은 "os.environ. ['DJANGO SETTINGS MODULE'] ='mysite.settings'형식으로 덮어씁니다.
 
WSGI
최초로 Python이 웹 서버 app를 실현하는 방식은 CGI였지만, 모든 요청에 대한 해석기를 만들고, 이 해석기는 이 요청만 처리하기 때문에 매우 큰 계산 압력을 가했다.따라서 모든 요청을 메모리에 상주하는 파이톤 프로그램을 사용해서 처리하는 뚜렷한 해결 방안이 끊임없이 실현되기 시작했다.
이 과정에서 두 가지 방식이 주류가 되었다. 하나는 웹 서버에 통합된 API를 디자인하는 것이다. 예를 들어mod-python,mod는module의 줄임말이다.다른 방법은 FastCGI와 같은 웹 서버에 독립된 외부 프로세스입니다.
이 두 가지 방식은 모두 이미 유효하다는 것이 증명되었다.그 중에서 서버 API는 배치하기가 더욱 간단하고django가 처음 배치한 사람에게 추천하여 사용한다.외부 프로세스는 전자가 가져올 수 있는 app와 서버 간의 성능 영향, 특정 서버에 대한 코드를 작성해야 하는 문제를 피했다.
그래서 (주로) 이 두 가지 서로 다른 실현을 위해 디자인된 웹 서버와 웹 프레임워크 레이어(app) 간의 유니버설 인터페이스 표준이 만들어졌다. 바로 웹 서버 Gateway Interface(WSGI)standard이다.WSGI는 어떠한 서버, API, 심지어 코드 구현도 포함하지 않으며, 이것은 API에 대한 정의이다.
WSGI 응용 프로그램 인터페이스의 구현은 호출 가능한 대상이다.그는 항상 두 개의 매개 변수를 받아들인다. 하나는 서버에서 생성된 환경 변수 사전이고, 이 사전의 데이터는 클라이언트의 요청과 다른 서버가 제공하는 리셋 함수에서 나온다.이 리셋 함수는 HTTP 상태 코드와 HTTP 헤더를 받아들여 응답 헤더를 초기화합니다.WSGI 응용 프로그램은 페이지로 돌아가는 응답 부하를 책임진다.이 부하는 간단한 목록 같은 문자열이나 yield 키워드를 사용해도 됩니다.이 응답 부하는 초기화된 응답 헤더와 WSGI 서버로 조합되어 클라이언트에게 되돌아옵니다.SAE 튜토리얼은 Hello World의 예를 제공합니다.

   
   
   
   
def app(environ, start_response): status = ' 200 OK ' response_headers = [( ' Content-type ' , ' text/plain ' )] start_response(status, response_headers) return [ ' Hello, world! ' ]

상례의 변수와 파라미터 형식을 주의하십시오. 예를 들어responseheaders는 원조 쌍(header name, header value)으로 구성된 목록이어야 합니다.
파이썬 표준 라이브러리에도 wsgiref라는 간단한 wsgi 서버가 있습니다. 테스트에 사용할 수 있습니다.

   
   
   
   
>>> from wsgiref.simple_server import make_server,demo_app >>> httpd = make_server( '' , 8000 ,demo_app) >>> httpd.serve_forever() 127.0 . 0.1 - - [ 13 / Apr / 2014 15 : 55 :0 8 ] " GET / HTTP/1.1 " 200 4266 127.0 . 0.1 - - [ 13 / Apr / 2014 15 : 55 :0 8 ] " GET /favicon.ico HTTP/1.1 " 200 4206

django에서 이 WSGI app 설정은 프로젝트 폴더의 wsgi에 저장됩니다.py 파일에서 응용 프로그램으로 명명된 모듈급 변수입니다.
자세한 내용은 다음 자습서를 참조하십시오.http://webpython.codepoint.net/wsgi_tutorial
 
Apache + mod_wsgi
앞에서 언급한modpython은 이미 버려졌습니다. WSGI의mod 를 호환합니다.ssgi는 현행 표준이다.
 
기본 구성
mod 설치 및 활성화wsgi 후에는 Apache의 httpd를 편집해야 합니다.conf 파일, 다음 내용을 추가합니다.2.4 이후 버전의 경우 다음 Require all granted를 Allow from all로 변경합니다.

   
   
   
   
WSGIScriptAlias / / path / to / mysite.com / mysite / wsgi.py WSGIPythonPath / path / to / mysite.com < Directory / path / to / mysite.com / mysite > < Files wsgi.py > Order deny,allow Require all granted </ Files > </ Directory >

첫 번째 행인 WSGIScriptAlias 뒤에는 두 개의 매개변수가 있습니다.앞의'/'는 당신이 app 서비스를 사용하고자 하는 URL 경로입니다. 평행봉은 사이트의 루트 디렉터리를 대표합니다.다음 경로는 시스템의 'WSGI 파일' 을 가리키며, 보통 프로젝트 패키지 안에 있습니다. (예: mysite)이 줄의 역할은 Apache가 이 URL의 시작 부분에 있는 모든 요청에 대해 WSGI 파일에서 지정한 응용 프로그램을 적용하도록 하는 것입니다.
두 번째 줄의 WSGIPythonPath는 프로젝트 패키지가python의 가져오는 경로에 있는지 확인하는 역할을 합니다.다시 말하면'import mysite'라는 문구가 실행될 수 있도록 보장하는 것이다.
뒤에 있는 에서 Apache가 wsgi에 접근할 수 있도록 합니다.py 파일.
 
virtualenv 사용
virtualenv는 Python 가상 환경 관리 도구로django에 독립된 실행 환경을 만들어 다른 프로그램과 버전으로 인한 호환성 문제를 피할 수 있습니다.올바른 방법으로 Django 1.6 프로젝트 시작
virtualenv를 사용했을 때,virtualenv의site-packages 경로를 Python 경로에 추가해야 합니다.구체적인 방법은 다음과 같다. 이 경로를 위에서 언급한 WSGIPythonPath에 추가하고 기존의 내용과 ':' 으로 구분한다. (윈도우즈 환경에서 사용한다.)이렇게

   
   
   
   
WSGIPythonPath / path / to / mysite.com: / path / to / your / venv / lib / python2.X / site - packages

주의: 만약 경로 중 어느 곳에 빈칸이 있다면, 반드시 전체 파라미터를 인용해야 합니다.
 
mod 사용wsgi의 daemon mode
"Daemon mode"는 실행modwsgi의 추천 모드 (비 윈도우즈 플랫폼).필요한 데몬 프로세스 그룹을 만들고django 실례를 실행하려면 적절한 WSGIDeamon Process와 WSGIProcess Group 명령을 추가해야 합니다.또 다른 위의 설정을 수정해야 할 부분은 WSGIPythonPath라는 변수를 사용할 수 없고, 예를 들어:

   
   
   
   
WSGIDaemonProcess example.com python - path =/ path / to / mysite.com: / path / to / venv / lib / python2. 7 / site - packages WSGIProcessGroup example.com

 
파일 서비스
django 자체가 파일 서비스를 제공하지 않습니다.이 일은 웹 서버에서 해야 합니다.
또한,django를 실행하는 것과 독립된 서버를 사용하는 것을 권장합니다.예를 들면 다음과 같습니다.
  • lighttpd
  • Nginx
  • TUX
  • Apache의 약식 버전
  • Cherokee

  • 미디어 파일 서비스를 같은 서버에 두어야 한다면, Apache에 URL을 설정해서 정적 파일을 처리할 수 있으며, 나머지는mod 를 통해 처리할 수 있습니다.ssgi 인터페이스는django 처리에 맡깁니다.
    다음 예는django를 사이트 루트 디렉터리에 설정하였으나 정적 파일로 로봇을 제공하도록 명확하게 설정하였다.txt、favicon.ico, CSS 파일 및 "/static/"및 "/media/"URL 아래에 있는 모든 파일.다른 모든 경로는django에 의해 처리됩니다.
    
       
       
       
       
    Alias / robots.txt / path / to / mysite.com / static / robots.txt Alias / favicon.ico / path / to / mysite.com / static / favicon.ico AliasMatch ^/ ([ ^/ ] * \.css) / path / to / mysite.com / static / styles / $ 1 Alias / media / / path / to / mysite.com / media / Alias / static / / path / to / mysite.com / static / < Directory / path / to / mysite.com / static > Order deny,allow Require all granted </ Directory > < Directory / path / to / mysite.com / media > Order deny,allow Require all granted </ Directory > WSGIScriptAlias / / path / to / mysite.com / mysite / wsgi.py < Directory / path / to / mysite.com / mysite > < Files wsgi.py > Order allow,deny Require all granted </ Files > </ Directory >

    마찬가지로 Apache 2.4 이후 버전을 사용하면 위의 Require all granted를 Allow from all로 바꿉니다.
     
    admin 파일 서비스
    INSTALLEDAPPS에 django. 포함contrib.staticfiles에서django 개발 서버는admin과 다른 app의 정적 파일에 자동으로 서비스를 제공합니다.하지만 다른 서버를 사용할 때는 그렇지 않다.Apache나 다른 서버를 위해 관리자 파일에 대한 서비스를 설정해야 합니다.
    admin 파일은django 발표 패키지의django/contrib/admin/static/admin 위치에 있습니다
    우리는django를 사용하는 것을 강력히 건의합니다.contrib.staticfiles는admin 파일을 처리한다(위에서 언급한 웹 서버와 함께 collectstatic 관리 명령을 사용하여 정적 파일을 STATIC ROOT에 수집한 다음에 웹 서버를 설정하여 STATIC URL에 STATIC ROOT에 서비스를 제공하도록 한다). 그러나 여기에는 세 가지 다른 방법이 있다.
  • 문서 루트 디렉터리에서 관리자 정적 파일을 가리키는 소프트 연결을 만듭니다. (이것은 Apache 프로필에Follow SymLinks를 추가해야 할 수도 있습니다.)
  • Alias를 사용하여 위에서 보여준 것처럼 적당한 URL(예를 들어 STATIC URL + admin/)과 admin 파일의 실제 위치를 연결한다
  • admin 파일을 Apache 문서 루트 디렉터리로 복사
  •  
    uWSGI
    웹 서버를 언급하지 않은 것은 uWSGI가FastCGI와 유사한 독립된 외부 프로세스이기 때문이다.따라서 웹 서버에 임의로 조합해서 사용할 수 있습니다.현재 Nginx + uWSGI, 또는 Nginx + Apache + uWSGI가 유행하고 있는 것 같다. 왜냐하면 Nginx는 높은 병렬 처리 능력을 가지고 자원을 상대적으로 절약하기 때문이다.이러한 조합에 대해 uWSGI는 다음과 같은 tutorial을 제공합니다.https://uwsgi.readthedocs.org/en/latest/tutorials/Django_and_nginx.html다음은django와uwsgi 간의 통합에 대해서만 논술하고자 한다.
     
    설치하다.
    간단한 pip 설치:
    
       
       
       
       
    # Install current stable version. $ sudo pip install uwsgi # Or install LTS (long term support). $ sudo pip install http: // projects.unbit.it / downloads / uwsgi - lts.tar.gz

     
    uWSGI 모델
    uWSGI는 일종의 클라이언트-서버 모드에서 일한다.웹 서버와django-uwsgi'worker'프로세스가 상호작용하여 동적 서비스를 제공합니다.
     
    uWSGI 서버 구성 및 사용
    uWSGI는 다양한 프로세스 구성 방식을 지원합니다.다음은 uWSGI 서버를 시작하는 예제 명령입니다.
    
       
       
       
       
    uwsgi -- chdir =/ path / to / your / project \ -- module = mysite.wsgi:application \ -- env DJANGO_SETTINGS_MODULE = mysite.settings \ -- master -- pidfile =/ tmp / project - master.pid \ -- socket = 127.0 . 0.1 : 49152 \ # can also be a file -- processes = 5 \ # number of worker processes -- uid = 1000 -- gid = 2000 \ # if root, uwsgi can drop privileges -- harakiri = 20 \ # respawn processes taking more than 20 seconds -- max - requests = 5000 \ # respawn processes after serving 5000 requests -- vacuum \ # clear environment on exit -- home =/ path / to / virtual / env \ # optional path to a virtualenv -- daemonize =/ var / log / uwsgi / yourproject.log # background the process

    상례에서 mysite 프로젝트 패키지가 있고 mysite/wsgi가 있다고 가정하십시오.py 모듈에 WSGI 응용 프로그램 대상이 있습니다.이 레이아웃은 startproject 명령을 사용할 때 기본적으로 생성됩니다.
    여기서 django에 대한 옵션은 다음과 같습니다.
  • chdir: 디렉터리를 가리키는 경로입니다.python의 import 경로에 포함되어야 합니다.즉, mysite 패키지가 포함된 경로
  • module: 사용할 WSGI 모듈, 예를 들어 mysite/wsgi.py안에 그거
  • env: DJANGO 이상 필요SETTINGS_MODULE
  • 홈: 선택할 수 있는 항목의virtualenv를 가리키는 경로
  • ini 프로필 예:
    
       
       
       
       
    [uwsgi] chdir =/ path / to / your / project module = mysite.wsgi:application master = True pidfile =/ tmp / project - master.pid vacuum = True max - requests = 5000 daemonize =/ var / log / uwsgi / yourproject.log

    ini 프로파일 사용 방법의 예:
    
       
       
       
       
    uwsgi -- ini uwsgi.ini

    좋은 웹페이지 즐겨찾기