Commit 535fcdec authored by Guillaume Perréal's avatar Guillaume Perréal
Browse files

Formattage des markdowns.

No related merge requests found
Showing with 52 additions and 39 deletions
+52 -39
OpenBDOH - Base de Données des Observatoires Hydrologiques
======================================================
Ce projet a pour vocation d'ouvrir l'application BDOH aux acteurs extérieurs à INRAE, instituts de recherche ou bureaux d'étude, pouvant en bénéficier dans le cadre de leurs activités liées à l'hydrologie.
\ No newline at end of file
Ce projet a pour vocation d'ouvrir l'application BDOH aux acteurs extérieurs à INRAE, instituts de recherche ou bureaux d'étude, pouvant en bénéficier dans le cadre de leurs activités liées à l'hydrologie.
## Installation
Consulter [le guide d'installation](guide_installation_OpenBDOH.md).
......@@ -4,45 +4,55 @@ Guide d'installation d'OpenBDOH
# Prérequis
## Serveur
Ce guide est rédigé pour une installation sur un serveur ou machine virtuel vérifiant les prérequis suivants:
Ce guide est rédigé pour une installation sur un serveur ou machine virtuel vérifiant les prérequis suivants :
* système d'exploitation : [système d'exploitation Debian](https://www.debian.org/), version Buster.
* réseau déjà configuré avec accès complet à Internet,
* locales et fuseau horaire configurés,
* compte utilisateur non-administrateur mais qui peut utiliser `sudo` pour exécuter des commandes en tant que superutillisateur (`root`).
* une archive de BDOH v4.0.0 ou plus, par exemple : https://gitlab.irstea.fr/pole-is/bdoh/-/archive/v4.0.2/bdoh-v4.0.2.tar.bz2
* le réseau est déjà configuré et le serveur a un accès complet à Internet,
* la locale fr_FR.UTF-8 et le fuseau horaire sont configurés,
* un compte utilisateur non-administrateur a été crée. Il peut utiliser `sudo` pour exécuter des commandes en tant que superutillisateur (`root`).
* une archive de BDOH v4.0.0 est disponible sur le serveur, par exemple : https://gitlab.irstea.fr/pole-is/bdoh/-/archive/v4.0.2/bdoh-v4.0.2.tar.bz2
Il est possible d'installer facilement OpenBDOH sur une distribution Linux dérivée de Debian, comme Ubuntu Linux, par exemple. En revanche, l'installation sur une autre distribution, comme RedHad, CentOS..., nécessiterait des adaptations dans les commandes, les noms de paquets, les chemins de fichiers... qui ne seront pas abordées dans ce guide.
Il est possible d'installer facilement OpenBDOH sur une distribution Linux dérivée de Debian, comme Ubuntu Linux, par exemple. En revanche, l'installation
sur une autre distribution, comme RedHad, CentOS..., nécessiterait des adaptations dans les commandes, les noms de paquets, les chemins de fichiers... qui ne seront pas abordées dans ce guide.
## Communications sécurisées
Pour la mise en place de communications sécurisée (protocole HTTPS au lieu de HTTP), il est nécessaire d'obtenir :
* un nom d'hôte complet inscrit dans le DNS,
* une clef privée ainsi qu'un certificat SSL correspondant au nom ci-dessous.
## Conventions
Pour la suite de ce guide, les informations suivantes seront utilisées dans les exemples. Veillez à adapter à votre cas.
* nom du site web : `openbdoh.example.com`
* compte non-privilégié : `devops`
* chemin d'installation : `/var/www/bdoh`
* mot de passe de la base de données: `MotDePasseOpenBDOH`
* mot de passe de la base de données : `MotDePasseOpenBDOH`
* chemin de l'archive OpenBDOH : `/home/devops/bdoh-v4.0.2.tar.bz2`
Les commandes à exécuter sont indiquées dans des blocs comme ci-dessous. Il est prévu de les exécuter en tant que `devops`.
```
echo "une commande"
```
# Procédure d'installation
## Installation des paquets
## Installation des paquets systèmes
Certaines versions des logiciels n'étant pas disponibles dans la version de base de Debian, des dépôts APT tierce-partie sont utilisés.
Certaines versions des logiciels n'étant pas disponibles dans la version de base de Debian, des dépôts APT tierce-partie sont utilisés :
* le [dépôt APT de PHP par Ondřej Surý](https://deb.sury.org/),
* le [dépôt APT de NodeJS par NodeSource](https://github.com/nodesource/distributions#deb).
* Installer les paquets nécessaires pour utiliser les dépôts tierces.
```shell
sudo apt-get install -yq apt-transport-https ca-certificates wget lsb-release gpg
```
* Ajouter le [dépôt APT de PHP par Ondřej Surý](https://deb.sury.org/) et le [dépôt APT de NodeJS par NodeSource](https://github.com/nodesource/distributions#deb) :
* Configurer APT pour utiliser les dépôts APT supplémentaires :
```shell
sudo wget -O /usr/share/keyrings/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
wget -qO - https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/nodesource.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_12.x $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/nodesource.list
```
* Installer l'ensemble des packages nécessaires:
* Installer l'ensemble des packages nécessaires :
```shell
sudo apt-get update -yq
sudo apt-get install -yq acl apache2 cron libpq-dev nodejs php7.1 php7.1-apcu php7.1-apcu-bc php7.1-common php7.1-common php7.1-gd php7.1-intl php7.1-json php7.1-mbstring php7.1-pgsql php7.1-pgsql php7.1-sodium php7.1-xml php7.1-xml php7.1-zip postgis postgresql postgresql-client postgresql-11-postgis-2.5 postgresql-11-postgis-2.5-scripts git-core unzip
......@@ -52,7 +62,7 @@ sudo apt-get install -yq acl apache2 cron libpq-dev nodejs php7.1 php7.1-apcu ph
```shell
sudo mkdir -p -m 02755 /var/www/bdoh
sudo chown devops:www-data /var/www/bdoh
tar xfj bdoh-v4.0.2.tar.bz2 --directory=/var/www/bdoh --strip-components=1
tar xfj /home/devops/bdoh-v4.0.2.tar.bz2 --directory=/var/www/bdoh --strip-components=1
```
# Paramétrage de PostgreSQL
......@@ -69,14 +79,14 @@ sudo sed -i \
```shell
sudo systemctl restart postgresql
```
* Créer les utilisateurs devops et bdoh:
* Créer les utilisateurs devops et bdoh :
```shell
sudo -u postgres psql <<EOF
CREATE USER devops SUPERUSER;
CREATE USER bdoh WITH PASSWORD 'MotDePasseOpenBDOH';
EOF
```
* Créer la base de données BDOH:
* Créer la base de données BDOH :
```shell
psql template1 devops <<'EOF'
CREATE DATABASE bdoh ENCODING 'UTF8' LC_COLLATE "fr_FR.UTF-8" LC_CTYPE "fr_FR.UTF-8";
......@@ -104,12 +114,12 @@ chmod 0400 ~/.pgpass
# Environnement de l'utilisateur devops
On configure les variables d'environnement SYMFONY_ENV et SYMFONY_DEBUG.
```shell
echo "export SYMFONY_ENV=bdoh SYMFONY_DEBUG=0" >>~/.profile
echo "export SYMFONY_ENV=prod SYMFONY_DEBUG=0" >>~/.profile
. ~/.profile
```
# Rotation des logs
On ajoute un fichier de configuration pour l'outil logrotate:
On ajoute un fichier de configuration pour l'outil logrotate :
```shell
sudo tee /etc/logrotate.d/bdoh <<EOF
/var/www/bdoh/app/logs/*.log {
......@@ -124,16 +134,16 @@ sudo tee /etc/logrotate.d/bdoh <<EOF
EOF
```
# Configuration du protocole SSL:
* afin d'offrir aux utilisateurs une connexion HTTPS, permettant de chiffrer les données échangées avec OpenBDOH il s'avère nécessaire de configurer le protocole SSL. Pour ce faire plusieurs étapes sont nécessaires:
# Configuration du protocole SSL :
* afin d'offrir aux utilisateurs une connexion HTTPS, permettant de chiffrer les données échangées avec OpenBDOH il s'avère nécessaire de configurer le protocole SSL. Pour ce faire plusieurs étapes sont nécessaires :
- obtenir les certificats SSL
- installer les certificats SSL sur le serveur OpenBDOH:
- installer les certificats SSL sur le serveur OpenBDOH :
- /etc/ssl/certs/ pour le certificat public
- /etc/ssl/private/ pour la clef privée
- configurer Apache2 afin d'utiliser les certificats nouvellement installés
# Paramétrage de PHP:
* activer les modules PHP nécessaires:
# Paramétrage de PHP :
* activer les modules PHP nécessaires :
```shell
sudo tee /etc/php/7.1/mods-available/owasp-security.ini <<'EOF'
; priority=99
......@@ -149,28 +159,27 @@ EOF
sudo phpenmod -v 7.1 apcu apcu_bc ctype gd iconv intl json mbstring pdo pdo_pgsql pgsql posix readline sodium tokenizer xml xsl zip owasp-security
```
# Installation de Composer et Yarn:
* Installer Composer:
# Installation de Composer et Yarn :
* Installer Composer :
```shell
wget -O - https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer --version=1.10.22
```
* installer Yarn:
* installer Yarn :
```shell
sudo npm install --global --production yarn
```
# Déploiement de l'application
* Se placer dans le répertoire d'installation et configurer l'environnement
* Se placer dans le répertoire d'installation :
```shell
cd /var/www/bdoh
export SYMFONY_ENV=prod SYMFONY_DEBUG=0
```
* Installer les librairies
```shell
composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader --no-suggest
yarn install --pure-lockfile
```
* Configurer l'application. Pour cela, il faut modifier le fichier `/var/www/bdoh/app/config/parameters.yml` qui a été généré à l'étape précédente pour renseigner les paramètres tels ques:
* Configurer l'application. Pour cela, il faut modifier le fichier `/var/www/bdoh/app/config/parameters.yml` qui a été généré à l'étape précédente pour renseigner les paramètres tels ques :
- `database_*` : les informations de connexion à la base de données,
- `mailer_*` : le informations de connexion au serveur STMP sortant,
- `secret` : un "secret" pour la sécurisation des sessions,
......@@ -178,7 +187,7 @@ yarn install --pure-lockfile
- `router.request_context.host` : le nom d'hôte.
- les paramètres `logo_long_web_link`, `logo_short_web_link` et `mini_logo_sonata` peuvent être modifiés pour afficher des logos ; le chemin est relatif à `/var/www/bdoh/web`.
```shell
# Exemple:
# Exemple :
cat >/var/www/bdoh/app/config/parameters.yml <<'EOF'
parameters:
database_driver: pdo_pgsql
......@@ -198,7 +207,7 @@ parameters:
trusted_proxies: []
dev_toolbar: true
dev_toolbar: false
project_guest_path: /var/www
project_host_path: .
......@@ -222,21 +231,21 @@ app/console cache:clear --no-interaction
composer install-assets --no-interaction
yarn run encore production
```
* Définir les permissions sur les dossiers:
* Définir les permissions sur les dossiers :
```shell
mkdir -p app/{cache,logs,imports,exports} web/{uploads,css/themes}
setfacl -R -m u:www-data:rwX -m u:devops:rwX app/{cache,logs,imports,exports} web/{uploads,css/themes}
setfacl -R -d -m u:www-data:rwX -m u:devops:rwX app/{cache,logs,imports,exports} web/{uploads,css/themes}
```
* Appliquer les migrations de la base de données:
* Appliquer les migrations de la base de données :
```shell
app/console doctrine:migrations:migrate --no-interaction --allow-no-migration --write-sql
# La commande a généré un fichier doctrine_migration_AAAAMMJJHHMMSS.sql, on l'exécute
# La commande a généré un fichier doctrine_migration_AAAAMMJJHHMMSS.sql, on l'exécute :
psql bdoh devops <doctrine_migration_*.sql
```
# Paramétrage d'Apache2:
* Créer la configuration du site:
# Paramétrage d'Apache2 :
* Créer la configuration du site :
```shell
sudo tee /etc/apache2/sites-available/openbdoh.conf <<'EOF'
ServerName openbdoh.example.org
......@@ -266,18 +275,18 @@ Header set X-Frame-Options: "sameorigin"
</LocationMatch>
EOF
```
* Désactiver tous les sites, modules et fichiers de configuration:
* Désactiver tous les sites, modules et fichiers de configuration :
```shell
sudo a2dismod -f '*'
sudo a2disconf -f '*'
sudo a2dissite 000-default
```
* Activer les sites, modules et fichiers de configuration nécessaires:
* Activer les sites, modules et fichiers de configuration nécessaires :
```shell
sudo a2enmod php7.1 alias authz_core deflate dir env expires headers mime negotiation rewrite setenvif unique_id
sudo a2ensite openbdoh
```
* Tester la configuration et redémarrer le service Apache2:
* Tester la configuration et redémarrer le service Apache2 :
```shell
sudo apache2ctl configtest
sudo systemctl restart apache2
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment