Logo Khaganat
Traductions de cette page?:

Cette page est noté comme étant en brouillon. Votre participation pour l'améliorer est requise !

Installer Django et le site web Khaganat

Le projet Khaganat souhaite utiliser le Framework Django pour ses pages web.

Au 16 juin 2018, nous avons déjà un site en test, http://cipra.khaganat.net, sur lequel nous créons la structure du site.

À terme, ce site remplacera l'actuel.

Et sinon, là c'est du brouillon, pour m'en sortir quand je vais tenter d'installer le bouzin.

Pour plus de détails sur le projet, voir la page Khaganat web.

Cet article détaille comment installer et paramétrer le site web (la version “django”).

Installation

Django se base sur python. Votre serveur doit donc avoir les paquets python 3 et pipenv (ce qui va simplifier la suite). En cas de souci, voir Python (et Debian). Les informations les plus à jour seront dans le README du projet.

Sur debian, installez aussi gettext :

sudo apt install gettext

Configurer pipenv pour utiliser python 3 par défaut :

pipenv --three

Commencez par cloner le projet :

git clone https://git.khaganat.net/Tycho/khaganat-web.git khaganat-web
cd khaganat-web

Puis modifier les variables d'environnement en créant le fichier .env dans le dossier khaganat-web :

nano .env

Adaptez le fichier avec les paramètres suivants. Les deux variables KHAGANAT_SECRET_KEY, KHAGANAT_HOSTNAMES et KHAGANAT_STATIC_ROOT doivent impérativement être remplies :

# KHAGANAT_SECRET_KEY (required)='' Django's secret key, keep it secret (tip='' generate one using openssl rand -base64 42).
KHAGANAT_SECRET_KEY=''
# KHAGANAT_DEBUG='' Debug mode, default is false.
KHAGANAT_DEBUG='true'
# KHAGANAT_HOSTNAMES='' Allowed hostnames, coma separated.
KHAGANAT_HOSTNAMES=''
# KHAGANAT_LANGUAGE_CODE='' Language code, default is fr.
# KHAGANAT_TIME_ZONE='' Time zone, default is Europe/Paris.
# KHAGANAT_STATIC_URL='' URL for static files, default is /static/.
# KHAGANAT_STATIC_ROOT='' Absolute path to the directory where static files should be collected.
# KHAGANAT_STATIC_DIRS='' CSV list of additional locations where static files may be found, default is empty.
# KHAGANAT_LOGS_MIN_DAYS='' Numbers of days before logs are hidden, default is 7.
# KHAGANAT_LOGS_MAX_DAYS='' Number of days before logs are published, default is 0.
# KHAGANAT_LOGIN_REDIRECT_URL='' URL to redirect after user login. Will be reversed, default is index.
# KHAGANAT_REGISTER_REQUIRE_VALIDATION='' require email validation upon registration, default is true.
# KHAGANAT_EMAIL_HOST='' The host to use for sending email, default is localhost.
# KHAGANAT_EMAIL_PORT='' Port to use for the SMTP server, default is 25.
# KHAGANAT_EMAIL_HOST_USER='' Username to use for the SMTP server, default is empty (no authentication).
# KHAGANAT_EMAIL_HOST_PASSWORD='' Password to use for the SMTP server, default is empty.
# KHAGANAT_EMAIL_USE_STARTTLS='' Whether to use STARTTLS to connect to the SMTP server, default is False.
# KHAGANAT_EMAIL_USE_TLS='' Whether to use a TLS connection to the SMTP server, default is False.
# KHAGANAT_EMAIL_SUBJECT_PREFIX='' Subject-line prefix for email, default is empty.
# KHAGANAT_DEFAULT_FROM_EMAIL='' Default email address to use, default is no-reply@localhost.
# KHAGANAT_FORCE_HTTPS='' If True, enable the use of KHAGANAT_HTTPS_HEADER_NAME and KHAGANAT_HTTPS_HEADER_VALUE to set the SECURE_PROXY_SSL_HEADER configuration option. Default is False.
# KHAGANAT_HTTPS_HEADER_NAME='' Header name for SECURE_PROXY_SSL_HEADER, default is HTTP_X_FORWARDED_PROTO.
# KHAGANAT_HTTPS_HEADER_VALUE='' Header value for SECURE_PROXY_SSL_HEADER, default is https.
# KHAGANAT_NSFW_TAGS='' Coma-separated list of words that triggers the content warning in logs, default is \#nsfw.
# KHAGANAT_NSFW_NAME='' Name of the cookie holding the NSFW allowance, default is nsfw_allowed.

Ensuite, mettez l'environnement pipenv à jour dans ce dossier :

pipenv --three update

Puis lancer la construction du site. Si vous copiez la base de donnée d'une autre installation (par exemple de la version test vers la prod), oubliez les lignes migrate et createsuperuser :

