Nginx + uWSGI + Flask + Vhost

3152 단어 nginxflaskuwsgivhost
1. 준비 작업: nginx virtualenv flask uwsgi 등 을 먼저 설치한다.nginx 설정 경로 / etc / nginx virtualenv 경로 / opt / pyenv / flask 가 설 치 된 env / opt / pyenv / flask 0.8 / 두 가상 호스트 디 렉 터 리 / var / pyww / app 1 / var / pyww / app 2
2. 설정: / etc / nginx / conf. d / virtual. conf
server {
    listen       80;
    server_name  app1.mydomain.com;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9090; #uwsgi      ip,         9090     uwsgi  
        uwsgi_param UWSGI_PYHOME /opt/pyenv/flask_0.8; #  python   virtualenv  
        uwsgi_param UWSGI_CHDIR /var/pywww/app1; #     
        uwsgi_param UWSGI_SCRIPT main:app; #         main.py  app      callble uwsgi  
    }
}

server {
    listen       80;
    server_name  app2.mydomain.com;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9090;
        uwsgi_param UWSGI_PYHOME /opt/pyenv/flask_0.8;
        uwsgi_param UWSGI_CHDIR /var/pywww/app2;
        uwsgi_param UWSGI_SCRIPT test:apppp; #  ,        test.py  apppp      callble uwsgi  
    }
}

3. 테스트 용 flask 입구 만 들 기 / var / pyww / app 1 / 아래 main. py 만 들 기
from flask import Flask 


app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello app1!"

/ var / pyww / app 2 / 아래 test. py 만 들 기
from flask import Flask  

apppp = Flask(__name__)

@apppp.route("/")
def sadfa():
    return "Hello app2!"

4. 실행 및 접근
  uwsgi:
uwsgi -s :9090 -M -p 4 --vhost --no-site
  nginx:
service nginx start

- s 후 ip: port 병발 4 개 스 레 드: uwsgi - s: 9090 - p 4 메 인 제어 스 레 드 + 4 개 스 레 드: uwsgi - s: 9090 - M - p 4 실행 30 초 이상 클 라 이언 트 직접 포기: uwsgi - s: 9090 - M - p 4 - t 30 메모리 공간 128 M: uwsgi - s: 9090 - M - p 4 - t 30 - limit - as 128  #--limit - as 이 매개 변 수 는 문제 가 있 는 것 같 습 니 다. 시작 할 수 없 으 면 로그 에 "/ operator. so: failed to map segment from shared object: Cannot allocate memory unable to load app 0" 을 표시 합 니 다.이 매개 변 수 를 제거 합 니 다. 서비스 가 10000 개가 넘 는 req 자동 respawn: uwsgi - s: 9090 - M - p 4 - t 30 -- limit - as 128 - R 10000 배경 에서 실 행 됩 니 다. uwsgi - s: 9090 - M - p 4 - t 30 -- limit - as 128 - R 10000 - d uwsgi. log -- no - site: do not import site. py on startup 은 여러 사이트 에서 uwsgi 서 비 스 를 공유 하기 위해 서 입 니 다.uwsgi 를 가상 사이트 로 실행 해 야 합 니 다: uwsgi - s: 9090 - M - p 4 - t 30 -- limit - as 128 - R 10000 - d uwsgi. log -- vhost 그리고 -- uid 와 -- chroot 두 매개 변 수 는 다른 자 료 를 참고 하여 사용 해 야 합 니 다.
이렇게 하면 uwsgi 프로 세 스 한 세트 만 열 면 app 1. my domain. com 과 app 2. my domain. com 두 도 메 인 이름 의 두 프로그램 을 실행 할 수 있 습 니 다.nginx 는 도 메 인 이름 에 따라 9090 포트 에 있 는 uwsgi 프로 세 스 를 감청 하기 위해 서로 다른 uwsgi 파 라 메 터 를 보 냅 니 다. uwsgi 가 지정 한 경 로 를 찾 아 해당 하 는 프로그램 을 찾 고 지정 한 virtualenv 로 지정 한 입구 callble 을 실행 하여 요청 파 라 메 터 를 전송 합 니 다.
uwsgi 시작 매개 변수 에 -- pidfile = / tmp / procject - master. pid 를 kill 로 재 부팅 신 호 를 보 내 면 업 데 이 트 된 프로그램 이 적 용 됩 니 다. kill - TERM ` cat / tmp / procject - master. pid ` 더 많은 신호 참조:http://projects.unbit.it/uwsgi/wiki/uWSGISignals
자세 한 내용 은 uWSGI Example 및 Nginx + uWSGI 설정 상세 설명, Nginx + uWSGI 배치 Django 응용 을 참고 하 십시오.

좋은 웹페이지 즐겨찾기