====== 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