Format README and fix link

This commit is contained in:
Alexandre Iooss 2020-08-10 18:26:45 +02:00
parent 9c679d5bc9
commit 4a4c3d33b0
1 changed files with 87 additions and 85 deletions

172
README.md
View File

@ -6,91 +6,94 @@
## Installation sur un serveur ## Installation sur un serveur
On supposera pour la suite que vous utilisez Debian/Ubuntu sur un serveur tout nu ou bien configuré. On supposera pour la suite que vous utilisez une installation de Debian Buster ou Ubuntu 20.04 fraîche ou bien configuré.
1. Paquets nécessaires Pour aller vite vous pouvez lancer le Playbook Ansible fournit dans ce dépôt en l'adaptant.
Sinon vous pouvez suivre les étapes ici.
$ sudo apt install nginx python3 python3-pip python3-dev uwsgi ### Installation avec Debian/Ubuntu
$ sudo apt install uwsgi-plugin-python3 python3-venv git acl
La génération des factures de l'application trésorerie nécessite une installation de LaTeX suffisante : 1. **Installation des dépendances APT.**
$ sudo apt install texlive-latex-extra texlive-fonts-extra texlive-lang-french ```bash
$ sudo apt install nginx python3 python3-pip python3-dev uwsgi uwsgi-plugin-python3 python3-venv git acl
```
2. Clonage du dépot La génération des factures de l'application trésorerie nécessite une installation de LaTeX suffisante,
on se met au bon endroit : ```bash
$ sudo apt install texlive-latex-extra texlive-fonts-extra texlive-lang-french
```
$ cd /var/www/ 2. **Clonage du dépot** dans `/var/www/note_kfet`,
$ mkdir note_kfet
$ sudo chown www-data:www-data note_kfet
$ sudo usermod -a -G www-data $USER
$ sudo chmod g+ws note_kfet
$ sudo setfacl -d -m "g::rwx" note_kfet
$ cd note_kfet
$ git clone git@gitlab.crans.org:bde/nk20.git .
3. Environment Virtuel
À la racine du projet: ```bash
$ mkdir -p /var/www/note_kfet && cd /var/www/note_kfet
$ sudo chown www-data:www-data .
$ sudo chmod g+rwx .
$ sudo -u www-data git clone git@gitlab.crans.org:bde/nk20.git .
```
$ python3 -m venv env 3. **Création d'un environment de travail Python décorrélé du système.**
$ source env/bin/activate
(env)$ pip3 install -r requirements/base.txt
(env)$ pip3 install -r requirements/prod.txt # uniquement en prod, nécessite un base postgres
(env)$ deactivate
4. uwsgi et Nginx ```bash
$ python3 -m venv env
$ source env/bin/activate
(env)$ pip3 install -r requirements/base.txt
(env)$ pip3 install -r requirements/prod.txt # uniquement en prod, nécessite une base postgres
(env)$ deactivate # sortir de l'environnement
```
Un exemple de conf est disponible : 4. **Pour configurer UWSGI et NGINX**, des exemples de conf sont disponibles.
**_Modifier le fichier pour être en accord avec le reste de votre config_**
$ cp nginx_note.conf_example nginx_note.conf ```bash
$ cp nginx_note.conf_example nginx_note.conf
$ sudo ln -sf /var/www/note_kfet/nginx_note.conf /etc/nginx/sites-enabled/
```
***Modifier le fichier pour être en accord avec le reste de votre config*** Si l'on a un emperor (plusieurs instance uwsgi):
On utilise uwsgi et Nginx pour gérer le coté serveur : ```bash
$ sudo ln -sf /var/www/note_kfet/uwsgi_note.ini /etc/uwsgi/sites/
```
$ sudo ln -sf /var/www/note_kfet/nginx_note.conf /etc/nginx/sites-enabled/ Sinon si on est dans le cas habituel :
Si l'on a un emperor (plusieurs instance uwsgi): ```bash
$ sudo ln -sf /var/www/note_kfet/uwsgi_note.ini /etc/uwsgi/apps-enabled/
$ sudo ln -sf /var/www/note_kfet/uwsgi_note.ini /etc/uwsgi/sites/ ```
Sinon:
$ sudo ln -sf /var/www/note_kfet/uwsgi_note.ini /etc/uwsgi/apps-enabled/
Le touch-reload est activé par défault, pour redémarrer la note il suffit donc de faire `touch uwsgi_note.ini`. Le touch-reload est activé par défault, pour redémarrer la note il suffit donc de faire `touch uwsgi_note.ini`.
5. Base de données 5. **Base de données.** En production on utilise PostgreSQL.
En prod on utilise postgresql.
$ sudo apt-get install postgresql postgresql-contrib libpq-dev $ sudo apt-get install postgresql postgresql-contrib libpq-dev
(env)$ pip3 install psycopg2 (env)$ pip3 install psycopg2
La config de la base de donnée se fait comme suit: La config de la base de donnée se fait comme suit:
a. On se connecte au shell de psql a. On se connecte au shell de psql
$ sudo su - postgres $ sudo su - postgres
$ psql $ psql
b. On sécurise l'utilisateur postgres b. On sécurise l'utilisateur postgres
postgres=# \password postgres=# \password
Enter new password: Enter new password:
Conservez ce mot de passe de la meme manière que tous les autres. Conservez ce mot de passe de la meme manière que tous les autres.
c. On créer la basse de donnée, et l'utilisateur associé c. On créer la basse de donnée, et l'utilisateur associé
postgres=# CREATE USER note WITH PASSWORD 'un_mot_de_passe_sur'; postgres=# CREATE USER note WITH PASSWORD 'un_mot_de_passe_sur';
CREATE ROLE CREATE ROLE
postgres=# CREATE DATABASE note_db OWNER note; postgres=# CREATE DATABASE note_db OWNER note;
CREATE DATABASE CREATE DATABASE
Si tout va bien : Si tout va bien :
postgres=#\list postgres=#\list
List of databases List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges Name | Owner | Encoding | Collate | Ctype | Access privileges
@ -100,12 +103,12 @@ On supposera pour la suite que vous utilisez Debian/Ubuntu sur un serveur tout n
template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres+postgres=CTc/postgres template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres+postgres=CTc/postgres
template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +postgres=CTc/postgres
(4 rows) (4 rows)
6. Variable d'environnement et Migrations 6. Variable d'environnement et Migrations
On copie le fichier `.env_example` vers le fichier `.env` à la racine du projet On copie le fichier `.env_example` vers le fichier `.env` à la racine du projet
et on renseigne des secrets et des paramètres : et on renseigne des secrets et des paramètres :
DJANGO_APP_STAGE=dev # ou "prod" DJANGO_APP_STAGE=dev # ou "prod"
DJANGO_DEV_STORE_METHOD=sqlite # ou "postgres" DJANGO_DEV_STORE_METHOD=sqlite # ou "postgres"
DJANGO_DB_HOST=localhost DJANGO_DB_HOST=localhost
@ -135,68 +138,67 @@ On supposera pour la suite que vous utilisez Debian/Ubuntu sur un serveur tout n
(env)$ ./manage.py makemigrations (env)$ ./manage.py makemigrations
(env)$ ./manage.py migrate (env)$ ./manage.py migrate
7. Enjoy 7. *Enjoy \o/*
### Installation avec Docker
## Installer avec Docker
Il est possible de travailler sur une instance Docker. Il est possible de travailler sur une instance Docker.
1. Cloner le dépôt là où vous voulez : 1. Cloner le dépôt là où vous voulez :
$ git clone git@gitlab.crans.org:bde/nk20.git $ git clone git@gitlab.crans.org:bde/nk20.git
2. Copiez le fichier `.env_example` à la racine du projet vers le fichier `.env`, 2. Copiez le fichier `.env_example` à la racine du projet vers le fichier `.env`,
et mettez à jour vos variables d'environnement et mettez à jour vos variables d'environnement
3. Dans le fichier `docker_compose.yml`, qu'on suppose déjà configuré, 3. Dans le fichier `docker_compose.yml`, qu'on suppose déjà configuré,
ajouter les lignes suivantes, en les adaptant à la configuration voulue : ajouter les lignes suivantes, en les adaptant à la configuration voulue :
nk20: nk20:
build: /chemin/vers/nk20 build: /chemin/vers/nk20
volumes: volumes:
- /chemin/vers/nk20:/code/ - /chemin/vers/nk20:/code/
env_file: /chemin/vers/nk20/.env env_file: /chemin/vers/nk20/.env
restart: always restart: always
labels: labels:
- traefik.domain=ndd.example.com - traefik.domain=ndd.example.com
- traefik.frontend.rule=Host:ndd.example.com - traefik.frontend.rule=Host:ndd.example.com
- traefik.port=8000 - traefik.port=8000
3. Enjoy : 4. Enjoy :
$ docker-compose up -d nk20 $ docker-compose up -d nk20
## Installer un serveur de développement ## Lancer un serveur de développement
Avec `./manage.py runserver` il est très rapide de mettre en place Avec `./manage.py runserver` il est très rapide de mettre en place
un serveur de développement par exemple sur son ordinateur. un serveur de développement par exemple sur son ordinateur.
1. Cloner le dépôt là où vous voulez : 1. Cloner le dépôt là où vous voulez :
$ git clone git@gitlab.crans.org:bde/nk20.git && cd nk20 $ git clone git@gitlab.crans.org:bde/nk20.git && cd nk20
2. Créer un environnement Python isolé 2. Créer un environnement Python isolé
pour ne pas interférer avec les versions de paquets systèmes : pour ne pas interférer avec les versions de paquets systèmes :
$ python3 -m venv venv $ python3 -m venv venv
$ source venv/bin/activate $ source venv/bin/activate
(env)$ pip install -r requirements/base.txt (env)$ pip install -r requirements/base.txt
3. Copier le fichier `.env_example` vers `.env` à la racine du projet et mettre à jour 3. Copier le fichier `.env_example` vers `.env` à la racine du projet et mettre à jour
ce qu'il faut ce qu'il faut
4. Migrations et chargement des données initiales : 4. Migrations et chargement des données initiales :
(env)$ ./manage.py makemigrations (env)$ ./manage.py makemigrations
(env)$ ./manage.py migrate (env)$ ./manage.py migrate
(env)$ ./manage.py loaddata initial (env)$ ./manage.py loaddata initial
5. Créer un super-utilisateur : 5. Créer un super-utilisateur :
(env)$ ./manage.py createsuperuser (env)$ ./manage.py createsuperuser
6. Enjoy : 6. Enjoy :
(env)$ ./manage.py runserver 0.0.0.0:8000 (env)$ ./manage.py runserver 0.0.0.0:8000