From 4b9b7037b88f53108552d4dcb7ec07986e84f877 Mon Sep 17 00:00:00 2001 From: Alexandre Iooss Date: Sun, 25 Dec 2022 23:01:04 +0100 Subject: [PATCH] Translate README to English --- README.md | 167 ++++++++++++++++-------------------------------------- 1 file changed, 49 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index debbd13..a3d62d6 100644 --- a/README.md +++ b/README.md @@ -1,149 +1,80 @@ -# Serveur photos 2021 +# Photo server 2021-2023 [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](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 -associative de l'ENS Paris-Saclay. +This is the source code for the webserver hosting pictures from the +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) - - [Installation d'une instance de production](#installation-dune-instance-de-production) +## Setup -## Installation d'une instance de développement - -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. +1. **Dependency installation.** + If you are not using Debian, please feel free to adapt the following instructions. ```bash - $ sudo apt update - $ sudo apt install --no-install-recommends -y \ - ipython3 python3-setuptools python3-venv python3-dev \ - gettext git + sudo apt install git gettext python3-django python3-django-allauth python3-django-crispy-forms python3-docutils python3-exifread python3-pil + + # Only for production + 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 - $ 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.** - On n'utilise pas `--system-site-packages` ici pour ne pas avoir des clashs de versions de modules avec le système. +3. **Configuration (production only).** ```bash - $ python3 -m venv env - $ source env/bin/activate # entrer dans l'environnement - (env)$ pip3 install -r requirements.txt - (env)$ deactivate # sortir de l'environnement + # Only for production + sudo mkdir static media + sudo chown www-data:www-data -R static media + 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.** - Pour initialiser la base de données avec de quoi travailler. +4. **Database (production only).** + In development, you may use SQLite (no setup). + In production, we use PostgreSQL which require a bit of setup: ```bash - (env)$ ./manage.py compilemessages - (env)$ ./manage.py migrate - (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 + sudo apt install postgresql postgresql-contrib + sudo -u postgres psql postgres=# CREATE USER photo21 WITH PASSWORD 'un_mot_de_passe_sur'; 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 - $ sudo -u www-data ./manage.py check - $ sudo -u www-data ./manage.py migrate - $ sudo -u www-data ./manage.py loaddata initial - $ sudo ./manage.py compilemessages + ./manage.py collectstatic + ./manage.py check + ./manage.py migrate + ./manage.py loaddata initial + ./manage.py compilemessages + + # Only for development + ./manage.py createsuperuser + # change DEBUG to True in photo21/settings.py ``` 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 -python3 manage.py makemessages -i env -``` - -Une fois les fichiers édités, vous pouvez compiler les nouvelles traductions avec - -```bash -python3 manage.py compilemessages -``` + ```bash + (env)$ ./manage.py runserver + ```