13.1 Exemple d’installation

TODO: section ancienne datant de 2021, et les explication ne sont plus à jour par rapport à la version actuelle. Conservé pour l’instant à titre d’illustration seulement !

Nous avons opté pour un serveur ayant les caractéristiques suivantes :

  • CPU Intel Core i7-6900k 3,20GHz à 8 cœurs/16 threads,

  • 64Go de mémoire RAM DDR4 2.666Mhz,

  • 512Go de disque SSD NVMe Samsung Pro 960 + 2 fois 3To de HDD Toshiba P300 7200rpm SATA III,

  • Xubuntu 18.04.5LTS,

  • MongoDB 4.4.11, MongoDB Tools 100.5.1,

  • RStudio Connect 1.8.8.2 + R 4.0.5 (licence 100 utilisateurs),

  • Accessible par ssh seulement en interne (ou au travers d’un VPN).

  • Installation de R 3.6.3 (équivalent à “svbox2020” qui est une installation type de R + RStudio + la série de packages R nécessaires pour les exercices du cours) :

sudo apt install curl
export R_VERSION=3.6.3
curl -O https://cdn.rstudio.com/r/ubuntu-1804/pkgs/r-${R_VERSION}_1_amd64.deb
sudo gdebi r-${R_VERSION}_1_amd64.deb
  • Installation de R 3.5.3 et 3.4.4, respectivement équivalents à “svbox2019” et “svbox2018” pour pouvoir également exécuter les exercices des années précédentes :
curl -O https://cdn.rstudio.com/r/ubuntu-1804/pkgs/r-3.5.3_1_amd64.deb
sudo gdebi r-3.5.3_1_amd64.deb
curl -O https://cdn.rstudio.com/r/ubuntu-1804/pkgs/r-3.4.4_1_amd64.deb
sudo gdebi r-3.4.4_1_amd64.deb

# Test
/opt/R/${R_VERSION}/bin/R --version
  • Configuration de Java pour R :
sudo /opt/R/3.6.3/bin/R CMD javareconf
  • Installation de RStudio Connect 1.8.2.1-12 :
cd ~/Downloads
curl -LO https://rstudio-connect.s3.amazonaws.com/rsc-installer.sh
sudo bash ./rsc-installer.sh 1.8.2.1-12
# Clean up
rm rsc-installer.sh
sudo rm rstudio-connect_*.deb
  • Installation des dépendances :
sudo apt install build-essential libcurl4-gnutls-dev openjdk-7-* libxml2-dev libssl-dev texlive-full libev-dev
# Pour les packages R
sudo apt install libgmp10-dev libgsl0-dev libnetcdf6 libnetcdf-dev netcdf-bin libdigest-hmac-perl libgmp-dev libgmp3-dev
sudo apt install libgl1-mesa-dev libglu1-mesa-dev libglpk-dev tdsodbc freetds-bin freetds-common freetds-dev
sudo apt install odbc-postgresql libtiff-dev libsndfile1 libsndfile1-dev libtiff-dev tk8.5 tk8.5-dev tcl8.5 tcl8.5-dev libgsl0-dev libv8-dev
  • Configuration de RStudio Connect :
sudo nano /etc/rstudio-connect/rstudio-connect.gcfg
# URL temporaire du server... https://rstudio-connect.university.edu
# SenderEmail = user@university.edu
# Port :3939 (valeur par défaut)
  • Introduction de la clé d’activation :
sudo /opt/rstudio-connect/bin/license-manager deactivate
sudo /opt/rstudio-connect/bin/license-manager activate xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx
  • Redémarrage de RStudio Connect :
sudo systemctl restart rstudio-connect
  • Création du premier compte (admin). Naviguer vers http://rstudio-connect.university.edu:3939. S’enregistrer et créer le nouveau compte. Configuration également de l’envoi de mail (serveur SMTP sur port 587 temporairement si nécessaire).

  • Installation de Python :

[Python]
Enabled = true
; Python 2.7.12 installed with Ubuntu 16.04
Executable = /usr/bin/python
; Python 3.5.2 installed with Ubuntu 16.04 (and used by svbox2018)
Executable = /usr/bin/python3
  • Packages Python supplémentaires (pip et pip3 déjà installés) :
sudo pip install setuptools
sudo pip install virtualenv
sudo pip3 install setuptools
sudo pip3 install virtualenv
  • S’il faut une autre version de Python, ici 3.6.7 pour svbox2019, il faut compiler depuis les sources :
