====== 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 [[admin:procedures:creation_machine_virtuelle|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
ServerName paste.chapril.org
ServerAdmin webmaster@localhost
DocumentRoot /var/www/paste.chapril.org/
php_admin_value open_basedir "/var/www/paste.chapril.org/"
AllowOverride All
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
==== 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
====== 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 ======
Une nouvelle procédure est en cours d'expérimentation [[admin/services/paste.chapril.org/upgrade|sur une page dédiée]]. La documentation ci-dessous est vouée à être remplacée prochainement.
Émettre un avis de maintenance planifiée.
Désactiver le site.
a2dissite paste.chapril.org.conf
systemctl restart apache2
====== Mise à jour de paste ======
Ceci est une nouvelle procédure, pas encore totalement éprouvée.
Elle a été rédigée à partir de ce qui a été fait manuellement pour la v1.5.1.
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" ======
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
Stockons le numéro de version qui nous intéresse dans une variable, ici la version 1.5.1 pour l'exemple :
export VERSION=1.5.1
cd ~/code/chapril/paste-chapril
git checkout main-chapril
git rebase ${VERSION?}
Et maintenant, 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)
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
Normalement, le fait de pousser le tag suffit pour générer une archive téléchargeable sur la [[https://forge.april.org/Chapril/paste.chapril.org-privatebin/tags|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 =====
Le tag créé dans la précédente section donne lieu à la création d'un tarball téléchargeable sur la [[https://forge.april.org/Chapril/paste.chapril.org-privatebin/tags|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.5.1
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-paste.conf conf.php
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.4.0 ici) avec la commande suivante :
rm -f public_html ; ln -s versions/chapril-paste-1.4.0 public_html