228 lines
No EOL
11 KiB
Markdown
228 lines
No EOL
11 KiB
Markdown
# Installation sur Yunohost
|
||
|
||
Cela consiste simplement à exposer sur le web 3 types de fichiers properties (contenant une liste de clés/valeurs) :
|
||
|
||
1 fichier properties pour décrire le chaton (modèle);
|
||
1 fichier properties par service (modèles);
|
||
1 fichier properties de metrics par service (modèle).
|
||
|
||
Les deux premiers fichiers sont à faire à la main. Le troisième peut être généré par export ou par une moulinette d’analyse fournie et qu’il faut faire tourner 1 ou 2 fois par jour.
|
||
|
||
## Dossier accessible pour les metrics
|
||
|
||
Il faut un dossier ou les fichiers soient accessibles, comme Yunohost a des configurations `.well_know` pour tous ces noms de domaines dans `/var/www/.well_know` avec un dossier `autoconfig`, un dossier `/var/www/.well_know/www.linux07.fr/chatonsinfos/` a été créé.
|
||
|
||
Puis on a ajouté un fichier de configuration `/etc/nginx/conf.d/www.linux07.d/chatonsinfos.conf` avec ces paramètres
|
||
|
||
```
|
||
location ^~ '/.well-known/chatonsinfos/' {
|
||
alias /var/www/.well-known/www.linux07.fr/chatonsinfos/;
|
||
}
|
||
```
|
||
Le nom de domaine `www.linux07.fr` est une une redirection vers `linux07.fr`, il est redirigé par l'application Redirect et sa configuration nginx est donnée par le fichier `/etc/nginx/conf.d/www.linux07.d/redirect.conf`
|
||
|
||
```
|
||
location / {
|
||
return 302 https://linux07.fr$request_uri;
|
||
}
|
||
```
|
||
On a vérifié si en ajoutant un fichier dans ce dossier il était accessible (en tapant tout le chemin du fichier).
|
||
|
||
C'est dans ce dossier que vont être créés les fichiers `metrics.properties` qui vont pouvoir être lus...
|
||
|
||
## organisation.properties
|
||
|
||
Le fichier organisation.properties est déclaré sur le git après un PR : [https://framagit.org/chatons/chatonsinfos/-/blob/master/StatoolInfos/chatons.properties#L138](https://framagit.org/chatons/chatonsinfos/-/blob/master/StatoolInfos/chatons.properties#L138)
|
||
|
||
Depuis ce fichier sont délarés les différents fichiers `service-nom_du_service-properties`
|
||
|
||
## Ajout de statoolinfos
|
||
|
||
Installation de statoolinfos, voir [https://forge.devinsy.fr/devinsy/statoolinfos/src/branch/master/README.md#install](https://forge.devinsy.fr/devinsy/statoolinfos/src/branch/master/README.md#install)
|
||
|
||
`apt-get install openjdk-11-jre-headless`
|
||
|
||
Créer les dossiers `/srv/statoolinfos/conf`, `/srv/statoolinfos/tmp` et `/srv/statoolinfos/bin`
|
||
|
||
Télécharger la dernière release : [https://forge.devinsy.fr/devinsy/statoolinfos/releases](https://forge.devinsy.fr/devinsy/statoolinfos/releases) dans le dossier `/srv/statoolinfos/tmp`
|
||
|
||
Dézipper le package et and déplacer les fichiers `statoolinfos.jar` and `statoolinfo.sh` dans le dossier `/srv/statoolinfos/bin/`
|
||
|
||
On fait un lien symbolique du fichier `statoolinfos.sh`
|
||
|
||
```
|
||
cd /srv/statoolinfos/bin/
|
||
ln -s statoolinfos.sh statoolinfos
|
||
```
|
||
Aussi un lien symbolique `well-know` pour que le dossier accessible `.well_know/www.rodinux.fr/chatonsinfos/` soit visible pour nous depuis `/srv/statoolinfos`
|
||
|
||
```
|
||
cd /srv/statoolinfos
|
||
ln -s /var/www/.well-known/www.linux07.fr/chatonsinfos/ well-know
|
||
```
|
||
|
||
Créer les dossiers `/srv/statoolinfos/conf/`, `/srv/statoolinfos/tmp/`
|
||
|
||
Dans le dossier `/srv/statoolinfos/conf/` on met en place des configurations properties pour chaque service
|
||
Par exemple pour Etherpad
|
||
|
||
***/srv/statoolinfos/conf/pad.linux07.conf***
|
||
|
||
```
|
||
conf.probe.types=HttpAccessLog, HttpErrorLog, Etherpad
|
||
conf.probe.httpaccesslog.file=/var/log/nginx/pad.linux07.fr-access.log*
|
||
conf.probe.httperrorlog.file=/var/log/nginx/pad.linux07.fr-error.log*
|
||
conf.probe.httpaccesslog.pattern=
|
||
conf.probe.etherpad.logs=/var/log/etherpad_mypads/etherpad.log
|
||
conf.probe.etherpad.database.url=jdbc:mariadb://localhost/etherpad_mypads
|
||
conf.probe.etherpad.database.user=User_DB
|
||
conf.probe.etherpad.database.password=DB_PASSWORD
|
||
conf.probe.target=/var/www/.well-known/www.linux07.fr/chatonsinfos/service-etherpad-metrics.properties
|
||
|
||
# Custom access log pattern with Java regex.
|
||
# Default: "^(?<remoteAddress>[a-zA-F0-9\\\\:\\\\.]+) - (?<remoteUser>[^\\[]+) \\[(?<time>[^\\]]+)\\] \"(?<request>.*)\" (?<status>\\d+) (?<bodyBytesSent>\\d+) \"(?<referer>.*)\" \"(?<userAgent>[^\"]*)\".*$"
|
||
#conf.probe.httpaccesslog.pattern=
|
||
|
||
```
|
||
La commande pour tester les configurations:
|
||
|
||
`/srv/statoolinfos/bin/statoolinfos probe -full /srv/statoolinfos/conf/pad.linux07.conf`
|
||
|
||
### Usage
|
||
|
||
```
|
||
Usage:
|
||
statoolinfos [ -h | -help | --help ]
|
||
statoolinfos [ -v | -version | --version ]
|
||
|
||
statoolinfos build <configurationfile> build property files from conf and input
|
||
statoolinfos clear <configurationfile> remove property files from conf
|
||
statoolinfos crawl <configurationfile> crawl all file from conf and input
|
||
statoolinfos htmlize <configurationfile> generate web pages from conf
|
||
statoolinfos probe OPTION [<directory>|<configurationfile>] generate metrics files from conf
|
||
OPTION = [-full|-today|-previousday|-NN] with NN a day count
|
||
statoolinfos uptime <configurationfile> update uptime journal
|
||
|
||
statoolinfos format <fileordirectory> format property files in tiny way
|
||
statoolinfos list ip [-bot|-nobot] <fileordirectory> generate ip list from log file
|
||
statoolinfos list ua [-bot|-nobot] <fileordirectory> generate user agent list from log file
|
||
statoolinfos list visitors [-bot|-nobot] <fileordirectory> generate visitors (ip+ua) list from log file
|
||
statoolinfos stat ip [-bot|-nobot] <fileordirectory> generate stats about ip from log file
|
||
statoolinfos stat ua [-bot|-nobot] <fileordirectory> generate stats about user agent from log file
|
||
statoolinfos stat visitors [-bot|-nobot] <fileordirectory> generate stats about visitors (ip+ua) from log file
|
||
statoolinfos tagdate <fileordirectory> update the file.datetime file
|
||
```
|
||
## Dernières étapes
|
||
|
||
Maintenant on peut ajouter les liens dans les fichiers `service-application.properties`, par exemple pour `service-etherpad.properties` tout en bas
|
||
|
||
```
|
||
# [Subs]
|
||
# Un lien vers un fichier properties complémentaire (type URL, optionnel). Exemple : https://
|
||
subs.foo = https://www.linux07.fr/.well-known/chatonsinfos/service-etherpad-metrics.properties
|
||
```
|
||
Mettre en place un crontab, ici 1 fois par jour en précsiant l’heure, par exemple 00h01
|
||
|
||
`1 0 * * * /srv/statoolinfos/bin/statoolinfos probe -previousday /srv/statoolinfos/conf/ >> /srv/statoolinfos/cron.log`
|
||
|
||
## Mise à jour
|
||
|
||
Pour les mises à jour de statoolinfos, il suffit juste de récuper la dernière release du `statoolinfos.jar` et de le remplacer, lien : [https://forge.devinsy.fr/devinsy/statoolinfos/releases](https://forge.devinsy.fr/devinsy/statoolinfos/releases)
|
||
|
||
## Corrections bugs php pour l'application Libreto
|
||
|
||
Sinon, on a constaté beaucoup de lignes d'erreurs dans les logs de libreto avec `LINE IS NOT MATCHING`. On a changé la ligne 466 dans le fichier **/etc/php/7.4/fpm/php.ini** en rajoutant `& ~E_NOTICE` au bout da ligne 466.
|
||
|
||
`error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE `
|
||
|
||
explication au-dessus de la ligne:
|
||
|
||
```
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
; Error handling and logging ;
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
||
; This directive informs PHP of which errors, warnings and notices you would like
|
||
; it to take action for. The recommended way of setting values for this
|
||
; directive is through the use of the error level constants and bitwise
|
||
; operators. The error level constants are below here for convenience as well as
|
||
; some common settings and their meanings.
|
||
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
|
||
; those related to E_NOTICE and E_STRICT, which together cover best practices and
|
||
; recommended coding standards in PHP. For performance reasons, this is the
|
||
; recommend error reporting setting. Your production server shouldn't be wasting
|
||
; resources complaining about best practices and coding standards. That's what
|
||
; development servers and development settings are for.
|
||
; Note: The php.ini-development file has this setting as E_ALL. This
|
||
; means it pretty much reports everything which is exactly what you want during
|
||
; development and early testing.
|
||
;
|
||
; Error Level Constants:
|
||
; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
|
||
; E_ERROR - fatal run-time errors
|
||
; E_RECOVERABLE_ERROR - almost fatal run-time errors
|
||
; E_WARNING - run-time warnings (non-fatal errors)
|
||
; E_PARSE - compile-time parse errors
|
||
; E_NOTICE - run-time notices (these are warnings which often result
|
||
; from a bug in your code, but it's possible that it was
|
||
; intentional (e.g., using an uninitialized variable and
|
||
; relying on the fact it is automatically initialized to an
|
||
; empty string)
|
||
; E_STRICT - run-time notices, enable to have PHP suggest changes
|
||
; to your code which will ensure the best interoperability
|
||
; and forward compatibility of your code
|
||
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
|
||
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
|
||
; initial startup
|
||
; E_COMPILE_ERROR - fatal compile-time errors
|
||
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
|
||
; E_USER_ERROR - user-generated error message
|
||
; E_USER_WARNING - user-generated warning message
|
||
; E_USER_NOTICE - user-generated notice message
|
||
; E_DEPRECATED - warn about code that will not work in future versions
|
||
; of PHP
|
||
; E_USER_DEPRECATED - user-generated deprecation warnings
|
||
;
|
||
; Common Values:
|
||
; E_ALL (Show all errors, warnings and notices including coding standards.)
|
||
; E_ALL & ~E_NOTICE (Show all errors, except for notices)
|
||
; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
|
||
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
|
||
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
|
||
; Development Value: E_ALL
|
||
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
|
||
; http://php.net/error-reporting
|
||
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
|
||
```
|
||
J'essaie aussi de voir après avoir lu les logs d'ignorer un erreur recurrente de php
|
||
|
||
```
|
||
LINE IS NOT MATCHING [ in /var/www/libreto/libreto/pad.php on line 148" while reading response header from upstream, client: 89.234.140.172, server: libreto.linux07.fr, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm-libreto.sock:", host: "libreto.linux07.fr"]
|
||
```
|
||
|
||
La ligne 148 en question de **/var/www/libreto/libreto/pad.php**
|
||
|
||
`$txt = file_get_contents($this->url('txt'));`
|
||
|
||
est dans cette portion de fonction
|
||
|
||
```
|
||
public function txt() {
|
||
146 if (!$this->url('txt')) { return; }
|
||
147
|
||
148 $txt = file_get_contents($this->url('txt'));
|
||
149 return $txt;
|
||
150 }
|
||
```
|
||
|
||
En cherchant, j'essaie d'ignorer l'erreur avec un `@`
|
||
|
||
`$txt = @file_get_contents($this->url('txt'));`
|
||
|
||
sources :
|
||
|
||
[https://www.php.net/manual/fr/language.operators.errorcontrol.php](https://www.php.net/manual/fr/language.operators.errorcontrol.php)
|
||
|
||
et cette discussion:
|
||
|
||
[https://stackoverflow.com/questions/272361/how-can-i-handle-the-warning-of-file-get-contents-function-in-php](https://stackoverflow.com/questions/272361/how-can-i-handle-the-warning-of-file-get-contents-function-in-php) |