[PYTHON] Stellen Sie einen Flask-Server auf einer virtuellen Maschine wie Azure oder AWS bereit

Dir gefällt das

Ich habe viel recherchiert, um einen API-Server mit Flask in Hackason zu erstellen, also habe ich ihn von Anfang an zusammengefasst.

Annahme

--Erstellte virtuelle Maschine mit Azure, AWS, GCP usw. --ssh Verbindung wird hergestellt

Umgebung

--AWS EC2-Instanz

Hauptgeschichte

1. Installation der erforderlichen Pakete

#Installieren Sie apache2#
$ sudo apt install apache2 apache2-dev

#Python-Installation#
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
#Die zuletzt angezeigte Einstellung~/.Beschrieben in bashrc

#Installierbare Anaconda-Versionen anzeigen
$ pyenv install -l | grep anaconda
#Installieren Sie Anaconda
$ pyenv install anaconda3-5.3.1
#Anakonda aktivieren
$ pyenv global anaconda3-5.3.1

#Erstellen Sie eine Umgebung für Anaconda
$ conda create -n <hoge> python=3.6
$ conda activate <hoge>
# flask, mod_wsgi Installation
$ conda install flask
$ pip install mod_wsgi

2. Erstellen Sie eine Anwendung mit dem Kolben

Erstellen Sie ein Verzeichnis "flask_app" unter "/ var / www /" und platzieren Sie die folgenden Dateien.

/var/www/flask_app/app.py


from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, Flask!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

/var/www/flask_app/adapter.wsgi


import sys
sys.path.insert(0, '/var/www/flask_app')

from app import app as application

3. Fügen Sie die Apache2-Konfigurationsdatei hinzu

/etc/apache2/conf-available/flask.conf


LoadModule wsgi_module /home/<user>/.pyenv/versions/anaconda3-5.3.1/envs/<hoge>/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIPythonHome /home/<user>/.pyenv/versions/anaconda3-5.3.1/envs/<hoge>/
<VirtualHost *:80>
  ServerName <server-ip>:80
  DocumentRoot /var/www/flask_app
  WSGIDaemonProcess flask_app user=<user> group=<user> threads=5
  WSGIScriptAlias / /var/www/flask_app/adapter.wsgi
  <Directory "/var/www/flask_app/">
    WSGIProcessGroup flask_app
    WSGIApplicationGroup %{GLOBAL}
    WSGIScriptReloading On
    Require all granted
  </Directory>
</VirtualHost>

Das Obige ist nur ein Beispiel. Bitte vervollständigen Sie die Teile "", "" und "" für den angemeldeten Benutzer, den Namen der Anaconda-Umgebung und die Server-IP-Adresse (Domäne). Außerdem können sich "LoadModule" und "WSGIPythonHome" je nach Umgebung unterscheiden.

So finden Sie LoadModule

Wenn Sie den folgenden Befehl ausführen, nachdem Sie die Umgebung aktiviert haben, in der der Kolben installiert ist, wird das Verzeichnis angezeigt, in dem das Paket installiert ist.

$ python -c "import sys; print(sys.path)"

Suchen Sie darin nach mod_wsgi und überprüfen Sie den Pfad. Machen Sie keinen Fehler beim Ergänzen von Registerkarten

$ ls /home/<user/.pyenv/versions/anaconda3-5.3.1/envs/<hoge>/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

4. Aktivieren Sie die hinzugefügte Konfigurationsdatei

$ sudo a2enconf flask

5. Starten Sie apache2 neu

$ sudo systemctl restart apache2.service

Verbindungsbestätigung

Greifen Sie mit einem Browser auf "http: // " zu. (Beachten Sie, dass es nicht https ist) Wenn "Hallo, Flasche!" Angezeigt wird, ist dies erfolgreich.

Wenn Sie keine Verbindung herstellen können oder ein Fehler auftritt.

--Überprüfen Sie, ob Port 80 der virtuellen Maschine geöffnet ist

$ sudo systemctl status apache2.service

$ sudo tail /var/log/apache2/error.log

Future work

Recommended Posts

Stellen Sie einen Flask-Server auf einer virtuellen Maschine wie Azure oder AWS bereit
Stellen Sie die Flask-App für Heroku bereit (bitter)
Stellen Sie die Flask-App auf Heroku bereit
Stellen Sie die Flask-App auf Heroku bereit
Erstellen Sie eine Django-App auf Docker und stellen Sie sie in AWS Fargate bereit