Maison > Opération et maintenance > Nginx > Comment configurer un projet Web Python à l'aide de Nginx et uWSGI

Comment configurer un projet Web Python à l'aide de Nginx et uWSGI

WBOY
Libérer: 2023-05-17 20:52:04
avant
1702 Les gens l'ont consulté

Pour les projets Web basés sur Python, les méthodes de déploiement courantes sont :

  • fcgi : utilisez spawn-fcgi ou les outils fournis avec le framework pour générer des moniteurs pour chaque processus de projet, puis interagissez avec le service http.

  • wsgi : Utilisez le module mod_wsgi du service http pour exécuter chaque projet.

Mais il y a aussi uwsgi, qui n'utilise ni le protocole wsgi ni le protocole fcgi, mais crée un protocole uwsgi. Selon l'auteur, le protocole concerne. fcgi 10 fois plus rapide que le protocole. Les principales fonctionnalités d'uwsgi sont les suivantes :

  • Performances ultra-rapides.

  • Faible utilisation de la mémoire (mesurée comme étant environ la moitié de mod_wsgi d'apache2).

  •          Gestion multi-applications.

  • Fonction de journal détaillée (peut être utilisée pour analyser les performances et les goulots d'étranglement de l'application).

  • Hautement personnalisable (limite de taille mémoire, redémarrage du service après un certain nombre de fois, etc.).

Environnement ubuntu 12.04 ip:10.1.6.79

Installer ee# 🎜🎜 #nginxconfig/etc/nginx/sites-enabled/example

apt-get install nginx-full nginx-common
Copier après la connexion

Install uwsgi

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;
    }
}
Copier après la connexion
Si vous souhaitez installer tous les plug-ins uwsgi , Vous pouvez installer le package logiciel uwsgi-plugin-all

uwsgi configuration/etc/uwsgi/apps-enabled/default.xml

apt-get install uwsgi uwsgi-plugin-python
Copier après la connexion

Les paramètres dans le fichier de configuration uwsgi peut également être trouvé dans La ligne de commande est spécifiée via uwsgi En plus du format XML, le fichier de configuration peut également être écrit au format ini. Une fois le progiciel installé, il y aura des fichiers de configuration au format XML et ini dans le /. Exemple de répertoire usr/share/doc/uwsgi/examples/conffile.

wsgi_configuration_module.py contenu du script

<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>
Copier après la connexion

Démarrer uwsgi

#!/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]
Copier après la connexion
uwsgi Paramètres : #🎜 🎜# -m Démarrez le processus maître -p 4 Démarrez 4 processus

-s L'adresse du port ou du socket utilisé

-d Exécuté en mode démon. Notez qu'après avoir utilisé -d, vous devez ajouter un fichier journal. adresse, telle que -d /var/log/uwsgi.log
-r 10000 Après avoir démarré 10 000 processus, réapparaissez-les automatiquement
-t 30 Définissez un délai d'attente de 30 secondes. Après le délai d'attente, le lien sera. automatiquement abandonné
–limit-as 32 Contrôler la mémoire totale du processus à 32 m
-x Utiliser le mode profil

4 threads simultanés

uwsgi -x /etc/uwsgi/apps-enabled/default.xml --daemonize /var/log/uwsgi/app/default.log
Copier après la connexion
# 🎜🎜#Thread de contrôle principal + 4 threads

uwsgi -s :9090 -w myapp -p 4
Copier après la connexion

Les clients qui s'exécutent pendant plus de 30 secondes abandonneront directement

uwsgi -s :9090 -w myapp -m -p 4
Copier après la connexion

Espace mémoire limité 128 m#🎜 🎜#

uwsgi -s :9090 -w myapp -m -p 4 -t 30
Copier après la connexion

Service de plus de 10 000 demandes de réapparition automatique

uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128
Copier après la connexion

Fonctionnement en arrière-plan, etc.

uwsgi -s :9090 -w myapp -m -p 4 -t 30 --limit-as 128 -r 10000
Copier après la connexion
# 🎜 🎜# En plus de l'utilisation directe En plus de démarrer la commande uwsgi, vous pouvez également utiliser le script sous init.d pour démarrer, mais vous devez d'abord modifier le chemin du fichier de configuration par défaut dans /etc/default/u wsgi, puis démarrez-le via /etc/init.d/uwsgi start

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

Start nginx


#inherited_config=/usr/share/uwsgi/conf/default.ini
inherited_config=/etc/uwsgi/apps-enabled/default.xml
Copier après la connexion

L'effet est le suivant : #🎜 🎜#

#🎜🎜 #Tester si uwsgi est disponible

Test script test.py
#🎜 🎜#

/etc/init.d/nginx start
Copier après la connexion
#!/usr/bin/python
def application(env,start_response):
  start_response(&#39;200 ok&#39;,[(&#39;content_type&#39;,&#39;text/html&#39;)])
  return "congraduation!!! uwsgi testing ok!!!
Copier après la connexion

IP d'entrée du navigateur : Port : 192.168.1.99:9090#🎜🎜 #Vous pouvez voir « félicitations !!! test uwsgi ok !!! »

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal