[PYTHON] Von der Einführung von Flask unter CentOS bis zum Service unter Nginx und uWSGI

Eine Geschichte über mich, der sowohl die CentOS- als auch die Webserverkonstruktion nicht kennt, hat Flask, Nginx und uWSGI betreten. Das Verfahren ist hier zusammengefasst.

[](Ein separater Artikel beschreibt die verschiedenen Schwierigkeiten, die dabei aufgetreten sind ↓)

Annahme

Vorbereitung

Charakter

Sie sollten es entsprechend ersetzen und lesen.

user: Benutzername proj: Projektverzeichnis test.py: Schreiben Sie den Code, der Flask ausführt. Direkt unter proj platziert

Die Arbeit wird immer im Projektverzeichnis erledigt

$ cd /home/user/proj

Einführung der Flasche

Erstellen Sie mit Flask eine Umgebung, die das Erstellen von Webanwendungen mit Python vereinfacht.

Python 3-Installation

$ sudo yum install epel-release  #Legen Sie das Repository
$ sudo yum install python3-devel  #Fügen Sie python3 ein

Erstellen Sie eine virtuelle Umgebung

$ pip3 install pipenv  #Pipenv eingeführt
$ export PIPENV_VENV_IN_PROJECT=true  #Legen Sie fest, dass im Projektverzeichnis eine virtuelle Umgebung erstellt werden soll
$ pipenv --python 3  #Erstellen einer virtuellen Umgebung
$ ls -a  #Überprüfen Sie die Dateiliste

Wenn Sie bestätigen können, dass .venv erstellt wurde, ist dies in Ordnung.

Installation der erforderlichen Module

Dies ist das erforderliche Minimum.

$ pipenv install flask markupsafe

Wenn Sie sich keine Gedanken über die Migration machen möchten, installieren Sie mit pipenv anstelle von pip. Wenn andere Module erforderlich sind, installieren Sie sie auf die gleiche Weise mit "pipenv install".

Versuchen Sie es mit Flask

Flasche schreiben

Erstellen Sie test.py.

$ vi test.py

Rufen Sie den Einfügemodus mit "i" auf und schreiben Sie Folgendes. Wenn Sie mit dem Schreiben fertig sind, beenden Sie mit Esc: wq.

test.py


from flask import *

app = Flask(__name__)

@app.route("/")
def main():
    return 'Hello, World!\n'

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=80)

Es ist ein Code, der nur "Hallo, Welt!" Ausgibt, wenn auf die oberste Seite zugegriffen wird.

Kolben ausführen

Unabhängig davon, wie viele Module Sie installieren, wird es nicht gestartet, ohne die virtuelle Umgebung zu betreten.

$ pipenv shell  #Betreten Sie die virtuelle Umgebung

Führen Sie test.py aus!

$ python test.py

Verwenden Sie einen Browser wie Google Chrome, um die IP-Adresse des Servers einzugeben, der dies ausgeführt hat, um darauf zuzugreifen. Wenn "Hallo Welt!" Angezeigt wird, ist dies in Ordnung. Kehren Sie zum Terminal zurück und beenden Sie die Ausführung mit "Strg + C".

Einführung von Nginx

Einführung des Webservers mit Nginx. [](Wenn Sie bereits Apache usw. verwenden und diese Gelegenheit nutzen möchten, um sich von Apache zu lösen hier.)

Nginx-Installation

Öffnen Sie zuerst nginx.repo mit vim usw.

$ sudo vi /etc/yum.repos.d/nginx.repo

Beschreiben Sie Folgendes.

nginx.repo


