Bagaimana untuk mengkonfigurasi projek web Python menggunakan Nginx dan uWSGI

WBOY
Lepaskan: 2023-05-17 20:52:04
ke hadapan
1629 orang telah melayarinya

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
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

Pasang uwsgi

apt-get install uwsgi uwsgi-plugin-python
Salin selepas log masuk

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>
Salin selepas log masuk

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]
Salin selepas log masuk

Mulakan uwsgi

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

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
Salin selepas log masuk

Benang kawalan utama + 4 utas

rreee

pelaksanaan Jika pelanggan melebihi 30 saat, ia akan menyerah terus

uwsgi -s :9090 -w myapp -m -p 4
Salin selepas log masuk

Hadkan ruang memori kepada 128m

uwsgi -s :9090 -w myapp -m -p 4 -t 30
Salin selepas log masuk

Layankan lebih daripada 10,000 reqs dan secara automatik respawn

uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128
Salin selepas log masuk

berjalan di latar belakang Tunggu

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

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
Salin selepas log masuk

Mula nginx

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

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!