Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Bereitstellung in Python

Detaillierte Einführung in die Bereitstellung in Python

零下一度
零下一度Original
2017-07-23 10:09:581538Durchsuche

Ich habe Flask schon eine Weile gelernt, aber ich habe es noch nie bereitgestellt, also habe ich darüber nachgedacht, wie ich es bereitstellen soll. Ich habe darüber nachgedacht, den Dienst zuerst einzurichten , und ich habe mich für Flask+uwsgi+Nginx+Ubuntu entschieden. Dies ist die Option, die mit dem Ubuntu-System geliefert wird. Es fühlt sich einfach an, es zu erlernen Derzeit ist meine eigene Flasche in Python3 geschrieben, und ich werde langsam darauf umsteigen. Lassen Sie uns das zuerst herausfinden, dann wird es sehr einfach sein, es zu optimieren. Tatsächlich weiß ich nicht viel über viele Prinzipien. Lassen Sie uns dies zunächst einrichten und langsam die darin enthaltene Logik verstehen.

Nginx

Nginx ist ein effizienter Webserver und Reverse-Proxy-Server, der als Lastausgleich verwendet werden kann (wenn n Benutzer auf den Server zugreifen, kann er die Last auslagern und teilen Im Vergleich zu Apache unterstützt Nginx eine hohe Parallelität und kann Millionen von TCP-Verbindungen und Hunderttausende gleichzeitiger Verbindungen unterstützen. Es ist einfach bereitzustellen, verbraucht weniger Speicher und ist kostengünstig viele Module wie Apache. Nginx unterstützt das uwsgi-Protokoll von uWSGI, sodass wir Nginx mit uWSGI kombinieren können und Nginx dynamische Inhalte zur Verarbeitung über uwsgi_pass an uWSGI übergibt.

Die offizielle Dokumentation finden Sie hier

Das beste Nginx-Tutorial finden Sie hier

uwsgi

uWSGI ist ein Webserver, der das WSGI-Protokoll implementiert , uwsgi, http und andere Protokolle. Die Funktion von HttpUwsgiModule in Nginx besteht im Austausch mit dem uWSGI-Server.
Achten Sie auf die Unterscheidung zwischen den drei Konzepten WSGI / uwsgi / uWSGI.
  • Studenten, die den vorherigen Abschnitt gelesen haben, wissen, dass WSGI ein Kommunikationsprotokoll ist.
  • uwsgi ist eher ein Leitungsprotokoll als ein Kommunikationsprotokoll. Es wird häufig für die Datenkommunikation zwischen dem uWSGI-Server und anderen Netzwerkservern verwendet.
  • Und uWSGI ist ein Webserver, der zwei Protokolle implementiert, uwsgi und WSGI.
uwsgi-Protokoll ist ein eigenes Protokoll des uWSGI-Servers. Es wird verwendet, um die Art der zu übertragenden Informationen zu definieren. Die ersten 4 Bytes jedes uwsgi-Pakets sind eine Beschreibung der Art der Informationen Es handelt sich im Vergleich zu WSGI um zwei verschiedene Dinge.
Vorbereitung: Zuerst installieren wir die Pakete, die wir benötigen. Zunächst einmal ist dies mein neu installiertes System, daher gibt es kein Pip, also werde ich zuerst Pip installieren
sudo apt-get install python-pip

Verwenden Sie den folgenden Befehl, um flask zu installieren

pip install flask

Nach der Installation können wir es testen,

Flasche importieren

Es wird kein Fehler gemeldet, was beweist, dass unsere Flasche erfolgreich installiert wurde. Als nächstes müssen wir also ngnix und uwsgi installieren.

sudo apt-get install nginx

Nach der Installation können wir es zuerst starten, Nginx starten Direkter Befehlszeilenstart, einfach und grob

Dies So wurde unser Nginx erfolgreich gestartet. Als nächstes verwenden wir pip, um uwsgi zu installieren.

Nachdem wir es installiert haben, beginnen wir mit der Arbeit

Zuerst erstelle ich es unter dem Python-Paket einer App,

#app/__init__.pyfrom flask import Flask
app = Flask(__name__)from app import view

Als nächstes erstellen wir view.py

from app import app
@app.route('/')def index():return 'hellow'

Dann gehen wir zur App Create hello.py

from app import appif __name__ == "__main__":
    app.run()

im gleichen Verzeichnis, dann können wir Python verwenden, um unser Programm lokal zu debuggen,

Dann können wir einen Blick in den Browser werfen, Geben Sie die Adresse ein und erhalten Sie diese. Aus dieser Sicht gibt es kein Problem mit unserem Flaschenprogramm.

Dann müssen wir als Nächstes Nginx den Webdienst übernehmen lassen.

Was ich hier getan habe, war, die Nginx-Konfigurationsdatei einfach und grob zu löschen

$ sudo rm /etc/nginx/sites-enabled/default

Als nächstes habe ich eine Konfigurationsdatei unter hellowflask erstellt

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

Eine kurze Erklärung: server_name kann ein Domänenname oder eine IP-Adresse sein. uwsgi_pass gibt die Kommunikationsmethode zwischen Nginx und uwsgi an. Was ich hier wähle, ist die angegebene Portnummer.

Dann verbinden wir unsere Konfiguration sanft mit 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

Was hier steht, ist kein willkommener Fehler, sondern ein 502-Fehler, da unsere aktuelle uwsgi-Datei noch nicht konfiguriert wurde und wir uwsgi noch nicht gestartet haben, also lasst uns Als nächstes möchte ich nur dieses UWSGI herausholen. Das folgende Beispiel ist meine Konfiguration.

[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

Zu diesem Zeitpunkt ist unser uwsgi konfiguriert, also fangen wir damit an,

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配置得当,那么排除错误是很快的。

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Bereitstellung in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn