Table des matières
Service paste.chapril.org
Introduction
Ce service est basé sur privatebin
site principal : https://privatebin.info
sources : https://github.com/PrivateBin/PrivateBin
Machine virtuelle Chapril pour ce service : lamp.cluster.chapril.org
Les données peuvent être stockées en SQL ou en fichier plat, ici la solution retenue est fichiers plats
Préparation
Création de la VM avec la procédure Création d'une machine virtuelle « bling ».
création d'un utilisateur (non indispensable mais fait pour chapril)
useradd pastechaprilorg usermod -a -G www-data pastechaprilorg
Ajouter le module php7.0-gd
apt-get install php7.0-gd
Installation
Déploiement du code
cd /var/www/ wget https://github.com/PrivateBin/PrivateBin/archive/x.x.x.tar.gz tar xf x.x.x.tar.gz && rm x.x.x.tar.gz mv PrivateBin-x.x.x paste.chapril.org chown www-data:www-data -R /var/www/paste.chapril.org
Fichiers de logs
cd /var/log/apache2/ mkdir paste.chapril.org
Configuration d'apache2
Créer le fichier /etc/apache2/sites-avalailable/paste.chapril.org.conf avec le contenu ci-dessous
<VirtualHost *:80> ServerName paste.chapril.org ServerAdmin webmaster@localhost DocumentRoot /var/www/paste.chapril.org/ php_admin_value open_basedir "/var/www/paste.chapril.org/" <Directory "/var/www/paste.chapril.org/"> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/paste.chapril.org/paste.chapril.org-error.log CustomLog ${APACHE_LOG_DIR}/paste.chapril.org/paste.chapril.org-access.log combined-proxy </VirtualHost>
Activation de la configuration
a2ensite paste.chapril.org.conf systemctl reload apache2
Configuration
cd /var/www/paste.chapril.org/cfg cp conf.sample.php conf.php Dans la section [traffic] du fichier conf.php dir = PATH "/var/www/paste.chapril.org/data" Dans la section [purge] du fichier conf.php dir = PATH "data" Dans la section [model_options] du fichier conf.php dir = PATH "data"
Création d'un répertoire pour les données et affectation des droits
cd /var/www/paste.chapril.org mkdir data chown www-data:www-data data chmod -R u+rwX /var/www/paste.chapril.org/data
Création d'un répertoire pour les versions et affectation des droits
cd /var/www/paste.chapril.org mkdir versions chown www-data:www-data versions chmod -R u+rwX /var/www/paste.chapril.org/versions
Rapport d'activité
Créer le répertoire rapport_activite dans /srv/paste.chapril.org/tools
mkdir /srv/paste.chapril.org/tools mkdir /srv/paste.chapril.org/tools/rapport_activite
Copier dans ce répertoire le script rapport_activite.sh https://forge.april.org/Chapril/paste.chapril.org-tools/src/branch/master/rapport_activite/rapport_activite.sh et le rendre executable. (Si nécessaire se mettre sur la dernière branche)
puis créer la tache cron en ajoutant un fichier pastechaprilorg dans /etc/cron.d avec la ligne suivante
1 0 1 * * root /srv/paste.chapril.org/tools/rapport_activite/rapport_activite.sh -p >> /srv/paste.chapril.org/Exploitation/rapport_paste.log 2>&1
Création d'un dossier de projet
Créer le répertoire /srv/paste.chapril.org/Exploitation Avec dedans un fichier rapport_paste.log
mkdir /srv/paste.chapril.org/Exploitation touch rapport_paste.log
Monitoring
Mettre dans le dossier /usr/lib/nagios/plugins un fichier check_pastechaprilorg_update et une copie dans /srv/paste.chapril.org/tools/monitoring
function usage() { echo "Usage : $0" } # if [ "$#" -ne 0 ]; then usage else lastVersion=$(curl -s https://privatebin.info/|grep Current|cut -d' ' -f3|cut -d'<' -f1) currentVersion=$(cd /var/www/paste.chapril.org && git branch | grep '*'|cut -c 11-100 ) #echo $lastVersion #echo $currentVersion if [ $currentVersion = $lastVersion ]; then echo "OK" result=0 else echo "WARNING : new version available, current is $currentVersion, last is $lastVersion." result=1 fi fi exit $result
Installation d'une mise à jour
Mise à jour de paste
La mise à jour se passe en 2 temps :
- générer un tarball de la nouvelle version, sur le poste de travail de l'animsys
- déployer ce tarball sur le serveur
Générer le "livrable"
La première fois
mkdir -p ~/code/chapril/paste-chapril cd ~/code/chapril/paste-chapril/ git clone https://forge.april.org/Chapril/paste.chapril.org-privatebin.git . # ne pas oublier le "." ici git remote add upstream https://github.com/PrivateBin/PrivateBin.git git fetch --all
Les fois suivantes
cd ~/code/chapril/paste-chapril git fetch --all
Trouver le tag de la version qui nous intéresse. C'est probablement le dernier qui nous intéresse, donc on peut l'obtenir avec cette commande :
git tag --sort=v:refname | tail -n 1
Stockons le numéro de version qui nous intéresse dans une variable, ici la version 1.7.x pour l'exemple :
export VERSION=1.7.x
cd ~/code/chapril/paste-chapril git checkout main-chapril git rebase ${VERSION?}
Soit, se mettre sur la branche paste-chapril (git checkout), puis mettre les deux sources ensemble gitub.com et forge.april.org en conservant les personnalisations de forge.april.org (git rebase). C'est alors qu'il faut résoudre les éventuels conflits.
Une fois les conflits résolus, on créé un tag, puis une archive tar.gz à partir de ce tag :
git tag ${VERSION?}-chapril git push --tags origin # Pousser le tag côté forge April
Des identifiants utilisateur de la forge april sont demandés.
Normalement, le fait de pousser le tag suffit pour générer une archive téléchargeable sur la page des tags de la forge.
Mais si l'archive n'est pas téléchargeable, alors on peut le créer soi-même comme ceci :
git archive --prefix=paste-${VERSION?}-chapril/ -o /tmp/paste-${VERSION?}-chapril.tar.gz ${VERSION?}-chapril
Déployer
Se connecter sur la vm lamp.
Le tag créé dans la précédente section donne lieu à la création d'un tarball téléchargeable sur la page des tags de la forge.
Stockons une fois de plus le numéro de version qui nous intéresse dans une variable, ici la version 1.5.1 pour l'exemple :
export VERSION=1.7.x
On extrait alors dans un dossier dédié, dans lequel on doit recopier le fichier conf.php spécifique de Chapril (on ne le copie pas, on créé plutôt un lien symbolique parce qu'on aime créer du lien :) )
cd /var/www/paste.chapril.org/ wget -O versions/paste-${VERSION?}-chapril.tar.gz \ https://forge.april.org/Chapril/paste.chapril.org-privatebin/archive/${VERSION?}-chapril.tar.gz sudo -u www-data tar \ --one-top-level=versions/chapril-paste-${VERSION?} \ --strip-components=1 \ -xavf versions/paste-${VERSION?}-chapril.tar.gz cd versions/chapril-paste-${VERSION?}/cfg/ ln -s /etc/chapril/chapril-paste.conf conf.php
cd /tmp scp ${VERSION?}-chapril.tar.gz root@lamp.cluster.chapril.org:/var/www/paste.chapril.org/
On peut maintenant faire la bascule, tout simplement en remplaçant le lien symbolique public_html pour qu'il pointe vers le nouveau dossier :
cd /var/www/paste.chapril.org/ rm -f public_html ; ln -s versions/chapril-paste-${VERSION?} public_html
On vérifie que l'appli fonctionne toujours correctement en visitant https://paste.chapril.org/.
Si besoin, on peut rapidement faire un retour arrière à la version précédente (version 1.7.x ici) avec la commande suivante :
rm -f public_html ; ln -s versions/chapril-paste-1.7.x public_html