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/16 22:55] – [Lancement des démons] Ajout user et wrapper david.sinquin | admin:services:phabricator [2019/11/27 02:05] (Version actuelle) – [Configuration du vhost] Màj david | ||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
===== 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 12: | Ligne 19: | ||
<code bash> | <code bash> | ||
- | Après une modification, | + | Après une modification, |
- | <code bash>/opt/phabricator/ | + | <code bash>./bin/phd restart</ |
- | + | ||
- | Le script sert juste à appeler avec l' | + | |
==== Supprimer une tâche ou un projet ==== | ==== Supprimer une tâche ou un projet ==== | ||
Ligne 28: | Ligne 33: | ||
<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 33: | 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 62: | Ligne 153: | ||
==== 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 79: | Ligne 169: | ||
git clone https:// | git clone https:// | ||
</ | </ | ||
+ | |||
==== Configuration de PHP ==== | ==== Configuration de PHP ==== | ||
Ligne 91: | Ligne 182: | ||
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 117: | 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 146: | Ligne 242: | ||
On crée un utilisateur en base de données (via le compte root) : | On crée un utilisateur en base de données (via le compte root) : | ||
<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 ' | ||
</ | </ | ||
Ligne 154: | Ligne 252: | ||
./ | ./ | ||
./ | ./ | ||
- | ./ | + | ./ |
+ | ./ | ||
</ | </ | ||
Ligne 179: | Ligne 278: | ||
Cependant, si l'on veut autoriser le stockage de fichiers sur disque (et non en base de données), 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: / | ||
./ | ./ | ||
</ | </ | ||
- | ==== Gestion | + | ==== Lancement |
Il faut aussi lancer les démons de phabricator. | Il faut aussi lancer les démons de phabricator. | ||
- | Pour cela on va créer | + | Pour qu'ils soient lancés en utilisant |
- | <code bash> | + | <code bash> |
+ | useradd --system -d / | ||
+ | ./ | ||
+ | ./bin/phd start | ||
+ | </ | ||
- | On crée donc un utilisateur | + | Pour qu'ils soient lancés automatiquement au démarrage, on ajoute à la crontab |
- | < | + | < |
+ | @reboot root / | ||
+ | </ | ||
- | et un wrapper : | + | ==== Gestion des logs des démons ==== |
- | <file bash / | + | |
- | #!/bin/sh | + | |
- | # Status renvoie un code retour de 0 si des démons | + | On crée le fichier suivant, pour que logrotate gère les logs des démons |
- | if /opt/phabricator/ | + | <file yaml /etc/logrotate.d/ |
- | echo " | + | # Conf pour les logs de phabricator |
- | /opt/phabricator/phabricator/bin/phd restart | + | |
- | else | + | /var/tmp/phd/log/daemons.log { |
- | echo " | + | daily |
- | / | + | |
- | fi | + | rotate 7 |
+ | | ||
+ | notifempty | ||
+ | create 740 phd phd | ||
+ | } | ||
</ | </ | ||
- | Ensuite, pour être sûr que le script soit lancé | + | ===== Configuration d' |
- | <code bash> | + | |
- | chown phd: / | + | Afin d' |
- | chmod 4555 / | + | L’installation est simple : cf [[https:// |
+ | |||
+ | Elasticsearch écoute de base sur '' | ||
+ | |||
+ | Après avoir activé | ||
+ | |||
+ | Il suffit de changer les configurations de phabricator avec les commandes: | ||
+ | <code bash>/ | ||
+ | / | ||
</ | </ | ||
- | Pour l' | + | Enfin on execute, pour créer les index : |
+ | <code bash>/ | ||
+ | / | ||
+ | </ | ||
- | Pour qu'ils soient lancés automatiquement au démarrage, | + | A partir de là on peut optimiser elasticsearch, |
- | < | + | Cela se fait via curl : |
- | @reboot phd / | + | < |
+ | Avec dans notre cas, un fichier mapping.json suivant. | ||
+ | <code javascript> | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Puis pour reindexer les objects : | ||
+ | <code bash> | ||
+ | / | ||
</ | </ | ||
===== Sauvegardes ===== | ===== Sauvegardes ===== | ||
Ligne 230: | 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 271: | Ligne 486: | ||
</ | </ | ||
+ | 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.1434488156.txt.gz · Dernière modification : 2015/06/16 22:55 de david.sinquin