12 01 Installation de environnement nonginx
Eragon edited this page 2024-03-14 14:48:15 +01:00

Attention : le projet est développé sous python 3
Ceci est un tutoriel pour mettre en place un environnement de développement local, nécessaire pour faire des tests et des vérifications quand on édite le code de la v5.
Si vous n'êtes pas familiers avec Linux, vous pouvez essayer malgré tout sous votre système actuel, mais vous serez seul dans votre essai.

Note : Ce tutoriel a besoin d'être complété.

  • Comme il n'y a pas encore de scripts sur le dépôt, on brasse du vent dans les noms de fichiers.
  • Il faut fournir une base de données de test.
  • Certaines modifications vont affecter le dépôt git, ce qu'il faut éviter à tout prix.

Préliminaires

Pour ce tutoriel, je suppose que vous disposez :

  • D'une machine sous Linux(ou alors vous vous débrouillez pour installer les logiciels, je veux bien donner des commandes mais je peut pas tout faire)
  • Des droits administrateurs
  • De connaissances préalables sur l'utilisation de la ligne de commande
  • D'une installation de python 3 et de pip fonctionnelle

Si vous ne comprenez pas tout ce qui se passe ici, ce n'est pas grave ! Parlez-en sur le forum, on pourra vous expliquer et vous aider à vous sortir d'une situation périlleuse.

Création et configuration de l'environnement virtuel

Placez vous répertoire où vous avez clôné le dépôt de la v5. On va y configurer Python et Flask (un framework web avec lequel la v5 est développé) pour qu'ils servent le serveur de développement. Afin de ne pas déranger ce qui se passe d'autre sur votre machine, on va le faire dans un environnement séparé appelé environnement virtuel ou virtualenv pour les anglais. La commande suivante crée un environnement virtuel dans le répertoire venv.

$ python -m venv venv

Ce qui suit est très important. Vous allez pouvoir rentrer dans l'environnement virtuel en l'activant. Pour cela, chargez le script activate qui est fourni avec l'environnement virtuel :

$ source venv/bin/activate # Pour Linux
$ venv\Scripts\activate # Pour Windows

Comme vous pouvez le voir votre prompt change légèrement et est maintenant précédé de la mention (venv) pour vous rappeler que vous êtes dans l'environnement virtuel. Et puisque vous y êtes, vous allez pouvoir y installer notre framework, Flask. En plus de ça, on installe un certain nombre de modules Flask utilisés par la v5.

(venv) $ pip3 install flask
(venv) $ pip3 install flask-login flask-migrate flask-script flask-sqlalchemy flask-wtf flask-mail flask-crontab python-dotenv python-slugify python-ldap Pillow email_validator pyyaml markdown bleach

# Optionnel
(venv) $ pip3 install flask-debugtoolbar

NB: Cette liste de dépendances peut ne pas être à jour. Référez vous au fichier REQUIREMENTS.txt de la branche de travail.

Flask est un framework qui nous aide à créer un site web. Il fait la plupart du boulot pour nous : il génère du HTML, il gère la base de données, la connexion des membres, (presque)toutes les URLs, et plein d'autres choses.

Configuration de la base de données PostgreSQL

Installez PostgreSQL: les paquets sont postgresql (le SGBD) et psycopg2 (bibliothèque Python pour y accéder par Flask) sous ArchLinux, python-psycopg2 pour Ubuntu. Utilisateurs de windows débrouillez-vous, désolé. (Mais si par hasard vous arrivez à faire cette étape, signalez-le nous on arrivera peut-être à remplir cette section pour vous aussi.)

Ensuite connectez-vous en tant qu'utilisateur postgres, qui est l'administrateur de tout le système PostgreSQL. Vous devrez initialiser le stockage de base de données et créer un nouvel utilisateur avec des droits restreints. Je vous suggère de le nommer comme votre compte utilisateur.

lephe$ sudo -iu postgres
postgres$ initdb -D /var/lib/postgres/data
postgres$ createuser lephe

Ensuite créez une base de données dont le nouvel utilisateur sera le propriétaire.

postgres$ createdb -O lephe pcv5

Quittez votre connexion en tant que postgres et démarrez/activez le SGBD dans votre gestionnaire d'init.

postgres$ exit
lephe$ sudo systemctl start postgresql
lephe$ sudo systemctl enable postgresql

Vous pouvez ensuite lancer le shell PostgreSQL pour manipuler votre base de données :

lephe$ psql -d pcv5

Si votre utilisateur PostgreSQL ne s'appelle pas comme votre compte Linux, ajoutez -U <utilisateur>.

Ensuite, dans le script config.py du dépôt, configurez l'accès à la bdd :

    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'postgresql+psycopg2://' + os.environ.get('USER') + ':@/pcv5'

Ce code, qui est présent sur le dépôt, marchera automatiquement si vous avez choisi un nom d'utilisateur identique à votre nom de compte. (Sinon on pourra rajouter une variable d'environnement pour personnaliser.)

Il ne vous reste plus qu'à initialiser flask et la base de donnée. Si vous voulez changer les valeurs qui sont par défaut dans le fichier .env, vous pouvez faire :

(venv) $ export FLASK_APP=V5.py FLASK_DEBUG=1 # pour Linux
(venv) $ set FLASK_APP=V5.py FLASK_DEBUG=1 # pour Windows

puis, pour initialiser flask :

(venv) $ flask db init
(venv) $ flask db upgrade

Lancer le serveur

(venv) $ flask run

Si tout se passe bien vous devriez avoir ceci :

Serving Flask app "V5" Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Pour voir le résultat il faut se rendre l'adresse localhost:5000

Bonus

Si vous avez quitté la session en cours il faut refaire les commandes :

$ source venv/bin/activate # Pour Linux
$ venv\Scripts\activate # Pour Windows

puis

(venv) $ export FLASK_APP=V5.py FLASK_DEBUG=1 # pour Linux
(venv) $ set FLASK_APP=V5.py FLASK_DEBUG=1 # pour Windows

Si vous avez modifié la structure de la base de données il vous faut stopper le serveur (CTRL+C) puis exécuter les commandes :

(venv) $ flask db migrate -m "<un autre nom sympa>"
(venv) $ flask db upgrade

puis relancer le serveur avec :

(venv) $ flask run