Outils pour utilisateurs

Outils du site


admin:services:phabricator

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
admin:services:phabricator [2015/06/24 23:55] – [Mise à jour] Script pour mise à jour automatique david.sinquinadmin: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 "bienvenue", la procédure à suivre et la suivante :
 +  - rechercher Dashboard dans la barre de recherche
 +  - cliquer sur manage dashboard en bout de ligne (c'est l'icone représentant 9 cases (3*3))
 +  - é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 26: Ligne 33:
 <code bash>./bin/remove destroy 'PHID-…'</code> <code bash>./bin/remove destroy 'PHID-…'</code>
 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://task.federez.net/conduit/method/phid.lookup/
 +
 +On tape le nom (par example ["T15"]) au format json et le tour est joué.
  
 ===== Mise à jour ===== ===== Mise à jour =====
Ligne 43: Ligne 56:
 IFS=";" read date date_fr debut <<<$(LANG="fr_FR.UTF-8" date +'%F_%T;%a %d %b à %T;%s') IFS=";" read date date_fr debut <<<$(LANG="fr_FR.UTF-8" date +'%F_%T;%a %d %b à %T;%s')
  
-echo "Début de la sauvegarde le ${date_fr}."+echo "Début de la mise à jour le ${date_fr}."
  
 if [ ! -d ${GIT_ROOT} ]; then if [ ! -d ${GIT_ROOT} ]; then
Ligne 86: Ligne 99:
 echo -n "Mise à jour des schéma de la BdD :" echo -n "Mise à jour des schéma de la BdD :"
 cd ${GIT_ROOT}/phabricator/ cd ${GIT_ROOT}/phabricator/
-./bin/storage upgrade --user 'user_adm' --password 'password'+./bin/storage upgrade --user 'phabricator_adm' --password '?iJ&u4x^98i^Fx<+--force
 echo "OK" echo "OK"
  
Ligne 100: Ligne 113:
 fin=$(date +'%s') fin=$(date +'%s')
  
-echo "Fin de la sauvegarde, temps total $((fin - debut))s."+echo "Fin de la mise à jour, temps total $((fin - debut))s."
 </file> </file>
  
Ligne 107: Ligne 120:
 #!/bin/bash #!/bin/bash
  
-/usr/local/sbin/phabricator_update+/usr/local/sbin/phabricator_backup
 if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
- /usr/local/sbin/phabricator_backup+ /usr/local/sbin/phabricator_update
 fi fi
 +
 </file> </file>
  
Ligne 117: Ligne 131:
 # Conf pour les màj de phabricator # Conf pour les màj de phabricator
  
 +/var/log/phabricator_backup.log
 /var/log/phabricator_update.log { /var/log/phabricator_update.log {
     weekly     weekly
Ligne 138: Ligne 153:
 ==== Installation des logiciels ==== ==== 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.+Pour PHP, les modules iconv et pcntl sont activés par défaut dans le paquet php de buster, 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.+Les paquets optionnels php-apcu, php-gd et php-zip ont été installés.
  
 Pour installer d'un coup tous les paquets utiles, (y compris php5-ldap, utilisé pour l'authentification), on peut lancer : Pour installer d'un coup tous les paquets utiles, (y compris php5-ldap, utilisé pour l'authentification), on peut lancer :
 <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+
 </code> </code>
  
Ligne 155: Ligne 169:
 git clone https://github.com/phacility/phabricator.git git clone https://github.com/phacility/phabricator.git
 </code> </code>
 +
  
 ==== Configuration de PHP ==== ==== Configuration de PHP ====
Ligne 167: 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 /etc/apache2/sites-available/task.conf> <file apache /etc/apache2/sites-available/task.conf>
-<VirtualHost *:80+# Redirections vers task.federez.net 
-  ServerName task.federez.net +<VirtualHost *:443
-  ServerAlias task.federez.org +  ServerName phabricator.federez.net 
-  ServerAlias todo.federez.net todo.federez.org +  ServerAlias todo.federez.net 
-  ServerAlias phabricator.federez.net phabricator.federez.org + 
-  ServerSignature Off+  RedirectMatch permanent ^/(?!.well-known/)(.+)$ https://task.federez.net/ 
 + 
 +  SSLEngine on 
 +  SSLCertificateFile /etc/letsencrypt/live/nonagon.federez.net/fullchain.pem 
 +  SSLCertificateKeyFile /etc/letsencrypt/live/nonagon.federez.net/privkey.pem
  
