Outils pour utilisateurs

Outils du site


admin:services:paste.chapril.org

Service paste.chapril.org

Introduction

Cette documentation explique comment installer un service, en l’occurrence le paste, sur une nouvelle machine virtuelle de l'infrastructure du Chapril. Ce service fait parti d'un ensemble de services du Chapril, une partie de sa mise en place est donc similaire aux autres services. Même si l'ensemble de la procédure est traitée, c'est la partie plus spécifique à ce service qui sera la plus détaillée. Par exemple, la création d'une machine virtuelle renvoie sur une autre page et n'est pas détaillée ici. Cette documentation est technique mais se veut accessible avec de bonnes connaissances notamment en ce qui concerne la ligne de commande.

Ce service est basé sur le logiciel Privatebin. Celui-ci est écrit en PHP et JS est sous licence Zlib/libpng. Le logiciel inclue aussi des librairies sous licences GPLv2 (rawinflate), BSD 3-clause (Showdown), MIT (base64.js version 1.7, Bootstrap, Identicon, random_compat, composer, kjua, base-x), Apache (prettify.js) and CC-BY (favicon, icon, logo).

Retrouvez la page de présentation du service sur le site www.chapril.org : www.chapril.org/-services-.html

Site principal : privatebin.info
Source et téléchargement : github.com/PrivateBin/PrivateBin
Machine virtuelle Chapril pour ce service : lamp.cluster.chapril.org
Page principale du service paste Chapril: paste.chapril.org

Aspects techniques

Les données peuvent être stockées en SQL ou en fichier plat, ici la solution retenue est fichier plat.

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 deux temps :

  1. Générer le livrable sous forme de tarball (la nouvelle version) sur le poste de travail de l'animsys, cela en utilisant git et les dépots de l'April et de Github et en suivant la procédure indiquée.
  2. Déployer ce tarball sur le serveur, on envoie le tarball par la commande scp ou on le récupère avec wget, puis on suit également la procédure indiquée.

Remarques :

  • On doit aussi envoyer la nouvelle version à la forge April avec un étiquette contenant le mot “chapril”.
  • Si on est deux et à distance, pour travailler on peut partager un screen, le premier utilisateur se connecte en faisant screen -x le deuxième en faisant screen

Générer le "livrable" en local

Cette étape se déroule de préférence sur le poste de travail de l'animsys, pas sur le serveur.

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

Le tail -n 1 est optionnel, on pourrait aussi mettre tail -n 1 pour voir les cinq derniers.
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

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.

TODO : décrire grossièrement la procédure de résolution des conflits (edit/git add/git rebase –continue)
cd ~/code/chapril/paste-chapril
git checkout main-chapril
git rebase ${VERSION?}

Une fois les conflits résolus, on vérifie si les commits Chaprils sont présents
Pour cela, voir dans les dernières lignes si les trois commits de personnalisation sont présents

git log --oneline -n 10

Maintenant on créé un tag, puis une archive tar.gz à partir de ce tag :
(L'archive pourrait aussi être récupérée sur la forage April après le push du nouveau tag)

git tag ${VERSION?}-chapril
git archive --prefix=paste-${VERSION?}-chapril/ -o /tmp/paste-${VERSION?}-chapril.tar.gz ${VERSION?}-chapril

On envoie la nouvelle version locale et le tag vers la forge April avec la commande push. Des identifiants utilisateur de la forge April sont demandés.

git push origin # Pousser les changements vers la forge April
git push --tags origin # Pousser le tag aussi vers la forge April

Déployer sur la VM Lamp la nouvelle version

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.7. x 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

Remarque : Méthode alternative pour la récupération du tarball. Dans le cas ou la commande wget précédente ne marche pas, on peut envoyer le fichier de la machine locale vers la vm lamp avec la commande suivante :

scp ${VERSION?}-chapril.tar.gz root@lamp.cluster.chapril.org:/var/www/paste.chapril.org/versions/

On peut maintenant faire la bascule, tout simplement en remplaçant le lien symbolique public_html pour qu'il pointe vers le nouveau dossier. Cela se fait avec la commande de suppression du lien symbolique actuel, puis création du lien symbolique vers la nouvelle version :

cd /var/www/paste.chapril.org/
rm -f public_html ; ln -s versions/chapril-paste-${VERSION?} public_html

On vérifie que l'application fonctionne toujours correctement en visitant paste.chapril.org.

Si besoin, on peut rapidement faire un retour arrière à la version précédente (version 1.7.x ici), suppression du lien symbolique et création du lien symbolique vers la version précédente avec la commande suivante (remplacer x par le numéro de la version à restaurer) :

rm -f public_html ; ln -s versions/chapril-paste-1.7.x public_html
admin/services/paste.chapril.org.txt · Dernière modification : 2024/10/20 08:16 de claver