Nginx 및 uWSGI를 사용하여 Python 웹 프로젝트를 구성하는 방법

WBOY
풀어 주다: 2023-05-17 20:52:04
앞으로
1696명이 탐색했습니다.

Python의 웹 프로젝트를 기반으로 하는 일반적인 배포 방법은 다음과 같습니다.

  • FCGI: 각 프로젝트에 대한 모니터링 프로세스를 생성한 다음 HTTP 서비스와 상호 작용하기 위해 SPAWN-FCGI 또는 프레임워크에서 구축한 도구입니다.

  •   wsgi: http 서비스의 mod_wsgi 모듈을 사용하여 다양한 프로젝트를 실행합니다.

그러나 wsgi 프로토콜이나 fcgi 프로토콜을 사용하지 않는 uwsgi도 있습니다. 대신에 저자에 따르면 이 프로토콜은 fcgi 프로토콜보다 약 10배 빠릅니다. uwsgi의 주요 기능은 다음과 같습니다:

  •             초고속 성능.

  • 낮은 메모리 사용량(apache2 mod_wsgi의 약 절반으로 측정됨).

  • 다중 앱 관리.

  • 자세한 로깅 기능(앱 성능 및 병목 현상을 분석하는 데 사용할 수 있음)

  • 고도로 맞춤설정 가능합니다(메모리 크기 제한, 특정 서비스 횟수 이후 다시 시작 등).

환경 우분투 12.04 ip:10.1.6.79

nginx 설치

apt-get install nginx-full nginx-common
로그인 후 복사

nginx 구성/etc/nginx/sites-enabled/example

server {
    listen     80;
    server_name   10.1.6.79;
    access_log   /var/log/nginx/example_access.log;
    error_log    /var/log/nginx/example_error.log;
    root      /var/www/example;
    location / {
      uwsgi_pass   127.0.0.1:9001;
      include     uwsgi_params;
      uwsgi_param   uwsgi_scheme $scheme;
      uwsgi_param   server_software  nginx/$nginx_version;
    }
}
로그인 후 복사

uwsgi 설치

apt-get install uwsgi uwsgi-plugin-python
로그인 후 복사

uwsgi를 모두 설치하고 싶다면 플러그인을 사용하면 uwsgi-plugin-all 소프트웨어 패키지를 설치할 수 있습니다

uwsgi 구성/etc/uwsgi/apps-enabled/default.xml

<uwsgi>
  <plugin>python</plugin>
  <socket>127.0.0.1:9001</socket>
  <pythonpath>/var/www/example/app/</pythonpath>
  <app mountpoint="/">
    <script>wsgi_configuration_module</script>
  </app>
  <master/>
  <processes>4</processes>
  <reload-mercy>8</reload-mercy>
  <cpu-affinity>1</cpu-affinity>
  <max-requests>2000</max-requests>
  <limit-as>512</limit-as>
  <reload-on-as>256</reload-on-as>
  <reload-on-rss>192</reload-on-rss>
  <no-orphans/>
  <vacuum/>
</uwsgi>
로그인 후 복사

uwsgi 구성 파일의 매개변수는 uwsgi 명령을 통해 지정할 수도 있습니다 xml을 제외한 구성 파일 형식 외에도 ini 형식으로 작성할 수도 있습니다. 소프트웨어 패키지가 설치된 후 /usr/share/doc/에 xml 및 ini 형식 구성 파일의 몇 가지 예가 있습니다. uwsgi/examples/conffile 디렉토리.

wsgi_configuration_module.py 스크립트 내용

#!/usr/bin/python
import os
import sys
sys.path.append(&#39;/var/www/example/app&#39;)
os.environ[&#39;python_egg_cache&#39;] = &#39;/var/www/example/.python-egg&#39;
def application(environ, start_response):
  status = &#39;200 ok&#39;
  output = &#39;hello world!&#39;
  response_headers = [(&#39;content-type&#39;, &#39;text/plain&#39;),
          (&#39;content-length&#39;, str(len(output)))]
  start_response(status, response_headers)
  return [output]
로그인 후 복사

uwsgi 시작을 위한 매개변수

uwsgi -x /etc/uwsgi/apps-enabled/default.xml --daemonize /var/log/uwsgi/app/default.log
로그인 후 복사

uwsgi:

-m은 마스터 프로세스를 시작합니다.
-p 4는 4개의 프로세스를 시작합니다.
-s 사용된 포트 또는 소켓 주소
-d 사용 da emon의 실행 모드입니다. -d를 사용한 후에는 -d /var/log/uwsgi.log
와 같은 로그 파일 주소를 추가해야 합니다. -r 10000 10,000개의 프로세스를 시작한 후 자동으로 다시 생성됩니다
-t 30 시간 초과를 30초로 설정합니다. 시간 초과 후 링크는 자동으로 삭제됩니다
-limit-as 32 프로세스의 총 메모리를 32m으로 제어합니다
-x 프로필 모드 사용

4개 스레드를 동시에 사용


uwsgi -s :9090 -w myapp -p 4
로그인 후 복사

주 제어 스레드 + 스레드 4개


uwsgi -s :9090 -w myapp -m -p 4
로그인 후 복사

30초 이상 실행되는 클라이언트는 바로 폐기됩니다


uwsgi -s :9090 -w myapp -m -p 4 -t 30
로그인 후 복사

메모리 공간은 128m로 제한됩니다


uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128
로그인 후 복사

reqs가 10,000개 이상인 서비스는 자동으로 다시 생성됩니다


uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000
로그인 후 복사

백그라운드 실행 등


uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000 -d uwsgi.log
로그인 후 복사

uwsgi 명령으로 직접 시작하는 것 외에도 init.d 아래의 스크립트가 시작되지만 먼저 /etc/default/u wsgi에서 기본 구성 파일의 경로를 수정한 다음 사용할 수도 있습니다. /etc/init.d/uwsgi start

#inherited_config=/usr/share/uwsgi/conf/default.ini
inherited_config=/etc/uwsgi/apps-enabled/default.xml
로그인 후 복사

Start nginx

/etc/init.d/nginx start
로그인 후 복사

효과는 다음과 같습니다.

브라우저 입력 IP: 포트: 192.168.1.99:9090
"축하합니다!!! uwsgi 테스트 OK!!!"를 볼 수 있습니다.

위 내용은 Nginx 및 uWSGI를 사용하여 Python 웹 프로젝트를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