forked from DGNum/gestioCOF
On fait tourner GestioCOF avec daphne derrière un reverse-proxy Apache sur la VM Vagrant tout comme sur le serveur de production. On peut tester en local GestioCOF en “conditions réelles”. Le serveur lancé avec `python manage.py runserver 0.0.0.0:8000` est toujours accessible à la même url `localhost:8000`. Le (nouveau) serveur apache est accessible à `localhost:8080`. Pour appliquer les changements dans le code au serveur type prod, il faut relancer le worker : `sudo supervisorctl restart worker`. Alors que le serveur de dev se relance tout seul. NB important : ce patch supprime le mot de passe sur le serveur redis en dev, pour faire marcher ce nouveau setup avec un version précédente de la VM, il faut lancer `sudo redis-cli config set requirepass ""`
202 lines
7.7 KiB
Markdown
202 lines
7.7 KiB
Markdown
# GestioCOF
|
|
|
|
## Installation
|
|
|
|
### Vagrant
|
|
|
|
La façon recommandée d'installer GestioCOF sur votre machine est d'utiliser
|
|
[Vagrant](https://www.vagrantup.com/). Vagrant permet de créer une machine
|
|
virtuelle minimale sur laquelle tournera GestioCOF; ainsi on s'assure que tout
|
|
le monde à la même configuration de développement (même sous Windows !), et
|
|
l'installation se fait en une commande.
|
|
|
|
Pour utiliser Vagrant, il faut le
|
|
[télécharger](https://www.vagrantup.com/downloads.html) et l'installer.
|
|
|
|
Si vous êtes sous Linux, votre distribution propose probablement des paquets
|
|
Vagrant dans le gestionnaire de paquets (la version sera moins récente, ce qui
|
|
peut parfois poser des problèmes de compatibilité).
|
|
|
|
Vagrant permet d'utiliser différents types de machines virtuelles; par défaut
|
|
il utilise [Virtualbox](https://www.virtualbox.org/) qu'il vous faudra
|
|
également installer.
|
|
|
|
Une fois ces dépendances installées voici quelques commandes importantes pour
|
|
gérer la machine virtuelle :
|
|
|
|
- `vagrant up` permet de lancer la machine virtuelle. Si une machine virtuelle
|
|
existe déjà, elle sera réutilisée; sinon, Vagrant va créer et configurer une
|
|
nouvelle machine virtuelle pour vous (la première fois que vous lancez cette
|
|
commande, Vagrant va télécharger une image d'Ubuntu; il vaut mieux avoir une
|
|
connexion Internet pas trop mauvaise).
|
|
|
|
- `vagrant suspend` permet de sauver l'état de la machine virtuelle sur le
|
|
disque pour la relancer plus tard (y compris après un reboot) avec `vagrant
|
|
up`
|
|
|
|
- `vagrant halt` permet d'éteindre la machine virtuelle (par comparaison avec
|
|
`vagrant suspend`, cela prend moins de place sur le disque car il n'y a pas
|
|
besoin de sauver la RAM, mais la recréation avec `vagrant up` sera plus
|
|
lente)
|
|
|
|
- Enfin, `vagrant destroy` permet de détruire complètement la machine
|
|
virtuelle : lors du prochain appel de `vagrant up`, elle sera réinstallée de
|
|
zéro. *Attention, contrairement aux deux méthodes précédentes, `vagrant
|
|
destroy` détruira irrémédiablement le contenu de votre base de données
|
|
locale, si elle vous est d'un quelconque intérêt, réfléchissez à deux fois !*
|
|
|
|
- `vagrant ssh` vous connecte en SSH à la machine virtuelle, dans le dossier
|
|
où est installé GestioCOF. Vous pouvez utiliser les commandes Django
|
|
habituelles (`manage.py runserver` etc.)
|
|
|
|
**Le dossier avec le code de GestioCOF est partagé entre la machine virtuelle
|
|
et votre machine physique : vous pouvez donc utiliser votre éditeur favori pour
|
|
coder depuis l'extérieur de la machine virtuelle, et les changements seront
|
|
répercutés dans la machine virtuelle.**
|
|
|
|
#### Lancer le serveur de développement standard
|
|
|
|
Pour lancer le serveur de développement, il faut faire
|
|
|
|
python manage.py runserver 0.0.0.0:8000
|
|
|
|
car par défaut Django n'écoute que sur l'adresse locale de la machine virtuelle
|
|
or vous voudrez accéder à GestioCOF depuis votre machine physique. L'url à
|
|
entrer dans le navigateur est `localhost:8000`.
|
|
|
|
#### Serveur de développement type production
|
|
|
|
Sur la VM Vagrant, un serveur apache est configuré pour servir GestioCOF de
|
|
façon similaire à la version en production : on utilise
|
|
[Daphne](https://github.com/django/daphne/) et `python manage.py runworker`
|
|
derrière un reverse-proxy apache. Le tout est monitoré par
|
|
[supervisor](http://supervisord.org/).
|
|
|
|
Ce serveur se lance tout seul et est accessible en dehors de la VM à l'url
|
|
`localhost:8080`. Toutefois il ne se recharge pas tout seul lorsque le code
|
|
change, il faut relancer le worker avec `sudo supervisorctl restart worker` pour
|
|
visualiser la dernière version du code.
|
|
|
|
### Installation manuelle
|
|
|
|
Si vous optez pour une installation manuelle plutôt que d'utiliser Vagrant, il
|
|
est fortement conseillé d'utiliser un environnement virtuel pour Python.
|
|
|
|
Il vous faudra installer mercurial, pip, les librairies de développement de
|
|
python, un client et un serveur MySQL ainsi qu'un serveur redis ; sous Debian et
|
|
dérivées (Ubuntu, ...) :
|
|
|
|
sudo apt-get install mercurial python-pip python-dev libmysqlclient-dev
|
|
redis-server
|
|
|
|
Si vous décidez d'utiliser un environnement virtuel Python (virtualenv;
|
|
fortement conseillé), déplacez-vous dans le dossier où est installé GestioCOF
|
|
(le dossier où se trouve ce README), et créez-le maintenant :
|
|
|
|
virtualenv env
|
|
|
|
Pour l'activer, il faut faire
|
|
|
|
. env/bin/activate
|
|
|
|
dans le même dossier.
|
|
|
|
Vous pouvez maintenant installer les dépendances Python depuis les fichiers
|
|
`requirements.txt` et `requirements-devel.txt` :
|
|
|
|
pip install -r requirements.txt -r requirements-devel.txt
|
|
|
|
Copiez le fichier `cof/settings_dev.py` dans `cof/settings.py`.
|
|
|
|
Enfin, configurez le mot de passe redis le plus simple et de ne pas en utiliser
|
|
(pas de risque en local) en remplaçant la ligne `hosts` dans
|
|
`settings.CHANNEL_LAYER` par
|
|
|
|
"hosts": [("localhost", 6379)]
|
|
|
|
#### Installation avec MySQL
|
|
|
|
Il faut maintenant installer MySQL. Si vous n'avez pas déjà MySQL installé sur
|
|
votre serveur, il faut l'installer ; sous Debian et dérivées (Ubuntu, ...) :
|
|
|
|
sudo apt-get install mysql-server
|
|
|
|
Il vous demandera un mot de passe pour le compte d'administration MySQL,
|
|
notez-le quelque part (ou n'en mettez pas, le serveur n'est accessible que
|
|
localement par défaut). Si vous utilisez une autre distribution, consultez la
|
|
documentation de votre distribution pour savoir comment changer ce mot de passe
|
|
et démarrer le serveur MySQL (c'est automatique sous Ubuntu).
|
|
|
|
Vous devez alors créer un utilisateur local et une base `cof_gestion`, avec le
|
|
mot de passe de votre choix (remplacez `mot_de_passe`) :
|
|
|
|
mysql -uroot -e "CREATE DATABASE cof_gestion; GRANT ALL PRIVILEGES ON cof_gestion.* TO 'cof_gestion'@'localhost' IDENTIFIER BY 'mot_de_passe'"
|
|
|
|
Éditez maintenant le fichier `cof/settings.py` pour y intégrer ces changements ;
|
|
la définition de `DATABASES` doit ressembler à (à nouveau, remplacez
|
|
`mot_de_passe` de façon appropriée) :
|
|
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.mysql',
|
|
'NAME': 'cof_gestion',
|
|
'USER': 'cof_gestion',
|
|
'PASSWORD': 'mot_de_passe',
|
|
}
|
|
}
|
|
|
|
#### Installation avec SQLite
|
|
|
|
GestioCOF est installé avec MySQL sur la VM COF, et afin d'avoir un
|
|
environnement de développement aussi proche que possible de ce qui tourne en
|
|
vrai pour éviter les mauvaises surprises, il est conseillé d'utiliser MySQL sur
|
|
votre machine de développement également. Toutefois, GestioCOF devrait
|
|
fonctionner avec d'autres moteurs SQL, et certains préfèrent utiliser SQLite
|
|
pour sa légèreté et facilité d'installation.
|
|
|
|
Si vous décidez d'utiliser SQLite, il faut l'installer ; sous Debian et dérivées :
|
|
|
|
sudo apt-get install sqlite3
|
|
|
|
puis éditer le fichier `cof/settings.py` pour que la définition de `DATABASES`
|
|
ressemble à :
|
|
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.sqlite3',
|
|
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
|
}
|
|
}
|
|
|
|
#### Fin d'installation
|
|
|
|
Il ne vous reste plus qu'à initialiser les modèles de Django avec la commande suivante :
|
|
|
|
python manage.py migrate
|
|
|
|
|
|
Une base de donnée pré-remplie est disponible en lançant la commande :
|
|
|
|
python manage.py loaddata users root bda gestion sites
|
|
|
|
Vous êtes prêts à développer ! Lancer GestioCOF en faisant
|
|
|
|
python manage.py runserver
|
|
|
|
### Mise à jour
|
|
|
|
Pour mettre à jour les paquets Python, utiliser la commande suivante :
|
|
|
|
pip install --upgrade -r requirements.txt -r requirements-devel.txt
|
|
|
|
Pour mettre à jour les modèles après une migration, il faut ensuite faire :
|
|
|
|
python manage.py migrate
|
|
|
|
|
|
## Documentation utilisateur
|
|
|
|
Une brève documentation utilisateur pour se familiariser plus vite avec l'outil
|
|
est accessible sur le
|
|
[wiki](https://git.eleves.ens.fr/cof-geek/gestioCOF/wikis/home).
|