-  Redirect permanent https://task.federez.net/+  ErrorLog ${APACHE_LOG_DIR}/phabricator-redir.error.log 
 +  CustomLog ${APACHE_LOG_DIR}/phabricator-redir.access.log combined
 </VirtualHost> </VirtualHost>
  
 <VirtualHost *:443> <VirtualHost *:443>
   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  phabricator.federez.fr 
   ServerSignature Off   ServerSignature Off
  
   <Directory /opt/phabricator/phabricator/webroot>   <Directory /opt/phabricator/phabricator/webroot>
 +      AllowOverride None
       Require all granted       Require all granted
   </Directory>   </Directory>
Ligne 193: Ligne 211:
   LimitRequestBody 33554432   LimitRequestBody 33554432
  
-  php_value post_max_size 32M +  php_value post_max_size 32M 
-  php_value opcache.validate_timestamps 0 +  php_value opcache.validate_timestamps 0 
-  php_value memory_limit 512M+  php_value memory_limit 512M
  
-  # Règles pour Phabricator 
   RewriteEngine on   RewriteEngine on
-  RewriteRule ^/rsrc/(.*)                           [L,QSA] +  RewriteRule ^/rsrc/(.*)                             [L,QSA] 
-  RewriteRule ^/favicon.ico                         [L,QSA] +  RewriteRule ^/favicon.ico                           [L,QSA
-  RewriteRule ^(.*)$          /index.php?__path__=$1  [B,L,QSA]+  RewriteRule ^/ws/(.*)       ws://localhost:22280/$1   [P,L
 +  RewriteRule ^(.*)$          /index.php?__path__=$1    [B,L,QSA]
  
-  ErrorLog ${APACHE_LOG_DIR}/phabricator.error.log +  ErrorLog ${APACHE_LOG_DIR}/phabricator-ssl.error.log 
-  CustomLog ${APACHE_LOG_DIR}/phabricator.access.log combined+  CustomLog ${APACHE_LOG_DIR}/phabricator-ssl.access.log combined
  
   SSLEngine on   SSLEngine on
-  SSLCertificateFile /etc/ssl/federez/federez_task.crt +  SSLCertificateFile /etc/letsencrypt/live/nonagon.federez.net/fullchain.pem 
-  SSLCertificateKeyFile /etc/ssl/private/federez.key +  SSLCertificateKeyFile /etc/letsencrypt/live/nonagon.federez.net/privkey.pem 
-  SSLCertificateChainFile /etc/ssl/federez/federez_task_chain.crt + 
-  SSLCACertificateFile /etc/ssl/certs/StartCom_Certification_Authority.pem+  ProxyPass /ws "http://127.0.0.1:22280/" 
 +  ProxyPassReverse /ws "http://127.0.0.1:22280/"
 </VirtualHost> </VirtualHost>
 +
 </file> </file>
  
Ligne 222: 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 'user'@'localhost' IDENTIFIED BY 'passwd'; +CREATE USER 'user'@'IP' IDENTIFIED BY 'passwd'; 
-GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `phabricator\_%`.* TO 'user'@'localhost'; +GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `phabricator\_%`.* TO 'user'@'IP'; 
-CREATE USER 'user_adm'@'localhost' IDENTIFIED BY 'passwd'; +CREATE USER 'user_adm'@'IP' IDENTIFIED BY 'passwd'; 
-GRANT ALL PRIVILEGES ON `phabricator\_%`.* TO 'user_adm'@'localhost';+GRANT ALL PRIVILEGES ON `phabricator\_%`.* TO 'user_adm'@'IP';
 </code> </code>
  
Ligne 232: Ligne 252:
 ./bin/config set mysql.user 'user' ./bin/config set mysql.user 'user'
 ./bin/config set mysql.pass 'passwd' ./bin/config set mysql.pass 'passwd'
-./bin/storage upgrade --user 'root' --password 'password'+./bin/config set mysql.host 'hôte' 
 +./bin/storage upgrade --user 'root' --password 'password' --host 'hôte'
 </code> </code>
  
Ligne 257: 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 /data/phabricator+mkdir -p /data/phabricator
 chown www-data: /data/phabricator chown www-data: /data/phabricator
 ./bin/config set  "storage.local-disk.path" /data/phabricator ./bin/config set  "storage.local-disk.path" /data/phabricator
Ligne 276: Ligne 297:
 <code> <code>
 @reboot root /opt/phabricator/phabricator/bin/phd start @reboot root /opt/phabricator/phabricator/bin/phd start
 +</code>
 +
 +==== 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 /etc/logrotate.d/phabricator>
 +# Conf pour les logs de phabricator
 +
 +/var/tmp/phd/log/daemons.log {
 +    daily
 +    missingok
 +    rotate 7
 +    compress
 +    notifempty
 +    create 740 phd phd
 +}
 +</file>
 +===== Configuration d'elasticsearch (option non retenue à FedeRez) =====
 +
 +Afin d'obtenir de meilleur résultats de recherche, il est possible de se baser sur elasticsearch.
 +L’installation est simple : cf [[https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-repositories.html|la doc officielle]]
 +
 +Elasticsearch écoute de base sur ''0.0.0.0''. Afin d'augmenter la sécurité, on peut dé-commenter la ligne ''network.host: "127.0.0.1"'' dans ''/etc/elasticsearch/elasticsearch.yml''
 +
 +Après avoir activé le service au démarage (avec ''systemctl enable elasticsearch'') et lancé le service (avec ''systemctl start elasticsearch''), on peut l'activer dans phabricator.
 +
 +Il suffit de changer les configurations de phabricator avec les commandes: 
 +<code bash>/opt/phabricator/phabricator/bin/config set search.elastic.host "http://localhost:9200"
 +/opt/phabricator/phabricator/bin/config set search.elastic.namespace "phabricator"
 +</code>
 +
 +Enfin on execute, pour créer les index :
 +<code bash>/opt/phabricator/phabricator/bin/search init
 +/opt/phabricator/phabricator/bin/search index --all
 +</code>
 +
 +A partir de là on peut optimiser elasticsearch, changer la langue, rajouter des synonymes.
 +Cela se fait via curl :
 +<code bash>curl -XPUT 'http://127.0.0.1:9200/_template/template_phabricator' -d @mapping_phab.json</code>
 +Avec dans notre cas, un fichier mapping.json suivant.
 +<code javascript>
 +{
 +    "template": "phabricator",
 +    "settings": {
 +        "analysis": {
 +            "filter": {
 +                "trigrams_filter": {
 +                    "type":     "ngram",
 +                    "min_gram": 3,
 +                    "max_gram": 3
 +                },
 +                "french_elision": {
 +                    "type":         "elision",
 +                    "articles": [ "l", "m", "t", "qu", "n", "s",
 +                                  "j", "d", "c", "jusqu", "quoiqu",
 +                                  "lorsqu", "puisqu"
 +                                ]
 +                },
 +                "french_stop": {
 +                    "type":       "stop",
 +                    "stopwords":  "_french_"
 +                },
 +                "french_stemmer": {
 +                    "type":       "stemmer",
 +                    "language":   "french"
 +                }
 +            },
 +            "analyzer": {
 +                "french_no_trigrams": {
 +                    "type":      "custom",
 +                    "tokenizer": "standard",
 +                    "filter":   [
 +                        "french_elision",
 +                        "lowercase",
 +                        "french_stop",
 +                        "french_stemmer"
 +                    ]
 +                },
 +                "french_trigrams": {
 +                    "type":      "custom",
 +                    "tokenizer": "standard",
 +                    "filter":   [
 +                        "french_elision",
 +                        "lowercase",
 +                        "french_stop",
 +                        "french_stemmer",
 +                        "trigrams_filter"
 +                    ]
 +                }
 +            }
 +        }
 +    },
 +    "mappings": {
 +        "PROJ": {
 +            "properties": {
 +                "field": {
 +                    "properties": {
 +                        "corpus": {
 +                            "type": "string",
 +                    "analyzer": "french_trigrams"
 +                        }
 +                    }
 +                }
 +            }
 +        },
 +        "TASK": {
 +            "properties": {
 +                "field": {
 +                    "properties": {
 +                        "corpus": {
 +                            "type": "string",
 +                    "analyzer": "french_trigrams"
 +                        }
 +                    }
 +                }
 +            }
 +        },
 +        "USER": {
 +            "properties": {
 +                "field": {
 +                    "properties": {
 +                        "corpus": {
 +                            "type": "string",
 +                    "analyzer": "french_no_trigrams"
 +                        }
 +                    }
 +                }
 +            }
 +        }
 +    }
 +}
 +</code>
 +
 +Puis pour reindexer les objects :
 +<code bash>
 +/opt/phabricator/phabricator/bin/search index --all
 </code> </code>
 ===== Sauvegardes ===== ===== Sauvegardes =====
Ligne 288: 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é indirectement via la crontab tous les jours à 3:00 est le suivant :
 <file bash /usr/local/sbin/phabricator_backup> <file bash /usr/local/sbin/phabricator_backup>
 #!/bin/bash #!/bin/bash
Ligne 329: Ligne 486:
 </file> </file>
  
 +Pour gérer les logs on ajoute à la configuration de logrotate le fichier suivant :
 +<file yaml /etc/logrotate.d/phabricator_backup>
 +# Conf pour les backups de phabricator
 +
 +/var/log/phabricator_backup.log {
 +    weekly
 +    missingok
 +    rotate 4
 +    compress
 +    notifempty
 +    copytruncate
 +}
 +</file>
admin/services/phabricator.1435182948.txt.gz · Dernière modification : 2015/06/24 23:55 de david.sinquin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki