Ceci est une ancienne révision du document !
Déploiement via ssh avec la commande rsync.
À lire : https://www.bogotobogo.com/python/Flask/Python_Flask_HelloWorld_App_with_Apache_WSGI_Ubuntu14.php
Serveur Ubuntu 20.04 avec Apache 2.4.
Installer mod_wsgi
sudo apt install libapache2-mod-wsgi-py3
Installer python3-venv
sudo apt install python3-venv
Créer un dossier
sudo mkdir /var/www/monsite sudo chmod marc:marc /var/www/monsite
Ajouter au projet un script deploy.sh :
#!/bin/sh rsync -av ./ USER@SERVEUR:/var/www/monsite/ \ --exclude-from=.gitignore \ --exclude=".*" --exclude="run.py"
Ne pas oublier de terminer les chemins par des “/” |
---|
Rendre le script exécutable :
chmod +x deploy.sh
Exécuter une première fois le script, ce qui va copier l'ensemble du projet sur le serveur.
Créer un environnement virtuel
cd /var/www/monsite python3 -m venv venv
Activer l'environnement virtuel et y installer les dépendances du projet
source venv/bin/activate pip install -r requirements.txt
Désactiver l'environnement virtuel
deactivate
Créer un fichier myapp.wsgi à la racine du projet :
#!/usr/bin/python import os, sys sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) from app import app as application
Créer un nouveau VirtualHost :
<VirtualHost *:80> ServerName monsite.com ServerAdmin admin@monsite.com WSGIDaemonProcess myapp user=www-data group=www-data python-home=/var/www/monsite/venv threads=5 WSGIProcessGroup myapp WSGIScriptAlias / /var/www/monsite/myapp.wsgi <Directory /var/www/monsite/static> AllowOverride all Require all granted Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/monsite.com/error.log CustomLog ${APACHE_LOG_DIR}/monsite.com/access.log combined </VirtualHost>
Le dossier /var/log/apache2/monsite.com pour les logs doit exister.
Activer le site et recharger Apache :
sudo a2ensite monsite.conf sudo systemctl reload apache2