[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Öffnen Sie den HTTP-Port

Stellen Sie die Firewall so ein, dass HTTP-Dienste zugelassen werden.

$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --reload

Starten Sie Nginx

$ sudo systemctl start nginx  #Sofort-Start
$ lsof -i:80  #OK, wenn Nginx angezeigt wird

Einführung von uWSGI

uWSGI ist ein Anwendungsserver, der als Vermittler zwischen Flask und Nginx fungiert.

uWSGI-Installation

$ pipenv install uwsgi

Konfigurationsdatei erstellen

$ vi test_uwsgi.ini

Beschreiben Sie Folgendes.

test_uwsgi.ini


[uwsgi]
base = /home/user/proj
app = test
module = %(app)
virtualenv = /home/user/proj/.venv
pythonpath = %(base)
socket = /tmp/test_uwsgi.sock
chmod-socket = 666
callable = app
logto = /home/user/proj/log/%n.log

Wenn Sie es selbst arrangieren möchten ↓ Zusammenfassung der Syntax der uWSGI-INI-Datei

Erstellen Sie auch ein Verzeichnis für Protokolle.

$ mkdir log

Nginx-Seiteneinstellungen

Erstellen Sie eine Konfigurationsdatei für Nginx im Verzeichnis "proj".

$ vi test_nginx.conf

Beschreiben Sie Folgendes.

test_nginx.conf


server {
  listen      80;
  server_name [IP Adresse];
  charset     utf-8;

  location / { try_files $uri @yourapplication; }
  location @yourapplication {
    include uwsgi_params;
    uwsgi_pass unix:/tmp/test_uwsgi.sock;
  }
}

Platzieren Sie einen symbolischen Link, damit Nginx beim Start darauf verweisen kann.

sudo ln -s /home/user/proj/test_nginx.conf /etc/nginx/conf.d/

Stellen Sie sicher, dass Sie einen absoluten Pfad angeben.

(Optional) Deaktivieren Sie SELinux

SELinux scheint den Zugriff unter Linux ständig zu überwachen und zu kontrollieren. Minimierung des Schadens beim Eindringen eines PCs. Wenn beim Starten von Nginx eine Fehlermeldung angezeigt wird, können Sie diese möglicherweise wie folgt beheben.

$ setenforce 0

Dadurch wird die Zugriffskontrolle deaktiviert. Es scheint, dass nur das Aktivieren des Permissive-Modus nicht bedeutet, dass es vollständig ausgeschaltet wird.

Bearbeiten Sie die Einstellungsdatei selbst so, dass sie auch nach einem Neustart nicht wiederhergestellt wird.

$ vi /etc/selinux/config  # "SELINUX=enforcing"Zu"SELINUX=permissive"Umschreiben an

Ist Sicherheit ohne SELinux sicher? Es ist gut, es zu verwenden, aber ich kam zu dem Schluss, dass es in Ordnung ist, wenn Sie die Firewall fest einstellen.

uWSGI-Funktionsprüfung

$ sudo systemctl restart nginx  #Wenn Sie SELinux nicht deaktivieren, wird hier möglicherweise eine Fehlermeldung angezeigt
$ uwsgi --ini test_uwsgi.ini  #Starten Sie uWSGI über die Konfigurationsdatei

Laden Sie den Browser neu und wenn "Hallo, Welt!" Angezeigt wird, ist es in Ordnung.

Bedienung

Lassen Sie diese automatisch starten, wenn der Server gestartet wird.

Erstellen Sie eine Konfigurationsdatei für den uWSGI-Dienst

vi /etc/systemd/system/uwsgi.service

Beschreiben Sie Folgendes.

uwsgi.service


[Unit]
Description=uWSGI
After=syslog.target

[Service]
ExecStart=/home/user/proj/.venv/bin/uwsgi --ini /home/user/proj/test_uwsgi.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target
$ cat /lib/systemd/system/nginx.service  #OK, wenn der gerade geschriebene angezeigt wird

Serviceeinstellungen

$ sudo systemctl daemon-reload  # uwsgi.Dienst neu laden
$ sudo systemctl enable uwsgi nginx  #Aktivieren Sie die uWSGI- und Nginx-Dienste

Starten Sie den Server neu und überprüfen Sie dies mit dem Browser. Wenn "Hallo Welt!" Angezeigt wird, ist dies in Ordnung. Danke für deine harte Arbeit! !!

Referenz

Recommended Posts

Von der Einführung von Flask unter CentOS bis zum Service unter Nginx und uWSGI
Erstellen Sie eine Kolben-App mit Tensorflow und Dlib für Centos7
Ein Memo mit Python2.7 und Python3 in CentOS
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
Richten Sie einen yum-Repository-Server unter CentOS 7 ein und verweisen Sie lokal und von anderen Servern usw. darauf.
Ausgabeprotokoll an die Konsole mit Flask + Nginx auf Docker
API mit Flask + uWSGI + Nginx
Stellen Sie mit ssh-Verbindung vom Mac aus eine Verbindung zu centos6 auf der Virtualbox her
Bis Hello World mit Flask + uWSGI + Nginx @ Sakuras VPS (CentOS 6.6)
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Schritte zum Einrichten von Pipenv, Erstellen einer CRUD-App mit Flask und Containerisieren mit Docker
Erstellen einer Python-Entwicklungsumgebung unter Windows - Von der Installation von Anaconda bis zur Verknüpfung von Atom und Jupyter Notebook -
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Der Weg zur Installation von Python und Flask auf einem Offline-PC
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Alles vom Erstellen einer Python-Umgebung bis zur Ausführung unter Windows
Laden Sie Daten mit einem Befehl und einer Aktualisierung auf s3 von aws hoch und löschen Sie die verwendeten Daten (unterwegs).
2. Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (2. Grundlagen des Python-Programms)
Machen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (4. Datenstruktur)
Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (5. Information Entropy)
Machen Sie Jupyter Notebook zu einem Dienst unter CentOS
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Erstellen Sie einen Webdienst mit Docker + Flask
Die Geschichte eines virtuellen Planetariums [bis es einem Anfänger gelingt, ein Modell mit einem Skript zu erstellen]
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Eine Geschichte über einen Versuch, uwsgi auf einer fehlgeschlagenen EC2-Instanz zu installieren
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Lassen Sie uns mit Flask eine Webanwendung zur Konvertierung von A nach B erstellen! Von Grund auf neu ...
Der Weg, um die Verbindung zwischen Nginx, Django und Uwsgi zu bekämpfen und ein wenig zu gewinnen
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Ich habe versucht, Flask auf Raspberry Pi 3 Model B + mit Nginx und uWSGI auszuführen
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Bis Python mit Pythonbrew installiert ist und Flask auf dem WSGI-Server ausgeführt wird
Ein Memorandum, um WebDAV nur mit Nginx zu erstellen
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Hallo Welt mit Nginx + Uwsgi + Python auf EC2
Starten Sie einen Webserver mit Python und Flask
Starten Sie CentOS 8 von Windows 10 mit Wake On LAN
So legen Sie einen freigegebenen Ordner mit dem Host-Betriebssystem in CentOS7 auf Virtual BOX fest
Vom Anfangszustand von CentOS8 bis zum Ausführen von PHP Python Perl Ruby mit Nginx
Steuern Sie die Musikwiedergabe auf einem Smartphone, das mit Raspberry Pi 3 und Bluetooth mit AVRCP verbunden ist
Verfahren zum Anhängen und Debuggen von VS-Code an Jupyter Lab auf einem Remote-Server
Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.
[Einführung in den Systemhandel] Ich habe einen Stochastic Oscillator mit Python gezeichnet und damit gespielt ♬
Ein einfaches System, das automatisch mit Objekterkennung aufnimmt und an LINE sendet
Erstellt eine Web-App, die IT-Ereignisinformationen mit Vue und Flask abbildet
Mit der Docker-Version der Nginx-Einheit war es ein wenig schwierig, eine Flasche zu machen
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
Schritte zum schnellen Erstellen einer umfassenden Lernumgebung auf einem Mac mit TensorFlow und OpenCV
Bis Sie mit Python unter Windows 7 eine maschinelle Lernumgebung erstellen und ausführen
Memo Ein Anfänger hat versucht, eine Java-Umgebung zu erstellen und unter Ubuntu 18.04.2 LTS ins Japanische zu übersetzen.
Ein Schüler erstellte einen Echtzeit-Sprachkonvertierungsdienst und schickte ihn an Github.
Verfahren zum Generieren und Speichern eines Lernmodells durch maschinelles Lernen, Erstellen eines API-Servers und Kommunizieren mit JSON über einen Browser
Ich möchte mit Python nur das Gesicht aus einem Personenbild ausschneiden und speichern ~ Gesichtserkennung und Zuschneiden mit face_recognition ~
Versuchen Sie, eine einfache Website mit Responder und sqlite3 zu erstellen
Ich möchte mit einem Knopf am Kolben übergehen