admin:services:phabricator
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
admin:services:phabricator [2015/06/06 12:19] – créée chirac | admin:services:phabricator [2016/08/07 00:37] – [Gestion des logs des démons] david.sinquin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | blabla | + | 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 '' | ||
+ | |||
+ | ===== 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 ==== | ||
+ | |||
+ | Pour modifier des paramètres de Phabricator, | ||
+ | <code bash> | ||
+ | |||
+ | Après une modification, | ||
+ | <code bash> | ||
+ | |||
+ | ==== Supprimer une tâche ou un projet ==== | ||
+ | |||
+ | En général, si le projet ou la tâche a été traité, on préférera l' | ||
+ | |||
+ | Si l'on souhaite vraiment le supprimer (en cas de doublon, spam, etc.), il faut trouver son PHID : | ||
+ | * pour les tâches, il suffit de l' | ||
+ | * pour les projets, on peut l' | ||
+ | |||
+ | Ensuite, pour le supprimer on lance : | ||
+ | <code bash> | ||
+ | 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 ===== | ||
+ | |||
+ | Pour mettre à jour, on peut suivre la partie de la doc d' | ||
+ | |||
+ | On peut aussi laisser faire le script de mis à jour automatique suivant : | ||
+ | <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 | ||
+ | service apache2 reload | ||
+ | echo " | ||
+ | |||
+ | echo -n " | ||
+ | cd ${GIT_ROOT}/ | ||
+ | ./bin/phd stop | ||
+ | echo " | ||
+ | |||
+ | echo "Mise à jour des dépôts git : " | ||
+ | echo -n "- arcanist :" | ||
+ | cd ${GIT_ROOT}/ | ||
+ | git pull | ||
+ | echo " | ||
+ | echo -n "- libphutil :" | ||
+ | cd ${GIT_ROOT}/ | ||
+ | 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 | ||
+ | echo " | ||
+ | |||
+ | echo -n " | ||
+ | a2ensite task.conf | ||
+ | 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 / | ||
+ | # | ||
+ | |||
+ | / | ||
+ | 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 ===== | ||
+ | |||
+ | Le guide officiel est en deux parties : | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | 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' | ||
+ | |||
+ | ==== Installation des logiciels ==== | ||
+ | |||
+ | Pour PHP, les modules mbstring, iconv et pcntl sont activés par défaut dans le paquet php5 de jessie, il n'y a donc rien de particulier à faire pour les installer en plus de PHP. | ||
+ | |||
+ | Les paquets optionnels php5-apcu et php5-gd ont été installés. | ||
+ | |||
+ | Pour installer d'un coup tous les paquets utiles, (y compris php5-ldap, utilisé pour l' | ||
+ | <code bash> | ||
+ | apt-get install apache2 libapache2-mod-php5 php5 git php5-mysql php5-curl \ | ||
+ | php5-apcu php5-gd php5-ldap mysql-server python-pygments | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | <code bash> | ||
+ | mkdir / | ||
+ | git clone https:// | ||
+ | git clone https:// | ||
+ | git clone https:// | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Configuration de PHP ==== | ||
+ | |||
+ | Il faut définir un fuseau horaire par défaut : | ||
+ | <file apache / | ||
+ | |||
+ | ==== Configuration du vhost ==== | ||
+ | |||
+ | On s' | ||
+ | |||
+ | On crée ensuite le vhost en créant le fichier suivant : | ||
+ | <file apache / | ||
+ | < | ||
+ | ServerName task.federez.net | ||
+ | ServerAlias task.federez.org | ||
+ | ServerAlias todo.federez.net todo.federez.org | ||
+ | ServerAlias phabricator.federez.net phabricator.federez.org | ||
+ | ServerSignature Off | ||
+ | |||
+ | Redirect permanent / https:// | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | 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 | ||
+ | |||
+ | < | ||
+ | Require all granted | ||
+ | </ | ||
+ | |||
+ | DocumentRoot / | ||
+ | |||
+ | # Limite à 32M | ||
+ | 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 | ||
+ | RewriteRule ^/ | ||
+ | RewriteRule ^/ | ||
+ | RewriteRule ^(.*)$ | ||
+ | |||
+ | ErrorLog ${APACHE_LOG_DIR}/ | ||
+ | CustomLog ${APACHE_LOG_DIR}/ | ||
+ | |||
+ | SSLEngine on | ||
+ | SSLCertificateFile / | ||
+ | SSLCertificateKeyFile / | ||
+ | SSLCertificateChainFile / | ||
+ | SSLCACertificateFile / | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | On recharge la configuration d' | ||
+ | <code bash> | ||
+ | |||
+ | |||
+ | ==== Configuration de la base de données ==== | ||
+ | |||
+ | On crée un utilisateur en base de données (via le compte root) : | ||
+ | <code mysql> | ||
+ | CREATE USER ' | ||
+ | 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 base de données pour phabricator : | ||
+ | <code bash> | ||
+ | ./ | ||
+ | ./ | ||
+ | ./ | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | Idéalement, | ||
+ | |||
+ | La dernière commande vous créera une vingtaine de bases MySQL, ce n'est pas un bug mais une fonctionnalité : https:// | ||
+ | |||
+ | 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 base de données, on change la configuration par défaut pour avoir : | ||
+ | <file autoconf / | ||
+ | max_allowed_packet = 48M | ||
+ | sql_mode = STRICT_ALL_TABLES | ||
+ | ft_stopword_file=/ | ||
+ | </ | ||
+ | |||
+ | Et on redémarre mysql : | ||
+ | <code bash> | ||
+ | |||
+ | ==== Configuration du stockage ==== | ||
+ | |||
+ | 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 base de données), on lancera : | ||
+ | <code bash> | ||
+ | mkdir -p / | ||
+ | chown www-data: / | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | ==== Lancement des démons ==== | ||
+ | |||
+ | Il faut aussi lancer les démons de phabricator. | ||
+ | |||
+ | 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 ===== | ||
+ | |||
+ | Une commande permet de sauvegarder facilement la base de données de Phabricator : | ||
+ | <code bash> | ||
+ | |||
+ | Le script ''/ | ||
+ | |||
+ | Pour restaurer une sauvegarde : | ||
+ | <code bash> | ||
+ | La restauration efface toutes les données et insère les anciennes. | ||
+ | |||
+ | Le script lancé indirectement via la crontab tous les jours à 3:00 est le suivant : | ||
+ | <file bash / | ||
+ | # | ||
+ | |||
+ | BACKUP_ROOT="/ | ||
+ | PHABRICATOR_ROOT="/ | ||
+ | LOG_FILE="/ | ||
+ | |||
+ | # Redirection vers un fichier de log et affichage | ||
+ | exec > >(tee -a " | ||
+ | |||
+ | IFS=";" | ||
+ | |||
+ | echo " | ||
+ | |||
+ | if [ ! -d ${BACKUP_ROOT} ]; then | ||
+ | echo " | ||
+ | exit 1 | ||
+ | fi | ||
+ | |||
+ | if [ ! -w ${BACKUP_ROOT} ]; then | ||
+ | echo " | ||
+ | exit 2 | ||
+ | fi | ||
+ | |||
+ | if [ ! -x ${PHABRICATOR_ROOT}/ | ||
+ | echo " | ||
+ | exit 3 | ||
+ | fi | ||
+ | |||
+ | echo " | ||
+ | find ${BACKUP_ROOT} -type f -ctime +2 -exec echo " -" {} \; -exec rm -rf {} + | ||
+ | |||
+ | echo -e " | ||
+ | ${PHABRICATOR_ROOT}/ | ||
+ | |||
+ | fin=$(date +' | ||
+ | |||
+ | 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.txt · Dernière modification : 2019/11/27 02:05 de david