# Required dependencies
sudo apt install libffi-dev libgdm-dev libsqlite3-dev libssl-dev zlib1g-dev

# Download and extract source code
cd ~/Downloads
export VERSION=3.6.7 PYTHON_MAJOR=3
wget https://www.python.org/ftp/python/${VERSION}/Python-${VERSION}.tgz
tar -xzvf Python-${VERSION}.tgz
cd Python-${VERSION}

# Build Python from source
./configure \
    --prefix=/opt/Python/${VERSION} \
    --enable-shared \
    --enable-ipv6 \
    LDFLAGS=-Wl,-rpath=/opt/Python/${VERSION}/lib,--disable-new-dtags \
    --enable-optimizations
make

# Install Python
sudo make install

# Clean up
cd ..
sudo rm -rf Python-${VERSION}
rm Python-${VERSION}.tgz

# Check Python install
/opt/Python/${VERSION}/bin/python${PYTHON_MAJOR} --version

# Install pip, setuptools and virtualenv in this Python version
wget https://bootstrap.pypa.io/get-pip.py
sudo /opt/Python/${VERSION}/bin/python${PYTHON_MAJOR} get-pip.py
rm get-pip.py
sudo /opt/Python/${VERSION}/bin/pip install virtualenv
sudo /opt/Python/${VERSION}/bin/pip install setuptools
  • Ajouter cette version de Python dans la configuration de RStudio Connect (ajouter Executable = /opt/Python/3.6.7/bin/python3 dans la section “[Python]”) :
sudo nano /etc/rstudio-connect/rstudio-connect.gcfg
  • Redémarrer RStudio Connect :
sudo systemctl restart rstudio-connect
  • Installation du certificat SSL. Copie des fichiers vers /etc/ssl/private et changement des droits d’accès :
sudo chmod o= /etc/ssl/private/university.cer|crt|csr|key|pfx
  • Dans l’exemple d’installation, le fichier .cer ne fonctionne pas, mais on peut créer un .pem à partir du .crt au format PKCS#7 :
sudo openssl pkcs7 -print_certs -in /etc/ssl/private/sdd_umons_ac_be.crt -out /etc/ssl/private/sdd_umons_ac_be.pem -outform PEM
sudo chmod o-r /etc/ssl/private/sdd_umons_ac_be.pem
  • Modification du fichier de configuration de RStudio Connect. Utilisation du port :443, le .key comme clé privée et le .pem comme certificat, et TSL minimum 1.1 :
sudo nano /etc/rstudio-connect/rstudio-connect.gcfg
  • Redémarrage du serveur
sudo systemctl restart rstudio-connect
  • Vérification du bon démarrage dans le fichier log
sudo cat /var/log/rstudio-connect.log
  • Dans notre exemple, nous choisissons de mettre en place une synchronisation de /data1 avec /data2 régulièrement :
sudo crontab -e

Édition du fichier en y ajoutant :

# Sync /data1/ with /data2/ every hour:45
45 * * * * /usr/bin/rsync -av --delete /data1/ /data2/ &> /data/datasync.log
  • Déplacement des données de RStudio Connect vers /data1 :
sudo systemctl stop rstudio-connect
sudo mkdir /data1/rstudio-connect
sudo rsync -av --delete /var/lib/rstudio-connect/ /data1/rstudio-connect/

Édition à nouveau le fichier de configuration de RStudio Connect (DataDir = /data1/rstudio-connect) :

sudo nano /etc/rstudio-connect/rstudio-connect.gcfg

Redémarrage de RStudio Connect :

sudo systemctl start rstudio-connect
sudo apt install rear extlinux
  • Formatage d’une clé USB :
sudo rear format /dev/sdX # In case of error rear format -- --efi /dev/sdX (in the server, it is /dev/sdc)
  • Changer /etc/rear/local.conf et y ajouter ceci :
OUTPUT=USB
BACKUP=NETFS
BACKUP_URL="usb:///dev/disk/by-label/REAR-000"
  • Exécuter ceci pour voir la configuration actuelle :
sudo rear dump
  • Créer un disque de récupération (unmount REAR-000, puis …)
sudo rear -v mkrescue # Just a rescue disk
sudo rear -v mkbackup # Rescue disk AND backup the system
sudo rear -v mkbackuponly # Only backup the system
  • Pour restaurer le système, on boote depuis la clé USB. Lorsque le login est demandé, entrer root, puis rear recover. Redémarrer une fois la restauration terminée. Voir aussi http://relax-and-recover.org/usage/