pipenv run ./manage.py migrate
pipenv run ./manage.py compilemessages
pipenv run ./manage.py createsuperuser

Collecter les static ou non

Le script collectstatic concerne les véritables déploiements, ce n'est pas nécessaire si vous utilisez runserver (la façon de gérer les choses en développement). collectstatic va gérer les fichiers “statiques” : css, images des thèmes. Il va les rassembler dans un répertoire dédié, où un serveur web pourra ensuite les trouver. Si vous souhaitez le mettre en place (et on insiste, c'est inutile en prod), modifiez la valeur KHAGANAT_STATIC_ROOT= dans le fichier .env afin de pointer vers un dossier vide lors du premier déploiement, et accessible au serveur web (/var/www/html par défaut sur Debian+Apache, par exemple).

Lancez ensuite la commande suivante :

pipenv run ./manage.py collectstatic --clear --noinput

Le serveur web

Avant d'aller plus loin il faut paramétrer apache ou nginx.

Ce qui suit est à travailler/adapter afin que ça corresponde à votre installation (et à la notre…)

Dans le cas d'un déploiement en mode développement (pas de la production !) on va utiliser un utilitaire fourni avec Django, appelé “runserver”. Ce dernier va lancer Django en utilisant un port. Si vous utilisez un serveur simple, il suffira de paramétrer Apache ou Nginx de façon basique, puis de se rendre à l'adresse “monsite.com:8000” (par défaut) après avoir lancé la commande suivante :

pipenv run ./manage.py runserver 0:8000
* 0 permet qu'on y accède même si ce n'est pas sur le réseau local (par défaut, c'est localhost)
* 8000 est le port utilisé, qu'on peut changer
* Pensez à lancer le runserver dans un shell à part, c'est un serveur donc il ne s'arrêtera pas de tourner tant que qu'on ne l'aura pas quitté (CTRL+C) ou fait planter.

L'intérêt de runserver, c'est que vous pouvez faire des modifications dans les fichiers Django, recharger la page et “ça marche” ! En production, avec une vraie configuration, il faudra lancer des commandes pour que ce soit pris en compte. Mais de toute façon, personne ne modifie un serveur en production directement.

Si comme nous, vous êtes derrière un proxy, il faudra modifier sur la config du proxy afin que cela point vers le port de votre VM.

Sur la VM du proxy, config apache (/etc/apache2/site-enabled/monsite.conf) :

[...]
ProxyPass / http://192.168.20.13:8000/
ProxyPassReverse / http://192.168.20.13:8000/
ProxyRequests off
ProxyPreserveHost on
                <Proxy *>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                </Proxy>

[...]

Et sur la VM où Django est installé :

[...]
ProxyRequests off
ProxyPreserveHost on

       ProxyPass / http://192.168.20.13:8000/
        <Location />
            ProxyPassReverse http://192.168.20.13:8000/
            Require all granted
        </Location>

[...]

Ensuite la commande suivante fonctionnera :

pipenv run ./manage.py runserver 0:8000

Je déconseille de pointer ailleurs qu'à la racine, à moins de savoir changer les comportements de Django.

Le readme se base sur nginx. Il faudrait adapter à Debian, à notre installation avec proxy/apache, etc.

Paquets à installer sous Debian.

sudo apt install nginx-extras uwsgi uwsgi-plugin-python3

Premier lancement

Au premier lancement, il n'y a pas de page créé sur la racine du site, ce qui fait peur (pleins d'erreurs !).

Il suffit de se rendre à l'adresse monsite.net/admin/ (ou monsite.net:8000/admin/ si vous n'avez pas de reverse proxy), de vous connecter avec les identifiants renseignés à la partie “création d'un super admin”, de sélectionner le module des pages et d'ajouter une page d'accueil. Et voilà !

Récupérer le détail de Khaganat

Pour le moment, ce n'est pas sur un dépôt public.

Suffit de copier la base de donnée :

scp cipra.khaganat.net:/var/www/khaganat-web/db.sqlite3 db.sqlite3

Yakalfr lié : faire le css

C'est ici sur le taf, le détail de ce qu'il faut faire pour que Cipra aie un css qui donne une identité à Khaganat.

Astuces et trucs utiles

Exporter la navbar

Pour exporter la navbar, afin de l'intégrer dans un thème Dokuwiki par exemple :

cd /var/www/khaganat-web
‎pipenv run ./manage.py navbar_export --lang fr --docuwiki

Le résultat sera dans build/navbar/.

pour lister toutes les option d'export : ‎ pipenv run ./manage.py navbar_export -h

CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/install_khaganat_web.txt · Dernière modification : 2021/12/03 19:19 de 127.0.0.1

Licences Mentions légales Accueil du site Contact