Rumah >Operasi dan penyelenggaraan >Nginx >Bagaimana untuk mengkonfigurasi projek web Python menggunakan Nginx dan uWSGI

Bagaimana untuk mengkonfigurasi projek web Python menggunakan Nginx dan uWSGI

WBOY
WBOYke hadapan
2023-05-17 20:52:041740semak imbas

Untuk projek web berasaskan python, kaedah penggunaan biasa ialah:

  • fcgi: Gunakan spawn-fcgi atau alatan yang disertakan dengan rangka kerja untuk menjana proses mendengar bagi setiap projek secara berasingan, dan kemudian gunakannya dengan interaksi Perkhidmatan http.

  • wsgi: Gunakan modul mod_wsgi perkhidmatan http untuk menjalankan setiap projek.

Tetapi terdapat uwsgi, yang tidak menggunakan protokol wsgi mahupun protokol fcgi sebaliknya, ia mencipta protokol uwsgi sendiri Menurut penulis, protokol ini adalah lebih kurang 10 kali ganda sebagai protokol fcgi. Ciri-ciri utama uwsgi adalah seperti berikut:

  • Prestasi yang sangat pantas.

  • Penggunaan memori yang rendah (diukur kira-kira separuh daripada mod_wsgi apache2).

  • Pengurusan berbilang apl.

  • Fungsi log terperinci (boleh digunakan untuk menganalisis prestasi apl dan kesesakan).

  • Sangat boleh disesuaikan (had saiz memori, perkhidmatan dimulakan semula selepas beberapa kali, dsb.).

Persekitaran ubuntu 12.04 ip:10.1.6.79

Pasang nginx

apt-get install nginx-full nginx-common

konfigurasi nginx //etcs-ngin didayakan/contoh

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;
    }
}

Pasang uwsgi

apt-get install uwsgi uwsgi-plugin-python

Jika anda ingin memasang semua pemalam uwsgi, anda boleh memasang pakej uwsgi-plugin-semua

konfigurasi 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>

Parameter dalam fail konfigurasi uwsgi juga boleh ditentukan melalui uwsgi pada baris arahan Selain format xml, fail konfigurasi boleh juga ditulis dalam format ini Selepas pakej perisian dipasang, akan terdapat beberapa contoh fail konfigurasi format xml dan ini dalam direktori /usr/share/doc/uwsgi/examples/conffile.

kandungan skrip_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]

Mulakan uwsgi

uwsgi -x /etc/uwsgi/apps-enabled/default.xml --daemonize /var/log/uwsgi/app/default.log

parameter uwsgi:
-m Mulakan proses induk
-p 4 Mulakan 4 proses
-s Alamat port atau soket yang digunakan
-d Jalankan dalam mod daemon Ambil perhatian bahawa selepas menggunakan -d, anda perlu menambah alamat fail log, seperti -d /var/log/. uwsgi .log
-r 10000 Selepas memulakan 10,000 proses, keluarkan semula secara automatik
-t 30 Tetapkan tamat masa 30s Selepas tamat masa, pautan akan ditinggalkan secara automatik
–had-sebagai 32 Tukar jumlah memori. daripada proses Dikawal pada 32m
-x Gunakan mod fail konfigurasi

4 utas serentak

uwsgi -s :9090 -w myapp -p 4

Benang kawalan utama + 4 utas

rreee

pelaksanaan Jika pelanggan melebihi 30 saat, ia akan menyerah terus

uwsgi -s :9090 -w myapp -m -p 4

Hadkan ruang memori kepada 128m

uwsgi -s :9090 -w myapp -m -p 4 -t 30

Layankan lebih daripada 10,000 reqs dan secara automatik respawn

uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128

berjalan di latar belakang Tunggu

uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000

Selain memulakan terus dengan arahan uwsgi, anda juga boleh memulakannya dengan skrip di bawah init.d Walau bagaimanapun, anda perlu mengubah suai laluan fail konfigurasi lalai dalam /etc/default/u wsgi dahulu, dan kemudian lulus /etc/init.d/uwsgi mula Mula

uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000 -d uwsgi.log

Mula nginx

#inherited_config=/usr/share/uwsgi/conf/default.ini
inherited_config=/etc/uwsgi/apps-enabled/default.xml

Kesannya adalah seperti berikut:

Bagaimana untuk mengkonfigurasi projek web Python menggunakan Nginx dan uWSGI

" tahniah!!! ujian uwsgi ok!!!”

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi projek web Python menggunakan Nginx dan uWSGI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam