Nginx를 역방향 프록시로 실행하는 방법, virtualenv 내 http 서버 및 django로 gevent를 실행하는 방법에 대한 좋은 자습서를 찾을 수 없습니다.nginx, gevent, virtualenv 및 django를 실행하는 방법
나는 tutorial과 유사하지만 uWSGI가 아닌 gevent를 발견했습니다. gevent를 사용하여이 작업을 수행하는 방법에 대한 모든 정보를 얻으실 수 있습니다.
이
Nginx를 역방향 프록시로 실행하는 방법, virtualenv 내 http 서버 및 django로 gevent를 실행하는 방법에 대한 좋은 자습서를 찾을 수 없습니다.nginx, gevent, virtualenv 및 django를 실행하는 방법
나는 tutorial과 유사하지만 uWSGI가 아닌 gevent를 발견했습니다. gevent를 사용하여이 작업을 수행하는 방법에 대한 모든 정보를 얻으실 수 있습니다.
이
uWSGI 버전 0.9.9에서 gevent을 지원 주셔서 감사합니다, 당신은 gevent 플러그인 위해 그것을 적응 자습서를 따를 수 :
그것은 나 같은 사람을 위해 복잡 할 수사람 결코 시도 nginx, gunicorn 및 gevent. Debian Squeeze를 사용하고 있으며 deb 패키지보다 virtualenv에서 pip를 선호합니다. 왜냐하면 stable에있는 일부 패키지는 쓸모가 없기 때문입니다. 물론 안정적입니다. 가끔은 debs가 관리하는 데 도움이 될 수 있습니다 (gunicorn 솔루션 참조). 나는 chroot을 원하지 않지만, 그것은 쉽습니다. - 나는 단지 그것이 불필요하다고 생각합니다.
먼저 더 나은 분리를 위해 webd라는 사용자를 만들어야합니다. webd 그룹이 있다고 가정합니다. 당신은 그 존재를 확인할 수 있습니다 :
root$ cat /etc/group | cut -d: -f1 | grep -E '^webd'
이것은 그룹이 존재하면 webd
을 인쇄합니다. 그렇지 않은 경우 아래 명령에서 -g webd
을 -U
으로 바꿉니다. 먼저 useradd --help
을 읽으십시오.
root$ useradd --home-dir /var/web --create-home --shell /bin/bash -g webd webd
공식의 repo에서 pip 및 virtualenv를 설치합니다.
root$ aptitude install python-pip python-virtualenv
VIRTUALENV 도우미로서 당신은 virtualenvwrapper을 사용할 수 있지만, 그 뎁 버전은 아주 오래된, 그래서 내가 대신 핍 사용하는 것을 선호 다음 /var/web/.bashrc
의 끝
root$ pip install virtualenvwrapper
추가 다음 줄을 :
source /usr/local/bin/virtualenvwrapper.sh
gevent 및 django 1.5c1을 사용하여 가상 환경을 준비해 봅시다. 문제가있을 경우 debian repo에서 몇 가지 패키지를 설치하여 아래 내용 중 일부를 pip해야 할 수도 있습니다. 당신이 deactivate
를 사용 venv 생산을 남겨하려는 경우
(production)webd$ pip install pytz
(production)webd$ pip install psycopg2
(production)webd$ pip install gevent-psycopg2
:
root$ su - webd
webd$ mkvirtualenv --no-site-packages production
(production)webd$ pip install -U distribute
(production)webd$ pip install gunicorn
(production)webd$ pip install gevent
(production)webd$ pip install https://www.djangoproject.com/download/1.5c1/tarball/
(production)webd$ pip install django-gevent-deploy
(production)webd$ cd .virtualenvs/production/bin/
(production)webd$ ln -s django-admin.py django-admin
(production)webd$ exit
root$ su - webd
webd$ workon production
(production)webd$ python
Python 2.6.6 (r266:84292, Dec 27 2010, 00:02:40)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information
>>> import django
>>> django.VERSION
(1, 5, 0, 'rc', 1)
추가로 pytz 및 포스트 그레스 지원을받을. 활성화하려면 workon production
을 사용하십시오. 의 장고 lifespace (나는 단일 마스터 장고 프로젝트를 선호) 만들어 보자 : 이런 식으로 뭔가에
(production)webd$ django-admin startproject myproject
(production)webd$ mv myproject/manage.py ./
(production)webd$ chmod u+x manage.py
(production)webd$ mv myproject/myproject/* myproject/
(production)webd$ rm -rf myproject/myproject/
(production)webd$ vim manage.py
변경 :
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
if not '/var/web' in sys.path:
sys.path.append('/var/web')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
당신은 propably myproject/settings.py
파일을 사용자 정의해야합니다.
최신 gunicorn 0.17을 사용하고 싶습니다.2 그래서 나는 virtualenv 프로덕션에서 pip로 설치했습니다. 하지만 나는 다른 데몬과 마찬가지로 gunicorn 데몬을 /etc/init.d/gunicorn
으로 관리하기를 원하므로 백 포트 레포에서 가능한 최신의 쓸모없는 0.14.5 버전을 설치합시다.
위에서 언급했듯이 공식적인 repo에서 가져온 것이 든, 짜증나는 등판에서 가져온 것이 든간에 적은 수의 debs가 필요합니다.
deb http://backports.debian.org/debian-backports squeeze-backports main
업데이트하여 소스 및 gunicorn를 설치 : 아직 백 포트를 사용하지 않으면 /etc/apt/sources.list
이 줄을 추가
root$ aptitude update
root$ aptitude -t squeeze-backports install gunicorn
Gunicorn이 VIRTUALENV에 대한 기본 사항을 지원하지만 사용하는 표준 방법이 없습니다 다른 데몬의 start-stop 스크립트에서 나온 gunicorn 전용. 파일 /usr/sbin/gunicorn-debian
에이 기능을 하드 코딩하기로 결정했습니다. Config.start(self)
방법을 찾아 함께 첫 선을 교체 :
def start(self):
gunicornpath = self['gunicornpath'] if 'gunicornpath' in self else '/usr/bin'
daemon = {
'wsgi': gunicornpath + '/gunicorn',
'django': gunicornpath + '/gunicorn_django',
'paster': gunicornpath + '/gunicorn_paster',
}[self['mode']]
는 이제 gunicorn 서버를 구성 할 수 있습니다. (나는 아직 장고 모드를 tryed하지 않음) /etc/gunicorn.d/web.py
파일을 만들어 넣어 :
CONFIG = {
'mode': 'wsgi',
'user': 'webd',
'group': 'webd',
'working_dir': '/var/web',
'python': '/var/web/.virtualenvs/production/bin/python',
'pythonpath': '/var/web/.virtualenvs/production/lib/python2.6',
'gunicornpath': '/var/web/.virtualenvs/production/bin',
'args': (
'--bind=127.0.0.1:9090',
'--workers=4',
'--worker-class=egg:gunicorn#gevent',
'--daemon',
'myproject.wsgi:application',
),
}
다음 설치 공식의 repo에서 온 최신 버전 (1.2.6-1 ~ dotdeb.0 대신 1.2.1-2.2을의의의 nginx를 ~ bpo60 + 1) :
root$ aptitude install nginx
만들고 /etc/nginx/sites-available/myproject
편집 :
server {
listen *:80;
server_name mydomain.com;
root /var/web/;
location/{
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:9090/;
}
error_page 500 502 503 504 /err50x.html;
}
너무 /var/web/err50x.html
을 만드십시오. 실제 서버에서는 static
URL과 기타 세부 정보를 설정해야합니다. 로그 디렉토리에 대한
user webd webd
그리고 chmod를을 : /etc/nginx/nginx.conf
에서 첫 번째 줄에 다음과 같이 추가
root$ chown -R webd:webd /var/log/gunicorn/ && chmod g+s /var/log/gunicorn/
root$ chown -R webd:webd /var/log/nginx/ && chmod g+s /var/log/nginx/
변경 사항을 적용하고 기계 시작 :
root$ cd /etc/nginx/sites-enabled/
root$ ln -s ../sites-available/myproject 001-myproject
root$ /etc/init.d/gunicorn restart
root$ /etc/init.d/nginx restart
사용이 장고의 프로젝트 쉘 :
(production)webd$ ~/manage.py shell
새 앱을 만들려면 다음을 사용하십시오.
(production)webd$ cd ~/myproject/
(production)webd$ ~/manage.py startapp myapp
문제가 있습니까? 어떤 일이 더 잘될 수 있습니까?
시간을내어 답변을 작성해 주셔서 감사합니다. 1 년 전에 대답 해줬으면합니다. 나는이 모든 것을 배우고 있었고 모든 것이 혼란 스러웠고 모든 것을 읽고 재판을 통해 오류를 배워야했습니다. – miki725
다음을 시도해보십시오. https://bitbucket.org/denis/gevent/src/0464753331d3/examples/webchat – qubird
맛있는, 슬프게도 대답 없음 – kbec