Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:install_khaganat_web [2018/08/13 13:45] – [Dépendances] Remise au propre côté syntaxe zatalyzfr:install_khaganat_web [2021/12/03 18:19] (Version actuelle) – modification externe 127.0.0.1
Ligne 15: Ligne 15:
 Pour plus de détails sur le projet, voir la page [[fr:khaganat_web]].  Pour plus de détails sur le projet, voir la page [[fr:khaganat_web]]. 
  
-Cet article détaille comment installer et paramétrer le site web. +Cet article détaille comment installer et paramétrer le site web (la version "django")
  
-===== Dépendances ===== +===== 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 [[fr:python]]. <wrap info>Les informations les plus à jour seront dans le README du projet.</wrap>+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 [[fr:python]]. <wrap info>Les informations les plus à jour seront dans le [[https://git.khaganat.net/Tycho/khaganat-web/blob/master/README.md|README du projet]].</wrap> 
 + 
 +Sur debian, installez aussi gettext : 
 +  sudo apt install gettext
  
 Configurer pipenv pour utiliser python 3 par défaut : Configurer pipenv pour utiliser python 3 par défaut :
Ligne 27: Ligne 30:
   cd khaganat-web   cd khaganat-web
  
-Puis modifier les variables d'environnement :+Puis modifier les variables d'environnement en créant le fichier ''.env'' dans le dossier ''khaganat-web'' :
   nano .env   nano .env
  
-Adaptez le fichier suivant. Les deux variables KHAGANAT_SECRET_KEY et KHAGANAT_HOSTNAMES doivent impérativement être remplies :+Adaptez le fichier avec les paramètres suivants. Les deux variables KHAGANAT_SECRET_KEYKHAGANAT_HOSTNAMES et KHAGANAT_STATIC_ROOT doivent impérativement être remplies :
 <code> <code>
-# KHAGANAT_SECRET_KEY (required)Django's secret key, keep it secret (tipgenerate one using openssl rand -base64 42). +# KHAGANAT_SECRET_KEY (required)='' Django's secret key, keep it secret (tip='' generate one using openssl rand -base64 42). 
-KHAGANAT_SECRET_KEY +KHAGANAT_SECRET_KEY='' 
-# KHAGANAT_DEBUGDebug mode, default is false. +# KHAGANAT_DEBUG='' Debug mode, default is false. 
-KHAGANAT_DEBUGtrue +KHAGANAT_DEBUG='true' 
-# KHAGANAT_HOSTNAMESAllowed hostnames, coma separated. +# KHAGANAT_HOSTNAMES='' Allowed hostnames, coma separated. 
-KHAGANAT_HOSTNAMES +KHAGANAT_HOSTNAMES='' 
-# KHAGANAT_LANGUAGE_CODELanguage code, default is fr. +# KHAGANAT_LANGUAGE_CODE='' Language code, default is fr. 
-# KHAGANAT_TIME_ZONETime zone, default is Europe/Paris. +# KHAGANAT_TIME_ZONE='' Time zone, default is Europe/Paris. 
-# KHAGANAT_STATIC_URLURL for static files, default is /static/. +# KHAGANAT_STATIC_URL='' URL for static files, default is /static/. 
-# KHAGANAT_STATIC_ROOTAbsolute path to the directory where static files should be collected. +# KHAGANAT_STATIC_ROOT='' Absolute path to the directory where static files should be collected. 
-# KHAGANAT_STATIC_DIRSCSV list of additional locations where static files may be found, default is empty. +# KHAGANAT_STATIC_DIRS='' CSV list of additional locations where static files may be found, default is empty. 
-# KHAGANAT_LOGS_MIN_DAYSNumbers of days before logs are hidden, default is 7. +# KHAGANAT_LOGS_MIN_DAYS='' Numbers of days before logs are hidden, default is 7. 
-# KHAGANAT_LOGS_MAX_DAYSNumber of days before logs are published, default is 0. +# KHAGANAT_LOGS_MAX_DAYS='' Number of days before logs are published, default is 0. 
-# KHAGANAT_LOGIN_REDIRECT_URLURL to redirect after user login. Will be reversed, default is index. +# KHAGANAT_LOGIN_REDIRECT_URL='' URL to redirect after user login. Will be reversed, default is index. 
-# KHAGANAT_REGISTER_REQUIRE_VALIDATIONrequire email validation upon registration, default is true. +# KHAGANAT_REGISTER_REQUIRE_VALIDATION='' require email validation upon registration, default is true. 
-# KHAGANAT_EMAIL_HOSTThe host to use for sending email, default is localhost. +# KHAGANAT_EMAIL_HOST='' The host to use for sending email, default is localhost. 
-# KHAGANAT_EMAIL_PORTPort to use for the SMTP server, default is 25. +# KHAGANAT_EMAIL_PORT='' Port to use for the SMTP server, default is 25. 
-# KHAGANAT_EMAIL_HOST_USERUsername to use for the SMTP server, default is empty (no authentication). +# KHAGANAT_EMAIL_HOST_USER='' Username to use for the SMTP server, default is empty (no authentication). 
-# KHAGANAT_EMAIL_HOST_PASSWORDPassword to use for the SMTP server, default is empty. +# KHAGANAT_EMAIL_HOST_PASSWORD='' Password to use for the SMTP server, default is empty. 
-# KHAGANAT_EMAIL_USE_STARTTLSWhether to use STARTTLS to connect to the SMTP server, default is False. +# KHAGANAT_EMAIL_USE_STARTTLS='' Whether to use STARTTLS to connect to the SMTP server, default is False. 
-# KHAGANAT_EMAIL_USE_TLSWhether to use a TLS connection 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_PREFIXSubject-line prefix for email, default is empty. +# KHAGANAT_EMAIL_SUBJECT_PREFIX='' Subject-line prefix for email, default is empty. 
-# KHAGANAT_DEFAULT_FROM_EMAILDefault email address to use, default is no-reply@localhost. +# KHAGANAT_DEFAULT_FROM_EMAIL='' Default email address to use, default is no-reply@localhost. 
-# KHAGANAT_FORCE_HTTPSIf 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_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_NAMEHeader name for SECURE_PROXY_SSL_HEADER, default is HTTP_X_FORWARDED_PROTO. +# KHAGANAT_HTTPS_HEADER_NAME='' Header name for SECURE_PROXY_SSL_HEADER, default is HTTP_X_FORWARDED_PROTO. 
-# KHAGANAT_HTTPS_HEADER_VALUEHeader value for SECURE_PROXY_SSL_HEADER, default is https. +# KHAGANAT_HTTPS_HEADER_VALUE='' Header value for SECURE_PROXY_SSL_HEADER, default is https. 
-# KHAGANAT_NSFW_TAGSComa-separated list of words that triggers the content warning in logs, default is \#nsfw. +# KHAGANAT_NSFW_TAGS='' Coma-separated list of words that triggers the content warning in logs, default is \#nsfw. 
-# KHAGANAT_NSFW_NAMEName of the cookie holding the NSFW allowance, default is nsfw_allowed.+# KHAGANAT_NSFW_NAME='' Name of the cookie holding the NSFW allowance, default is nsfw_allowed.
 </code> </code>
  
Ligne 70: Ligne 73:
 pipenv run ./manage.py compilemessages pipenv run ./manage.py compilemessages
 pipenv run ./manage.py createsuperuser pipenv run ./manage.py createsuperuser
-pipenv run ./manage.py runserver+
 </code> </code>
  
-Le script collectstatic concerne les véritables déploiements, ce n'est pas nécessaire si vous utilisez runserver. 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 le n'aura pas quité ou fait planter.+==== 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. 
 +<WRAP center round todo 60%> 
 +Ce qui suit est à travailler/adapter afin que ça corresponde à votre installation (et à la notre...) 
 +</WRAP> 
 + 
 +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 [[fr:lamp|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. 
 + 
 + 
 +<WRAP center round info 90%> 
 +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'') : 
 +<code>[...] 
 +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> 
 + 
 +[...]</code> 
 +Et sur la VM où Django est installé : 
 +<code>[...] 
 +ProxyRequests off 
 +ProxyPreserveHost on 
 + 
 +       ProxyPass / http://192.168.20.13:8000/ 
 +        <Location /> 
 +            ProxyPassReverse http://192.168.20.13:8000/ 
 +            Require all granted 
 +        </Location> 
 + 
 +[...]</code> 
 + 
 +Ensuite la commande suivante fonctionnera : 
 +  pipenv run ./manage.py runserver 0:8000 
 +</WRAP> 
 +Je déconseille de pointer ailleurs qu'à la racine, à moins de savoir changer les comportements de Django.  
 + 
 + 
 + 
 + 
 +<WRAP center round todo 60%> 
 +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 
 +</WRAP> 
 + 
 + 
 +==== 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 ==== 
 +<WRAP center round todo 60%> 
 +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 
 +</WRAP> 
 + 
 +==== Yakalfr lié : faire le css ==== 
 +[[taf>fr:taf:web:ergonomie:cipra|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 : 
 +<code> 
 +cd /var/www/khaganat-web 
 +‎pipenv run ./manage.py navbar_export --lang fr --docuwiki 
 +</code> 
 + 
 +Le résultat sera dans ''build/navbar/''.  
 + 
 +pour lister toutes les option d'export : 
 +‎  pipenv run ./manage.py navbar_export -h 
 + 
 + 
 {{tag>Tutoriel Brouillon Programmation Serveur Web}} {{tag>Tutoriel Brouillon Programmation Serveur Web}}
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/install_khaganat_web.1534167918.txt.gz · Dernière modification : (modification externe)

Licences Mentions légales Accueil du site Contact Inclusion