admin:services:phabricator
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
admin:services:phabricator [2015/06/07 00:57] – Permier jet :) david.sinquin | admin:services:phabricator [2019/11/27 02:05] (Version actuelle) – [Configuration du vhost] Màj david | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
Phabricator est un outil de gestion de projet et de développement écrit en PHP. Il est utilisé au sein de FedeRez pour gérer les projets afin de garder un historique de ce qui est fait. | Phabricator est un outil de gestion de projet et de développement écrit en PHP. Il est utilisé au sein de FedeRez pour gérer les projets afin de garder un historique de ce qui est fait. | ||
+ | |||
+ | Il est accessible à l' | ||
Pour toutes les commandes à lancer qui commencent par '' | Pour toutes les commandes à lancer qui commencent par '' | ||
===== Administration ===== | ===== Administration ===== | ||
+ | ==== Modification des Dashboards ==== | ||
+ | Pour modifier un dashboard, notamment le message " | ||
+ | - rechercher Dashboard dans la barre de recherche | ||
+ | - cliquer sur manage dashboard en bout de ligne (c'est l' | ||
+ | - éditer le message de bienvenue en cliquant sur le crayon | ||
+ | Note : il faut posséder les droits admins pour modifier ces paramètres | ||
+ | Note 2 : ajouter un lien vers un projet dans le message de bienvenue améliore grandement la convivialité. | ||
==== Redémarrage des démons ==== | ==== Redémarrage des démons ==== | ||
Ligne 22: | Ligne 31: | ||
Ensuite, pour le supprimer on lance : | Ensuite, pour le supprimer on lance : | ||
- | <code bash> | + | <code bash> |
Et on valide malgré le message. | Et on valide malgré le message. | ||
+ | |||
+ | |||
+ | Sinon autre possibilité de manière plus globale : utiliser conduit (l'api de phabricator). | ||
+ | https:// | ||
+ | |||
+ | On tape le nom (par example [" | ||
===== Mise à jour ===== | ===== Mise à jour ===== | ||
Ligne 29: | Ligne 44: | ||
Pour mettre à jour, on peut suivre la partie de la doc d' | Pour mettre à jour, on peut suivre la partie de la doc d' | ||
- | Cela revient à faire (en faisant par sécurité une coupure un peu plus longue) | + | On peut aussi laisser |
- | <code bash> | + | <file bash / |
+ | # | ||
+ | |||
+ | GIT_ROOT="/ | ||
+ | LOG_FILE="/ | ||
+ | |||
+ | # Redirection vers un fichier de log et affichage | ||
+ | exec > >(tee -a " | ||
+ | |||
+ | IFS=";" | ||
+ | |||
+ | echo " | ||
+ | |||
+ | if [ ! -d ${GIT_ROOT} ]; then | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | if [ ! -w ${GIT_ROOT} ]; then | ||
+ | echo " | ||
+ | exit 2 | ||
+ | fi | ||
+ | |||
+ | if [ ! -x ${GIT_ROOT}/ | ||
+ | echo " | ||
+ | exit 3 | ||
+ | fi | ||
+ | |||
+ | echo -n " | ||
a2dissite task.conf | a2dissite task.conf | ||
service apache2 reload | service apache2 reload | ||
- | cd / | + | echo " |
+ | |||
+ | echo -n " | ||
+ | cd ${GIT_ROOT}/ | ||
./bin/phd stop | ./bin/phd stop | ||
- | cd ../ | + | echo " |
- | cd ../ | + | |
- | cd ../ | + | echo "Mise à jour des dépôts git : " |
- | ./ | + | echo -n "- arcanist :" |
+ | cd ${GIT_ROOT}/arcanist/ | ||
+ | git pull | ||
+ | echo " | ||
+ | echo -n "- libphutil :" | ||
+ | cd ${GIT_ROOT}/libphutil/ | ||
+ | git pull | ||
+ | echo " | ||
+ | echo -n "- phabricator :" | ||
+ | cd ${GIT_ROOT}/ | ||
+ | git pull | ||
+ | echo " | ||
+ | |||
+ | echo -n "Mise à jour des schéma de la BdD :" | ||
+ | cd ${GIT_ROOT}/ | ||
+ | ./ | ||
+ | echo " | ||
+ | |||
+ | echo -n " | ||
./bin/phd start | ./bin/phd start | ||
+ | echo " | ||
+ | |||
+ | echo -n " | ||
a2ensite task.conf | a2ensite task.conf | ||
service apache2 reload | service apache2 reload | ||
- | </ | + | echo " |
+ | fin=$(date +' | ||
+ | echo "Fin de la mise à jour, temps total $((fin - debut))s." | ||
+ | </ | ||
+ | Il est appelé par le script suivant via la crontab : | ||
+ | <file bash / | ||
+ | #!/bin/bash | ||
+ | |||
+ | / | ||
+ | if [ $? -eq 0 ]; then | ||
+ | / | ||
+ | fi | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour gérer les logs, on crée un fichier de configuration pour logrotate comme suit : | ||
+ | <file yaml / | ||
+ | # Conf pour les màj de phabricator | ||
+ | |||
+ | / | ||
+ | / | ||
+ | weekly | ||
+ | missingok | ||
+ | rotate 4 | ||
+ | compress | ||
+ | notifempty | ||
+ | copytruncate | ||
+ | } | ||
+ | </ | ||
===== Installation ===== | ===== Installation ===== | ||
Ligne 54: | Ligne 149: | ||
Le choix de MySQL et et non de MariaDB vient du fait que le premier était déjà installé sur baldrick. | Le choix de MySQL et et non de MariaDB vient du fait que le premier était déjà installé sur baldrick. | ||
- | Il pourrait être intéressant dans le futur d' | + | Il pourrait être intéressant dans le futur d' |
==== Installation des logiciels ==== | ==== Installation des logiciels ==== | ||
- | Pour PHP, les modules | + | Pour PHP, les modules iconv et pcntl sont activés par défaut dans le paquet |
- | Les paquets optionnels | + | Les paquets optionnels |
- | Pour installer d'un coup tous les paquets utiles, (y compris php5-ldap, utilisé pour l' | + | Pour installer d'un coup tous les paquets utiles, (y compris php5-ldap, utilisé pour l' |
<code bash> | <code bash> | ||
- | apt-get install apache2 libapache2-mod-php5 php5 git php5-mysql php5-curl \ | + | apt install apache2 libapache2-mod-php git python3-pygments php php-apcu php-curl php-gd php-json php-ldap php-mbstring php-mysql php-zip |
- | php5-apcu php5-gd php5-ldap mysql-server python-pygments | + | |
</ | </ | ||
Ligne 75: | Ligne 169: | ||
git clone https:// | git clone https:// | ||
</ | </ | ||
+ | |||
==== Configuration de PHP ==== | ==== Configuration de PHP ==== | ||
Ligne 81: | Ligne 176: | ||
<file apache / | <file apache / | ||
- | ==== Configuration du VHOST ==== | + | ==== Configuration du vhost ==== |
On s' | On s' | ||
- | On crée ensuite le VHOST en créant le fichier suivant : | + | On crée ensuite le vhost en créant le fichier suivant : |
<file apache / | <file apache / | ||
- | < | + | # Redirections vers task.federez.net |
- | ServerName | + | < |
- | ServerAlias | + | ServerName |
- | | + | ServerAlias |
- | | + | |
- | | + | |
+ | |||
+ | | ||
+ | SSLCertificateFile / | ||
+ | | ||
- | | + | |
+ | CustomLog ${APACHE_LOG_DIR}/phabricator-redir.access.log combined | ||
</ | </ | ||
< | < | ||
ServerName task.federez.net | ServerName task.federez.net | ||
- | ServerAlias task.federez.org task.federez.fr | ||
- | ServerAlias todo.federez.net todo.federez.org todo.federez.fr | ||
- | ServerAlias phabricator.federez.net phabricator.federez.org | ||
ServerSignature Off | ServerSignature Off | ||
< | < | ||
+ | AllowOverride None | ||
Require all granted | Require all granted | ||
</ | </ | ||
Ligne 113: | Ligne 211: | ||
LimitRequestBody 33554432 | LimitRequestBody 33554432 | ||
- | php_value post_max_size 32M | + | |
- | php_value opcache.validate_timestamps 0 | + | |
- | php_value memory_limit 512M | + | |
- | # Règles pour Phabricator | ||
RewriteEngine on | RewriteEngine on | ||
- | RewriteRule ^/ | + | RewriteRule ^/ |
- | RewriteRule ^/ | + | RewriteRule ^/ |
- | RewriteRule ^(.*)$ | + | RewriteRule ^/ |
+ | RewriteRule ^(.*)$ | ||
- | ErrorLog ${APACHE_LOG_DIR}/ | + | ErrorLog ${APACHE_LOG_DIR}/ |
- | CustomLog ${APACHE_LOG_DIR}/ | + | CustomLog ${APACHE_LOG_DIR}/ |
SSLEngine on | SSLEngine on | ||
- | SSLCertificateFile /etc/ssl/federez/federez_task.crt | + | SSLCertificateFile /etc/letsencrypt/live/ |
- | SSLCertificateKeyFile /etc/ssl/private/federez.key | + | SSLCertificateKeyFile /etc/letsencrypt/live/nonagon.federez.net/ |
- | | + | |
- | | + | |
+ | | ||
</ | </ | ||
+ | |||
</ | </ | ||
Ligne 138: | Ligne 238: | ||
- | ==== Configuration de la BdD ==== | + | ==== Configuration de la base de données |
- | On crée un utilisateur en BdD (via le compte root) : | + | On crée un utilisateur en base de données |
<code mysql> | <code mysql> | ||
- | CREATE USER ' | + | CREATE USER ' |
- | GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `phabricator\_%`.* TO ' | + | GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `phabricator\_%`.* TO ' |
+ | CREATE USER ' | ||
+ | GRANT ALL PRIVILEGES ON `phabricator\_%`.* TO ' | ||
</ | </ | ||
- | On configure ensuite les accès à la BdD pour phabricator : | + | On configure ensuite les accès à la base de données |
<code bash> | <code bash> | ||
./ | ./ | ||
./ | ./ | ||
- | ./ | + | ./ |
+ | ./ | ||
</ | </ | ||
Ligne 159: | Ligne 262: | ||
Ensuite, on se connecte au site et on suit les recommandations pour résoudre tous les problèmes remontés. Certains très simples à résoudre ne sont pas détaillés ici. | Ensuite, on se connecte au site et on suit les recommandations pour résoudre tous les problèmes remontés. Certains très simples à résoudre ne sont pas détaillés ici. | ||
- | Pour la BdD, on change la configuration par défaut pour avoir : | + | Pour la base de données, on change la configuration par défaut pour avoir : |
<file autoconf / | <file autoconf / | ||
max_allowed_packet = 48M | max_allowed_packet = 48M | ||
Ligne 173: | Ligne 276: | ||
Ceci n'a pas été fait sur notre instance car elle n'est pas prévue pour servir à partager des fichiers et pour avoir un seul fichier à sauvegarder pour les backups. | Ceci n'a pas été fait sur notre instance car elle n'est pas prévue pour servir à partager des fichiers et pour avoir un seul fichier à sauvegarder pour les backups. | ||
- | Cependant, si l'on veut autoriser le stockage de fichiers sur disque (et non en BdD), on lancera : | + | Cependant, si l'on veut autoriser le stockage de fichiers sur disque (et non en base de données), on lancera : |
<code bash> | <code bash> | ||
- | mkdir / | + | mkdir -p / |
chown www-data: / | chown www-data: / | ||
./ | ./ | ||
Ligne 182: | Ligne 285: | ||
==== Lancement des démons ==== | ==== Lancement des démons ==== | ||
- | Il faut aussi lancer les démons de phabricator | + | Il faut aussi lancer les démons de phabricator. |
- | <code bash>./bin/phd start</ | + | |
+ | Pour qu'ils soient lancés en utilisant un utilisateur différent de root, on le crée et on le défini dans la configuration de pahbricator avant de lancer les démons : | ||
+ | <code bash> | ||
+ | useradd --system -d / | ||
+ | ./ | ||
+ | ./bin/phd start | ||
+ | </ | ||
+ | |||
+ | Pour qu'ils soient lancés automatiquement au démarrage, on ajoute à la crontab : | ||
+ | < | ||
+ | @reboot root / | ||
+ | </ | ||
+ | |||
+ | ==== Gestion des logs des démons ==== | ||
+ | |||
+ | On crée le fichier suivant, pour que logrotate gère les logs des démons qui sont dans un dossier inadapté : | ||
+ | <file yaml / | ||
+ | # Conf pour les logs de phabricator | ||
+ | |||
+ | / | ||
+ | daily | ||
+ | missingok | ||
+ | rotate 7 | ||
+ | compress | ||
+ | notifempty | ||
+ | create 740 phd phd | ||
+ | } | ||
+ | </ | ||
+ | ===== Configuration d' | ||
+ | |||
+ | Afin d' | ||
+ | L’installation est simple : cf [[https:// | ||
+ | |||
+ | Elasticsearch écoute de base sur '' | ||
+ | |||
+ | Après avoir activé le service au démarage (avec '' | ||
+ | |||
+ | Il suffit de changer les configurations de phabricator avec les commandes: | ||
+ | <code bash>/ | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Enfin on execute, pour créer les index : | ||
+ | <code bash>/ | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | A partir de là on peut optimiser elasticsearch, | ||
+ | Cela se fait via curl : | ||
+ | <code bash> | ||
+ | Avec dans notre cas, un fichier mapping.json suivant. | ||
+ | <code javascript> | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Puis pour reindexer les objects : | ||
+ | <code bash> | ||
+ | / | ||
+ | </ | ||
===== Sauvegardes ===== | ===== Sauvegardes ===== | ||
Ligne 196: | Ligne 445: | ||
La restauration efface toutes les données et insère les anciennes. | La restauration efface toutes les données et insère les anciennes. | ||
- | Le script lancé via la crontab tous les jours à 3:00 est le suivant : | + | Le script lancé |
<file bash / | <file bash / | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 235: | Ligne 484: | ||
echo "Fin de la sauvegarde, temps total $((fin - debut))s." | echo "Fin de la sauvegarde, temps total $((fin - debut))s." | ||
+ | </ | ||
+ | |||
+ | Pour gérer les logs on ajoute à la configuration de logrotate le fichier suivant : | ||
+ | <file yaml / | ||
+ | # Conf pour les backups de phabricator | ||
+ | |||
+ | / | ||
+ | weekly | ||
+ | missingok | ||
+ | rotate 4 | ||
+ | compress | ||
+ | notifempty | ||
+ | copytruncate | ||
+ | } | ||
</ | </ |
admin/services/phabricator.1433631469.txt.gz · Dernière modification : 2015/06/07 00:57 de david.sinquin