Maison  >  Article  >  développement back-end  >  Introduction détaillée au déploiement en Python

Introduction détaillée au déploiement en Python

零下一度
零下一度original
2017-07-23 10:09:581538parcourir

J'apprends Flask depuis un moment, mais je ne l'ai jamais déployé, alors je réfléchissais à la façon de le déployer. J'y ai réfléchi, commençons par lancer le service, alors j'ai pensé à le faire en premier. , et j'ai choisi ici. C'est Flask+uwsgi+Nginx+Ubuntu. L'option Python est 2.7.2. C'est celle qui est fournie avec le système Ubuntu. Cela semble simple à apprendre sans avoir à passer par le logiciel. connexion. Actuellement, mon propre flacon est écrit en python3, et je vais y passer lentement, comprenons d'abord cela, puis il sera très facile à optimiser. En fait, je ne connais pas grand-chose à de nombreux principes. Commençons par configurer cela et comprenons lentement la logique à l'intérieur.

Nginx

Nginx est un serveur Web et un serveur proxy inverse efficace qui peut être utilisé comme équilibrage de charge (lorsque n utilisateurs accèdent au serveur, il peut décharger et partager la charge de la pression du serveur), par rapport à Apache, Nginx prend en charge une concurrence élevée et peut prendre en charge des millions de connexions TCP et des centaines de milliers de connexions simultanées. Il est simple à déployer, consomme moins de mémoire et a un faible coût. de nombreux modules comme Apache. Nginx prend en charge le protocole uwsgi de uWSGI, nous pouvons donc combiner Nginx avec uWSGI, et Nginx transmet le contenu dynamique à uWSGI pour traitement via uwsgi_pass.

La documentation officielle est ici

Le meilleur tutoriel Nginx est ici

uwsgi

uWSGI est un serveur Web qui implémente le protocole WSGI , uwsgi, http et autres protocoles. La fonction de HttpUwsgiModule dans Nginx est d'échanger avec le serveur uWSGI.
Faites attention à la distinction entre les trois concepts WSGI / uwsgi / uWSGI.
  • Les étudiants qui ont lu la section précédente sauront que WSGI est un protocole de communication.
  • uwsgi est un protocole de ligne plutôt qu'un protocole de communication. Il est souvent utilisé pour la communication de données entre le serveur uWSGI et d'autres serveurs réseau.
  • Et uWSGI est un serveur Web qui implémente deux protocoles, uwsgi et WSGI.
Le protocole uwsgi est le propre protocole d'un serveur uWSGI. Il est utilisé pour définir le type d'informations à transmettre. Les 4 premiers octets de chaque paquet uwsgi sont une description du type d'informations. à transmettre. Par rapport à WSGI, ce sont deux choses différentes.
Préparation, tout d'abord, installons les packages dont nous avons besoin Tout d'abord, c'est mon système nouvellement installé, donc il n'y a pas de pip, je vais donc d'abord installer pip
sudo apt-get install python-pip
Utilisez la commande suivante pour installer flask

pip install flask
Après l'installation, nous pouvons le tester,

import flask

Aucune erreur n'est signalée, ce qui prouve que notre flask est installé avec succès. La prochaine chose que nous devons faire est d’installer ngnix et uwsgi.

sudo apt-get install nginx
Après l'installation, nous pouvons le démarrer d'abord, nginx start Démarrage direct en ligne de commande, simple et grossier

Ceci façon Notre nginx a démarré avec succès. Ensuite, nous utilisons pip pour installer uwsgi

Après l'avoir installé, commençons à travailler

Je le crée d'abord sous hellowflak Le package python d'une application,

.

#app/__init__.pyfrom flask import Flask
app = Flask(__name__)from app import view
Ensuite, nous créons view.py

from app import app
@app.route('/')def index():return 'hellow'
Ensuite, nous allons dans l'application Créer hello.py

from app import appif __name__ == "__main__":
    app.run()
dans le répertoire de même niveau, puis nous pouvons utiliser Python pour déboguer notre programme localement,

Ensuite, nous pouvons jeter un œil dans le navigateur, entrez l'adresse et obtenez ceci. De ce point de vue, il n'y a aucun problème avec notre programme de flacons.

Ensuite, ce que nous devons faire est de laisser nginx prendre en charge le service Web.

Ce que j'ai fait ici, c'est simplement et grossièrement supprimer le fichier de configuration nginx

$ sudo rm /etc/nginx/sites-enabled/default
Ensuite, j'ai créé un fichier de configuration sous hellowflask

server {
    listen      8081;
    server_name 127.0.0.1;
    charset     utf-8;
    client_max_body_size 75M;

    location / { try_files $uri @app; }
    location @app {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9000;
    }
}
Une brève explication : server_name peut être un nom de domaine ou une adresse IP. uwsgi_pass indique la méthode de communication entre Nginx et uwsgi. Ce que j'ai choisi ici est le numéro de port spécifié.

Ensuite, connectons en douceur notre configuration à nginx.

<code class="hljs groovy">sudo ln -s <span class="hljs-regexp"><span class="hljs-regexp">/home/liwanlei/Desktop/hellowflask/<span class="hljs-regexp">helloflask_nginx.conf /etc<span class="hljs-regexp">/nginx/conf.d/<br>这样我们再去启动我们的nginx,</span></span></span></span></code>
sudo /etc/init.d/nginx restart
Ce qu'il y a ici n'est pas un accueil, mais une erreur 502, car notre fichier uwsgi actuel n'a pas encore été configuré et nous n'avons pas démarré uwsgi, alors allons-y ensuite, je veux juste sortir cet uwsgi. L'exemple suivant est ma configuration.

[uwsgi]    
    base = /home/liwanlei/Desktop/hellowflask
    app = hello#module = %(app)pidfile = /var/run/uwsgi.pid
    master = true
    wsgi-file = /home/liwanlei/Desktop/hellowflask/hello.py
    pythonpath = /usr/bin/python
    chdir = /home/liwanlei/Desktop/hellowflask
    socket = 127.0.0.1:9000callable = app
    logto = %n.log
    plugins = python
    processes = 8master = true
À ce stade, notre uwsgi a été configuré, alors commençons-le,

sudo /usr/bin/uwsgi --ini/home/liwanlei/Desktop/hellowflask/helloflask_uwsgi.ini

我们去重新启动我们的nginx,

<code class="hljs bash">sudo nginx <span class="hljs-_">reload<br>平滑重启可以用用,重新加载配置文件,用新的工作进程代替旧的工作进程。<br></span></code>
sudo nginx -s reload
<code class="hljs bash"><span class="hljs-_"><br>启动后,我这里修改了地址,这里就可以直接访问了,那么我们的部署这样就算可以了,简单的。<br><img src="https://img.php.cn/upload/article/000/000/001/25f4d9be3a729ae5fc17c2fefb915c9c-3.jpg" alt=""></span></code>
 <br>

完工之后,感觉还是很简单的 有问题那么就去看log,只要log配置得当,那么排除错误是很快的。

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!

Déclaration:
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