Translate README to English
This commit is contained in:
parent
69529e103e
commit
4b9b7037b8
1 changed files with 49 additions and 118 deletions
163
README.md
163
README.md
|
|
@ -1,149 +1,80 @@
|
||||||
# Serveur photos 2021
|
# Photo server 2021-2023
|
||||||
|
|
||||||
[](https://www.gnu.org/licenses/gpl-3.0.txt)
|
[](https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||||
|
|
||||||
Le serveur photos est un projet Django permettant de gérer les photos de la vie
|
This is the source code for the webserver hosting pictures from the
|
||||||
associative de l'ENS Paris-Saclay.
|
ENS Paris-Saclay student life.
|
||||||
|
|
||||||
## Table des matières
|
The philosophy of this project is to keep this code as simple as possible to
|
||||||
|
run and to maintain.
|
||||||
|
|
||||||
- [Installation d'une instance de développement](#installation-dune-instance-de-développement)
|
## Setup
|
||||||
- [Installation d'une instance de production](#installation-dune-instance-de-production)
|
|
||||||
|
|
||||||
## Installation d'une instance de développement
|
1. **Dependency installation.**
|
||||||
|
If you are not using Debian, please feel free to adapt the following instructions.
|
||||||
L'instance de développement installe la majorité des dépendances dans un environnement Python isolé.
|
|
||||||
Bien que cela permette de créer une instance sur toutes les distributions,
|
|
||||||
**cela veut dire que vos dépendances ne seront pas mises à jour automatiquement.**
|
|
||||||
|
|
||||||
1. **Installation des dépendances de la distribution.**
|
|
||||||
Il y a quelques dépendances qui ne sont pas trouvable dans PyPI.
|
|
||||||
On donne ci-dessous l'exemple pour une distribution basée sur Debian, mais vous pouvez facilement adapter pour ArchLinux ou autre.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ sudo apt update
|
sudo apt install git gettext python3-django python3-django-allauth python3-django-crispy-forms python3-docutils python3-exifread python3-pil
|
||||||
$ sudo apt install --no-install-recommends -y \
|
|
||||||
ipython3 python3-setuptools python3-venv python3-dev \
|
# Only for production
|
||||||
gettext git
|
sudo apt install nginx uwsgi uwsgi-plugin-python3 python3-certbot-nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Clonage du dépot** là où vous voulez :
|
2. **Cloning.**
|
||||||
|
Change directory to where you want the project to be.
|
||||||
|
In production, we usually use `/var/www/photos/` as the `root` user.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ git clone git@gitlab.crans.org:bde/photo21.git && cd photo21
|
git clone https://gitlab.crans.org/bde/photo21.git && cd photo21
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Création d'un environment de travail Python décorrélé du système.**
|
3. **Configuration (production only).**
|
||||||
On n'utilise pas `--system-site-packages` ici pour ne pas avoir des clashs de versions de modules avec le système.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ python3 -m venv env
|
# Only for production
|
||||||
$ source env/bin/activate # entrer dans l'environnement
|
sudo mkdir static media
|
||||||
(env)$ pip3 install -r requirements.txt
|
sudo chown www-data:www-data -R static media
|
||||||
(env)$ deactivate # sortir de l'environnement
|
sudo chmod g+rwx -R static media
|
||||||
|
sudo cp docs/uwsgi_photos.ini /etc/uwsgi/apps-available/uwsgi_photos.ini
|
||||||
|
sudo ln -s /etc/uwsgi/apps-available/uwsgi_photos.ini /etc/uwsgi/apps-enabled/
|
||||||
|
sudo cp docs/nginx_photos /etc/nginx/sites-available/photos.crans.org
|
||||||
|
sudo ln -s /etc/nginx/sites-available/photos.crans.org /etc/nginx/sites-enabled/
|
||||||
|
sudo cp docs/letsencrypt_photos.crans.org /etc/letsencrypt/conf.d/photos.crans.org
|
||||||
|
sudo cp docs/renewal-hooks_post_nginx /etc/letsencrypt/renewal-hooks/post/nginx
|
||||||
|
sudo certbot --config /etc/letsencrypt/conf.d/photos.crans.org.ini certonly
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Migrations et chargement des données initiales.**
|
4. **Database (production only).**
|
||||||
Pour initialiser la base de données avec de quoi travailler.
|
In development, you may use SQLite (no setup).
|
||||||
|
In production, we use PostgreSQL which require a bit of setup:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
(env)$ ./manage.py compilemessages
|
sudo apt install postgresql postgresql-contrib
|
||||||
(env)$ ./manage.py migrate
|
sudo -u postgres psql
|
||||||
(env)$ ./manage.py loaddata initial
|
|
||||||
(env)$ ./manage.py createsuperuser # Création d'un utilisateur initial
|
|
||||||
```
|
|
||||||
|
|
||||||
6. **Activation du mode déboguage.**
|
|
||||||
Dans `photo21/settings.py`, changer `DEBUG` à `True`.
|
|
||||||
|
|
||||||
7. Enjoy :
|
|
||||||
|
|
||||||
```bash
|
|
||||||
(env)$ ./manage.py runserver 0.0.0.0:8000
|
|
||||||
```
|
|
||||||
|
|
||||||
En mettant `0.0.0.0:8000` après `runserver`, vous rendez votre instance Django
|
|
||||||
accessible depuis l'ensemble de votre réseau, pratique pour tester le rendu
|
|
||||||
de la note sur un téléphone !
|
|
||||||
|
|
||||||
## Installation d'une instance de production
|
|
||||||
|
|
||||||
**En production on souhaite utiliser les modules Python packagées
|
|
||||||
dans le gestionnaire de paquet.** Cela permet de mettre à jour facilement les
|
|
||||||
dépendances critiques telles que Django. L'installation d'une instance de
|
|
||||||
production néccessite **une installation de Debian Bullseye ou plus récent**.
|
|
||||||
|
|
||||||
1. **Installation des dépendances APT.**
|
|
||||||
On tire les dépendances le plus possible à partir des dépôts de Debian.
|
|
||||||
|
|
||||||
```
|
|
||||||
$ sudo apt install nginx git gettext uwsgi uwsgi-plugin-python3 python3-venv \
|
|
||||||
python3-certbot-nginx python3-django python3-django-crispy-forms \
|
|
||||||
python3-pil python3-exifread python3-django-allauth python3-docutils
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Clonage du dépot dans `/var/www/photos/photo21`**
|
|
||||||
|
|
||||||
```
|
|
||||||
# on se place dans /var/www/photos/
|
|
||||||
$ sudo git clone https://gitlab.crans.org/bde/photo21.git && cd photo21
|
|
||||||
$ sudo mkdir static media
|
|
||||||
$ sudo chown www-data:www-data -R static media
|
|
||||||
$ sudo chmod g+rwx -R static media
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Configuration de UWSGI, NGINX et Let's Encrypt.**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ sudo cp docs/uwsgi_photos.ini /etc/uwsgi/apps-available/uwsgi_photos.ini
|
|
||||||
$ sudo ln -s /etc/uwsgi/apps-available/uwsgi_photos.ini /etc/uwsgi/apps-enabled/
|
|
||||||
$ sudo cp docs/nginx_photos /etc/nginx/sites-available/photos.crans.org
|
|
||||||
$ sudo ln -s /etc/nginx/sites-available/photos.crans.org /etc/nginx/sites-enabled/
|
|
||||||
$ sudo cp docs/letsencrypt_photos.crans.org /etc/letsencrypt/conf.d/photos.crans.org
|
|
||||||
$ sudo cp docs/renewal-hooks_post_nginx /etc/letsencrypt/renewal-hooks/post/nginx
|
|
||||||
$ sudo certbot --config /etc/letsencrypt/conf.d/photos.crans.org.ini certonly
|
|
||||||
```
|
|
||||||
|
|
||||||
4. **Base de données.**
|
|
||||||
En production on utilise PostgreSQL.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ sudo apt install postgresql postgresql-contrib
|
|
||||||
$ sudo -u postgres psql
|
|
||||||
postgres=# CREATE USER photo21 WITH PASSWORD 'un_mot_de_passe_sur';
|
postgres=# CREATE USER photo21 WITH PASSWORD 'un_mot_de_passe_sur';
|
||||||
postgres=# CREATE DATABASE photo21 OWNER photo21;
|
postgres=# CREATE DATABASE photo21 OWNER photo21;
|
||||||
```
|
```
|
||||||
|
|
||||||
5. **Migrations et collecte des fichiers statiques**,
|
5. **Initialization.**,
|
||||||
|
In production, please use `www-data` user.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo -u www-data ./manage.py collectstatic
|
./manage.py collectstatic
|
||||||
$ sudo -u www-data ./manage.py check
|
./manage.py check
|
||||||
$ sudo -u www-data ./manage.py migrate
|
./manage.py migrate
|
||||||
$ sudo -u www-data ./manage.py loaddata initial
|
./manage.py loaddata initial
|
||||||
$ sudo ./manage.py compilemessages
|
./manage.py compilemessages
|
||||||
|
|
||||||
|
# Only for development
|
||||||
|
./manage.py createsuperuser
|
||||||
|
# change DEBUG to True in photo21/settings.py
|
||||||
```
|
```
|
||||||
|
|
||||||
6. *Enjoy \o/*
|
6. *Enjoy \o/*
|
||||||
|
|
||||||
## Documentation
|
In production, the NGINX site should now work.
|
||||||
|
In development, you can launch the development server using:
|
||||||
La documentation des classes et fonctions est directement dans le code et est explorable à partir de la partie documentation de l'interface d'administration de Django.
|
|
||||||
**Commentez votre code !**
|
|
||||||
|
|
||||||
## FAQ
|
|
||||||
|
|
||||||
### Regénérer les fichiers de traduction
|
|
||||||
|
|
||||||
Pour regénérer les traductions vous pouvez vous placer à la racine du projet et lancer le script `makemessages`.
|
|
||||||
Il faut penser à ignorer les dossiers ne contenant pas notre code, dont le virtualenv.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 manage.py makemessages -i env
|
(env)$ ./manage.py runserver
|
||||||
```
|
|
||||||
|
|
||||||
Une fois les fichiers édités, vous pouvez compiler les nouvelles traductions avec
|
|
||||||
|
|
||||||
```bash
|
|
||||||
python3 manage.py compilemessages
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue