diff --git a/docs/tutorial/install-advanced.md b/docs/tutorial/install-advanced.md index 5a40a725..0c156f4f 100644 --- a/docs/tutorial/install-advanced.md +++ b/docs/tutorial/install-advanced.md @@ -9,6 +9,33 @@ que votre environnement de développement soit encore plus proche de celui en production. Voici les étapes à suivre pour ça. +!!!tip + + Configurer les dépendances du projet + peut demander beaucoup d'allers et retours entre + votre répertoire projet et divers autres emplacements. + + Vous pouvez gagner du temps en déclarant un alias : + + === "bash/zsh" + + ```bash + alias cdp="cd /repertoire/du/projet" + ``` + + === "nu" + + ```nu + alias cdp = cd /repertoire/du/projet + ``` + + Chaque fois qu'on vous demandera de retourner au répertoire + projet, vous aurez juste à faire : + + ```bash + cdp + ``` + ## Installer les dépendances manquantes Pour installer complètement le projet, il va falloir @@ -20,19 +47,19 @@ Commencez par installer les dépendances système : === "Debian/Ubuntu" ```bash - sudo apt install postgresql redis libq-dev + sudo apt install postgresql redis libq-dev nginx ``` === "Arch Linux" ```bash - sudo pacman -S postgresql redis + sudo pacman -S postgresql redis nginx ``` === "macOS" ```bash - brew install postgresql redis nginx lipbq + brew install postgresql redis lipbq nginx export PATH="/usr/local/opt/libpq/bin:$PATH" source ~/.zshrc ``` @@ -139,6 +166,102 @@ poetry run ./manage.py populate N'oubliez de quitter la session de l'utilisateur postgres après avoir configuré la db. +## Configurer nginx + +Nginx est utilisé comme reverse-proxy. + +!!!warning + + Nginx ne sert pas les fichiers de la même manière que Django. + Les fichiers statiques servis seront ceux du dossier `/static`, + tels que générés par les commandes `collectstatic` et + `compilestatic`. + Si vous changez du css ou du js sans faire tourner + ces commandes, ces changements ne seront pas reflétés. + + De manière générale, utiliser nginx en dev n'est pas très utile, + voire est gênant si vous travaillez sur le front. + Ne vous embêtez pas avec ça, sauf par curiosité intellectuelle, + ou bien si vous voulez tester spécifiquement + des interactions avec le reverse proxy. + + +Placez-vous dans le répertoire `/etc/nginx`, +et créez les dossiers et fichiers nécessaires : + +```bash +cd /etc/nginx/ +sudo mkdir sites-enabled sites-available +sudo touch sites-available/sith.conf +sudo ln -s /etc/nginx/sites-available/sith.conf sites-enabled/sith.conf +``` + +Puis ouvrez le fichier `sites-available/sith.conf` et mettez-y le contenu suivant : + +```nginx +server { + listen 8000; + + server_name _; + + location /static/; + root /repertoire/du/projet; + } + location ~ ^/data/(products|com|club_logos)/ { + root /repertoire/du/projet; + } + location ~ ^/data/(SAS|profiles|users|.compressed|.thumbnails)/ { + # https://nginx.org/en/docs/http/ngx_http_core_module.html#internal + internal; + root /repertoire/du/projet; + } + + location / { + proxy_pass http://127.0.0.1:8001; + include uwsgi_params; + } +} +``` + +Ouvrez le fichier `nginx.conf`, et ajoutez la configuration suivante : + +```nginx +http { + # Toute la configuration + # éventuellement déjà là + + include /etc/nginx/sites-enabled/sith.conf; +} +``` + +Vérifiez que votre configuration est bonne : + +```bash +sudo nginx -t +``` + +Si votre configuration n'est pas bonne, corrigez-la. +Puis lancez ou relancez nginx : + +```bash +sudo systemctl restart nginx +``` + +Dans votre `settings_custom.py`, remplacez `DEBUG=True` par `DEBUG=False`. + +Enfin, démarrez le serveur Django : + +```bash +cd /repertoire/du/projet +poetry run ./manage.py runserver 8001 +``` + +Et c'est bon, votre reverse-proxy est prêt à tourner devant votre serveur. +Nginx écoutera sur le port 8000. +Toutes les requêtes vers des fichiers statiques et les medias publiques +seront seront servies directement par nginx. +Toutes les autres requêtes seront transmises au serveur django. + ## Mettre à jour la base de données antispam