[PYTHON] Déployer l'application flask avec mod_wsgi (à l'aide de pipenv)

introduction

Le déploiement d'applications Flask à l'aide de mod_wsgi (+ Apache) est également une méthode populaire décrite dans la documentation officielle (https://flask.palletsprojects.com/en/0.12.x/deploying/mod_wsgi/). Cependant, d'après ce que j'ai lu, l'explication n'est pas conviviale pour les débutants. Je ne savais pas quoi faire car le script était cassé à des moments clés.

De plus, j'essayais d'utiliser Pipenv pour la gestion des packages des applications Flask, mais quand il s'agissait de combiner Pipenv avec mod_wsgi et flask, je n'ai pas trouvé de succès en anglais.

Lorsque j'ai vraiment essayé pendant environ une journée entière, le déploiement de l'application avec la combinaison ci-dessus nécessitait une procédure légèrement compliquée, alors j'aimerais l'écrire ici comme un mémorandum pour moi-même.

Composition environnementale

La route du déploiement

1. Installez Apache, mod_wsgi

$ sudo apt install apache2
$ sudo apt install libapache2-mod-wsgi-py3

Il semble que vous deviez spécifier libapache2-mod-wsgi-py3 au lieu de libapache2-mod-wsgi lorsque vous utilisez Python 3. Je pense que c'est un point assez addictif.

2. Ajoutez l'application Flask au dossier public Apache

Ajoutez l'application Flask sous / var / www / html. Cette fois, faisons en sorte que le programme affiche uniquement Hello, World pour des raisons de simplicité.

Créez un dossier wsgi-scripts sous html et enregistrez les fichiers suivants sous le nom hello.py.

/var/www/html/wsgi-scripts/hello.py


from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello from flask!'

if __name__ == '__main__':
    app.run()

Si tu peux écrire

$ pipenv install
$ pipenv install flask

Créons un environnement virtuel avec.

3. Ajoutez un fichier wsgi

Ajoutez le fichier wsgi dans le même dossier que l'application flask. C'est le fichier dont vous aurez besoin pour exécuter sur votre serveur de production. Cela semble un peu étrange, mais il semble que ce soit un script wsgi. Cela semble compliqué, mais à l'exception de la dernière ligne, c'est une préparation pour l'utilisation de mod-wsgi et pipenv.

/var/www/html/wsgi-scripts/myapp.wsgi


activate_this = '/home/hoge/.local/share/virtualenvs/wsgi-scripts-XXXXXX/bin/activate_this.py'
with open(activate_this) as file_:
  exec(file_.read(), dict(__file__=activate_this))

import sys
sys.path.insert(0, 'var/www/html/wsgi-scripts')

from hello import app as application

Ici, le chemin correspondant à ʻactivate_thisdoit être modifié en fonction de l'environnement individuel. Le point est le chemin de virtualenv, mais comme méthode de confirmation, vous pouvez copier le chemin qui apparaît lorsque vous démarrezpipenv shell`.

4. Ajoutez le fichier conf

De là, c'est le cadre d'Apache. Ajoutons wsgi.conf à / etc / apache2 / conf-available /.

`/etc/apache2/conf-available/wsgi.conf``

```conf`

WSGIDaemonProcess myapp

WSGIProcessGroup myapp WSGIApplicationGroup %{GLOBAL}

WSGIScriptAlias /myapp /var/www/html/wsgi-scripts/myapp.wsgi

<Directory /var/www/html/wsgi-scripts> Require all granted


 Si vous souhaitez simplement exécuter wsgi, il vous suffit d'écrire WSGIScriptAlias, mais si vous souhaitez déplacer l'application Flask, vous devez également écrire d'autres paramètres.

 Après l'écriture, activez le site avec la commande suivante.

$ sudo a2enconf wsgi $ sudo sytemctl reload apache2


 Allez maintenant sur http: // localhost / myapp et vous devriez voir `hello from flask`.

 cette? Quand je l'ai écrit, la quantité de travail était étonnamment faible ...


Recommended Posts

Déployer l'application flask avec mod_wsgi (à l'aide de pipenv)
Déployez Flask avec ZEIT maintenant
Comment déployer une application Web créée avec Flask sur Heroku
(Échec) Déployer une application Web créée avec Flask avec heroku
Exécutez l'application avec Flask + Heroku
Déployer l'application Flask sur heroku (amer)
Exécutez python3 Django1.9 avec mod_wsgi (déployer)
Déployez l'application Flask sur Heroku
Créez une API en utilisant hug avec mod_wsgi
Déployez l'application Flask sur heroku
Stockage de table Azure avec l'application PTVS Flask
Utilisation de la poésie avec des poissons (migration depuis Pipenv)
Créez une application Web simple avec Flask
Application Web facile avec Python + Flask + Heroku
Je ne peux plus déployer avec le moteur d'application Google
Premiers pas avec Heroku, déploiement de l'application Flask
Créez une application de composition d'images avec Flask + Pillow
Gagnez l'application Web Python + Flask avec Jenkins
Utilisation de Flask avec la configuration Nginx + gunicorn [Environnement local]
Apprentissage automatique facile avec scikit-learn et flask ✕ Application Web
Essayez de créer une API RESTful avec MVC à l'aide de Flask 1.0.2
Déployer une application existante avec docker + pyenv-virtualenv + uwsgi + django
Déployer l'application Django créée avec PTVS sur Azure
[GitHub] Jusqu'à ce que vous tiriez avec ssh à l'aide des clés Deploy
Construisez rapidement Apache + Pipenv + Flask + SQLAlchemy avec Sakura VPS
Mémo de travail que j'ai essayé i18n avec l'application Flask
Déployez des applications Web en temps réel avec Swampdragon x Apache
Déployer une application Web créée avec Streamlit sur Heroku
J'ai essayé d'utiliser Pipenv
Restriction IP avec Flask
Étapes pour configurer Pipenv, créer une application CRUD avec Flask et la conteneuriser avec Docker
Bonjour le monde sur flacon
Programmation avec Python Flask
Déployer des applications Go sur Google App Engine avec des actions GitHub