Skip to content

Configuration du serveur (CI CD)

Steve Mendes Reis edited this page Jul 29, 2021 · 1 revision

Configuration du serveur

Le déploiement automatique ne va s'occuper que de mettre les données de l'application à jour, elle ne s'occupera pas de la configuration totale du serveur qui nécessite plusieurs composants indépendants (npm, nginx, composer, php, mariadb, etc...). Il faut donc s'atteler à créer une configuration minimale du serveur pour accueillir notre notre backend ainsi que ntore frontend.

#Server database mariadb
sudo apt install mariadb-server

# NPM pour VueJs
sudo apt install npm 

# PHP et de ses dépendances
sudo apt install php7.4 libapache2-mod-php7.4 php7.4-curl php-pear php7.4-gd php7.4-dev php7.4-zip php7.4-mbstring php7.4-mysql php7.4-xml curl php7.4-ldap -y

# Composer pour les dépendances php
sudo apt install composer

Configuration de la DB Mariadb

CREATE DATABASE Caravel;

grant all privileges on Caravel.* TO 'Caravel'@'localhost' identified by 'PLACERHOLDER_PASSWORD';

flush privileges;

Configuration de Nginx

Dans un premier temps, il avait été choisit de séparer le backend et le frontend via deux sous domaine différent à savoir caravel.ing.he-arc.ch/ pour la partie frontend et api.caravel.ing.he-arc.ch/ mais après plusieurs test il semble que cela ne soit pas possible en tout cas en l'état, car le sous domaine api n'est pas redirigé sur notre serveur, il faudrait donc ajouter une entrée DNS supplémentaire. Afin de ne pas perdre trop de temps sur la partie configuration, il a été choisi en définitive de faire passer l'api sur une route spécifique c'est-à-dire caravel.ing.he-arc.ch/api. La configuration suivante du Nginx reflète ce dernier choix.

Nginx configuration

# Caravel conf
server {
  index index.php index.html;
  root /var/www/caravel/backend/public;
  server_name caravel.ing.he-arc.ch;
  client_max_body_size 210M;

  location / {
      root /var/www/caravel/frontend/dist;
      try_files $uri /index.html;
  }

  location /api {
      try_files $uri $uri/ /index.php?$query_string;
  }

  location ^~ /uploads/ {
      root /var/www/caravel/backend/public/;
  }

  location ~ \.php$ {
      fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
      include fastcgi_params;
  }

    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/caravel.ing.he-arc.ch/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/caravel.ing.he-arc.ch/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = caravel.ing.he-arc.ch) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  listen 80;
  server_name caravel.ing.he-arc.ch;
    return 404; # managed by Certbot
}

La gestion de l'https est faite de manière automatique grâce à CertBot qui utilise Let's Encrypt.

Configuration du runners GitHub

Afin de lancer les actions sur notre serveur simplement, un runner github va être installé sur le serveur, ainsi des actions pourront directement être lancées depuis les actions github sur notre serveur de déploiement.

Procédure

Téléchargement

# Create a folder
mkdir actions-runner && cd actions-runner
# Download the latest runner package
curl -o actions-runner-linux-x64-2.278.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.278.0/actions-runner-linux-x64-2.278.0.tar.gz
# Extract the installer
tar xzf ./actions-runner-linux-x64-2.278.0.tar.gz

Installation

# Create the runner and start the configuration experience
./config.sh --url https://github.com/HE-Arc/Caravel --token XXXX
# Create a service
sudo ./svc.sh install
# start service
sudo ./svc.sh start

Configuration environnement

Certaines configurations sont dépendantes de l'environnement (base de données, ldap, etc...) de ce cas un fichier de configuration unique ne peut être défini de même que ces différents fichiers ne devraient pas se trouver sur le git public et donc il est nécessaire de faire une configuration propre à chaque environnement dont lui seul connait la configuration particulière.

Méthode par écrasement

La méthode choisie consiste à écraser ou ajouter les fichiers nécessaires lors du déploiement automatique, pour ce faire le path suivant /var/www/config/caravel sera copié en fin de déploiement sur /var/www/caravel il suffit donc de poser le fichier nécessaire que l'on veut overwrite dans le dossier en respectant la nomenclature du dossier distant, par exemple pour le fichier auth.php il faut donc déposer le fichier auth.php dans /var/www/config/caravel/backend/config/ il sera alors automatiquement copié lors du déploiement

Dossier d'upload

Les dossiers d'upload (uploads et storage) doivent être sauvegardés entre chaque déploiement, pour cela les dossiers sont créés à l'extérieur du dossier de déploiement et en fin de déploiement un lien symbolique est généré afin de restaurer les liens précédemment perdus.

Les dossiers d'upload sont présents dans le dossier /var/www/shared/.

LDAP

Pour la connexion LDAP, un certifical ssl est nécessaire, ce certificat est lié à la He-Arc, il n'est donc pas intégré de base sur les machines. Pour l'installation il faut suivre la procédure suivante.

openssl s_client -connect ldap.he-arc.ch:636

Installation du certificat

  1. Télécharger la clé public root CA He-Arc wget http://repolinux.he-arc.ch/CA/rootHEARC.crt -P /usr/local/share/ca-certificates/
  2. Exécuter la configuration de certificat et cocher rootHEARC.crt dans la liste update-ca-certificates
  3. On peut vérifier que tout a fonctionné si il y a un lien symbolique dans /etc/ssl/certs/rootHEARC.pem vers /usr/local/share/ca-certificates/rootHEARC.crt
  4. Ajouter dans /etc/ldap/ldap.conf TLS_CACERT /etc/ssl/certs/ca-certificates.crt

Vérification de la connexion

Avant de tester la connexion LDAP avec notre application, il faut être sur que la connexion LDAP soit correcte, pour cela on peut lancer la commande openssl s_client -connect ldap.he-arc.ch:636. Si tout s'est bien passé, vous trouverez dans le retour de la commande le message "Verification: OK".

On peut ensuite effectuer une recherche dans le LDAP pour voir si tout fonctionne avec la commande `ldapsearch -H ldaps://ldap.he-arc.ch -x -W -D "[email protected]" -b "OU=ING,OU=HE-ARC,DC=intra,DC=eiaj,DC=ch" "(mail=[email protected])". Ici le YOURACCOUNT est le compte de service qui vous a été communiqué par le service IT et le [email protected] est le critère de recherche, remplacez le xxx par votre mail. Vous devriez voir apparaitre les informations liés au compte [email protected] en retour de le commande.

Clone this wiki locally