Infos pour les sysadmins
informations facebook :
- la création de ce mediawiki : https://www.facebook.com/groups/120403474764049/permalink/130151823789214/
- discussion pour les devs : https://www.facebook.com/groups/120403474764049/permalink/133132120157851/
1 prospective
2 la Plateforme de test
voir Plateforme de test
3 la plateforme de "production"
3.1 le mediawiki
- backup de la db de ce mediawiki ( "production" ) :
- database = gv
- backup mysql : nice -n 19 mysqldump -u $USER --password=$PASSWORD gv -c | nice -n 19 gzip -9 > /backup/wiki-gv-$(date '+%Y%m%d').sql.gz
- backup de /var/www =
cd /var/www ; nice -n 19 tar czf /backup2/www-$(date '+%Y%m%d').tgz .
4 gestion des sauvegardes mysql et fichiers
Discussion : https://www.facebook.com/groups/120403474764049/permalink/333769803427414/
4.1 debat au sujet des backups sur dev.gouv.fr
http://dev.ggouv.fr/brainstorm/view/627/Acces-aux-sources-et-%C3%A0-la-configuration-%3F
- Quand la personne aura le backup, elle pourra extraire toutes les données qu'elle veut. Pas les mots de passe par contre qui sont codés dans la base de donnée et donc impossible à extraire.
- La personne pourra voir qui a voté sur quoi par exemple. Bon en soit je ne sais pas si ça craint ou pas...
4.2 sur le serveur de "prod"
4.2.1 Script de backup mysql sur le serveur de prod
sauvegarde de 30j d'une base mysql (wiki de prod) : /root/bin/bd_backup.sh
VOIR https://github.com/remy40/gvadmin/blob/master/bd_backup.sh
note : script éxécuté 1 fois par jour via la crontab, exemple :
root@projetgentilsvirus:/backup# crontab -l | grep mysql 10 4 * * * /bin/sh /root/bin/mysqlbackup.sh /root/bin/wikibackupparamsfile.sh
4.2.2 Script de backup des fichiers du wiki
root@projetgentilsvirus:~/bin# crontab -l |grep files 4 3 * * 1,4 /bin/sh /root/bin/wikifiles_backup.sh
/root/bin/wikifiles_backup.sh :
#!/bin/bash #set -x TIMESTAMP=`date +%Y-%m-%d_%H-%M-%S` BACKUP_PATH=/backup2 test -w ${BACKUP_PATH} || mkdir -p ${BACKUP_PATH} cd /var/www FILELIST=`ls |grep -v test0 |grep -v wordpress0 |grep -v mediawiki-1.18.4b | grep -v elgg-data |grep -v elgg-gv |grep -v elgg-gv-data |grep -v elgg-plugins |grep -v phpbb` nice -n 19 tar czf /backup2/www-${TIMESTAMP}.tgz $FILELIST if [ $? -ne 0 ]; then logger "[data_backup] error" SUBJECT="[DATAB_BACKUP_ERROR]" echo $SUBJECT | mailx -s ${SUBJECT} <monemail@ici> exit 1 fi # BEGIN : keep only ${NB_BACKUPS} cd $BACKUP_PATH CONTINUE=1 # BEGIN : LOOP while test $CONTINUE -eq 1 do NBFILES=`ls | wc -l` echo "NBFILES="$NBFILES if test $NBFILES -gt 9 then echo "removing & continuing" rm `ls -t | tail -1` else CONTINUE=0 echo "exiting" fi done # END : LOOP # END : keep only ${NB_BACKUPS} echo "Data backuped !"
4.2.3 Script de backup mysql Obsolete (voir github ci-dessus)
obsolete : /root/bin/mysqlbackup.sh :
#/bin/sh PARAMSFILE=$1 . $PARAMSFILE # PARAMSFILE MUST DEFINE THE FOLLOWING VARIABLES : # 1. BACKUPDIR : exple : BACKUPDIR=/backup # 2. MYSQLUSER : exple : MYSQLUSER=<user> # 3. MYSQLPASSWD : exple : MYSQLPASSWD=<passwd> # 4. MYSQLDB : exple : MYSQLDB=<db> # BACKUPFILE=$BACKUPDIR/${MYSQLDB}-$(date '+%Y%m%d').sql.gz nice -n 19 mysqldump -u $MYSQLUSER --password=$MYSQLPASSWD $MYSQLDB -c | nice -n 19 gzip -9 > $BACKUPFILE if test `stat -c %s $BACKUPFILE` -lt 999999 then echo "error : backup too small!!!" mv $BACKUPFILE $BACKUPDIR/ERROR exit 1 fi cd $BACKUPDIR CONTINUE=1 while test $CONTINUE -eq 1 do NBFILES=`ls $BACKUPDIR | wc -l` echo "NBFILES="$NBFILES if test $NBFILES -gt 30 then echo "removing & continuing" rm `ls -t $BACKUPDIR | tail -1` else CONTINUE=0 echo "exiting" fi done
4.3 sur un serveur d'accueil des backups
Note : Authentification SSH automatique par clé pour que le ssh/scp marche sans authentification :
4.3.1 recuperer 30j de sauvegarde d'une base mysql (wiki de prod) sur un serveur d'accueil de backups :
# cat /root/bin/transferwikibackup.sh #/bin/sh BACKUPDIR=/backup BACKUPFILE=`ssh root@projetgentilsvirus.ouvaton.org "ls -rt $BACKUPDIR | tail -1"` echo "BACKUPFILE="$BACKUPFILE cd $BACKUPDIR scp root@projetgentilsvirus.ouvaton.org:${BACKUPDIR}/$BACKUPFILE . if test `stat -c %s $BACKUPFILE` -lt 999999 then echo "error : backup too small!!!" mv $BACKUPFILE ERROR exit 1 fi CONTINUE=1 while test $CONTINUE -eq 1 do NBFILES=`ls $BACKUPDIR | wc -l` echo "NBFILES="$NBFILES if test $NBFILES -gt 30 then echo "removing & continuing" rm `ls -t $BACKUPDIR | tail -1` else CONTINUE=0 echo "exiting" fi done
note1 : script à executer 1 fois par jour (crontab)
4.3.2 recuperer les fichiers du wiki backupés sur le serveur de prod sur un serveur d'accueil de backups :
root@pierro78:/backup2# crontab -l |grep files 4 7 * * 1,4 /root/bin/transferwikifilesbackup.sh
root@pierro78:/backup2# cat /root/bin/transferwikifilesbackup.sh #/bin/sh #set -x BACKUPDIR=/backup2 BACKUPFILE=`ssh root@projetgentilsvirus.ouvaton.org "ls -rt $BACKUPDIR | tail -1"` echo "BACKUPFILE="$BACKUPFILE cd $BACKUPDIR scp root@projetgentilsvirus.ouvaton.org:${BACKUPDIR}/$BACKUPFILE . if test `stat -c %s $BACKUPFILE` -lt 999999 then echo "error : backup too small!!!" mv $BACKUPFILE ERROR exit 1 fi CONTINUE=1 while test $CONTINUE -eq 1 do NBFILES=`ls $BACKUPDIR | wc -l` echo "NBFILES="$NBFILES if test $NBFILES -gt 9 then echo "removing & continuing" rm `ls -t $BACKUPDIR | tail -1` else CONTINUE=0 echo "exiting" fi done
4.4 restorer un backup
4.4.1 mysql
par exemple restaurer le backup mysql de la prod sur la Plateforme de test :
cd /backup zcat 2014-10-05_04-10-01_gv.sql.gz | mysql -u root -p gv # le mdp de la base "gv" est ds le fichier LocalSettings.php
4.4.2 fichiers
par exemple restaurer les fichiers de prod sur la Plateforme de test :
cd /backup2 gunzip www-2014-10-02_03-04-01.tgz # y avait un pb avec tar xzf qui etait super lent, on dirait qu il faut decomprimmer avant ... cd /var/www cp LocalSettings.php /tmp # on sauve la conf locale tar xf /backup2 www-2014-10-02_03-04-01.tar cp /tmp/LocalSettings.php . # y a eu un pb ensuite le wiki ne repondait pas !! :( # mais au bout d une heure environ il a repondu !! :P # peut etre que j aurais du redemarrer apache / rebooter le serveur ...
5 gestion des sources
( https://www.facebook.com/groups/120403474764049/permalink/154001578070905/ )
depot git pour le réseau social : https://github.com/remy40/gvrs
depot git pour les outils d'admin : https://github.com/remy40/gvadmin
6 roles/outils et droits administrateurs/sysadmins
Discussion : https://www.facebook.com/groups/120403474764049/doc/224198024384593/
Utilisateur | Roles/Outils | Droits Mediawiki Prod |
Droits Mediawiki Test |
Droits serveur prod et test (vps) (et mysql) |
---|---|---|---|---|
Utilisateur:Remy40 | elgg, github ... | oui | oui | |
Utilisateur:Porc | oui | oui | ||
Utilisateur:Pierro78 | mediawiki, abonnement du vps de prod, redmine | oui | oui | oui (test et prod) |
Utilisateur:Champagne | mediawiki, phpbb | oui | utilisateur créé pour acces aux backups/sources | |
Utilisateur:Catherine_vergnaud | mediawiki, abonnement du vps de test | oui | oui (test et prod) | |
Utilisateur:Grumeau | serveur, phpbb | oui (test et prod) | ||
Utilisateur:Fchapeau | phpbb, serveur | oui (test et prod) | ||
Utilisateur:Nicos08 (Nicolas Camille Pierrot) | serveur test | |||
Ataraxia GentilVirus | serveur test via sudo | |||
Utilisateur:Swergas (Quentin Grimaud) | LiquidFeedback, mumble | serveur prod et test via sudo | ||
Léo Xqua | helios | serveur test via sudo | ||
Utilisateur:Hydronium https://www.facebook.com/msouchon | domaine gentilsvirus.org | serveur test et prod via sudo | ||
Utilisateur:PierreYves | domaine democraticseeds.org | oui | oui | serveur prod via sudo |
6.1 creer un utilisateur avec les droits "sudo su"
root@projetgentilsvirus2:/# USER=nicolas ; useradd ${USER} -G sudo ; mkdir /home/${USER} ; chown ${USER} /home/${USER} ; passwd ${USER}
6.1.1 donner le droit "sudo su" à un user déja existant
usermod -a -G sudo quentin
=> cela "met" le user "quentin" dans le group sudo
6.1.2 voir si un user est dans le group "sudo"
root@projetgentilsvirus2:~# groups quentin quentin : quentin sudo
6.1.3 lister les groups de tous les users
root@projetgentilsvirus2:~# groups `cat /etc/passwd | cut -d":" -f1`
7 l'hebergement du serveur par un hebergeur
7.1 Maintenance du serveur par l hebergeur
voir MAINTENANCE
7.2 information sur le vps
le vps est "hosté" sur le noeud "chicago vps49"
des infos sur l'hébergement (chicagovps) sur hebergements
8 Gestion du domaine / des URLs
Discussion : annonce facebook et reseau social
- http://wiki.gentilsvirus.org, http://gentilsvirus.org et http://democraticseeds.org pointent actuellement vers le vps de prod (198.144.184.107)
- http://lyon.gentilsvirus.org, http://rhone-alpes.gentilsvirus.org et http://ateliersconstituants.gentilsvirus.org pointent vers le vps de prod (198.144.184.107)
- http://reseausocial.gentilsvirus.org pointe actuellement vers le vps de prod (198.144.184.107) qui renvoie sur http://projetgentilsvirus.ouvaton.org/elgg-gv/ (elgg-gv)
- http://newsletter.gentilsvirus.org et http://portail.gentilsvirus.org pointent vers 88.191.142.47
- http://plateforme-tests.gentilsvirus.org et http://wiki.plateforme-tests.gentilsvirus.org pointent vers le vps de test (108.174.58.44)
9 outils divers
9.1 phpmyadmin : http://projetgentilsvirus.ouvaton.org/phpmyadmin
http://projetgentilsvirus.ouvaton.org/phpmyadmin
/!\ Outil suspendu (ligne commentée « Alias /phpmyadmin /usr/share/phpmyadmin » dans /etc/apache2/conf.d/phpmyadmin.conf) pour se prémunir du risque de bruteforce.
9.2 interface graphique pour acceder au serveur de test : nomachine nx client
- il faut avoir un compte non-root sur le serveur de test
- telecharger le client ici : http://www.nomachine.com/download.php
- dans le bureau choisir linux, custom et xterm
10 Optimisations mediawiki
http://www.mediawiki.org/wiki/User:Aaron_Schulz/How_to_make_MediaWiki_fast
crontab : voir scripts /root/bin/smwrefreshdata.sh
10.1 Cache
Lire http://www.mediawiki.org/wiki/Manual:File_cache et http://www.mediawiki.org/wiki/Manual:$wgCacheEpoch pour invalider le cache
crontab : voir scripts
- /root/bin/mwRefreshFileCache.sh (pour rebuildFileCache.php)
- /root/bin/smwrefreshdata.sh (pour rebuildFileCache.php --overwrite => inutile à cause du touch LocalSettings.php !)
11 Upgrades mediawiki
11.1 de 1.20.2 en 1.23.5
discussion : https://www.facebook.com/groups/235514003246557/permalink/562336380564316/
DABORD FAIRE BACKUP BASE !
11.1.1 EmbedVideo
d abord mettre a jour embedvideo : https://www.mediawiki.org/wiki/Extension:EmbedVideo
11.1.2 Installer fichiers mw 1.23
11.1.3 pb php update.php
Error: 1054 Unknown column 'page_content_model' in 'field list' (localhost)
Solution https://www.mediawiki.org/wiki/Thread:Project:Support_desk/upgrade_from_1.16.1_to_1.21.1_failing/reply_(5) :
AVANT update.php :
mysql> alter table gvpage add page_content_model TEXT;
puis PREPARER la commande SANS LA LANCER !!!
mysql> alter table gvpage drop page_content_model ;
et qd update.php propose de taper Ctrl C alors
LANCER la commande :
mysql> alter table gvpage drop page_content_model ;
11.1.4 https://www.mediawiki.org/wiki/Semantic_Bundle
installe par commodite (amene plein d extensions) mais on doit maintenant utiliser composer https://semantic-mediawiki.org/wiki/Help:Installation
=> modifs ds LocalSettings.php pour ajouter les extensions du SB qui ne sont pas installes via composer !!!
11.1.5 https://www.mediawiki.org/wiki/Composer
=> composer.phar ds /var/www
=> composer.json ds /var/www
11.1.6 modifs a reporter
PageCreator.php
11.1.7 https://www.mediawiki.org/wiki/Extension:DynamicPageList_%28third-party%29
=> mettre a jour
11.2 de 1.19.1 vers 1.20.2
fait, apparemment pas de pb
12 communication pour les sysadmins
13 journal sur le fonctionnement du serveur, les changements effectués, etc ...
(commencer vos remarques en mettant "4 ~ :" "~~~~ :" pour les signer ...)
Hydronium (discussion) 8 juillet 2014 à 06:47 (CEST) : désactivation de phpmyadmin, transfert du ndd gentilsvirus.org chez OVH, création des sous-domaines plateforme-tests.gentilsvirus.org, wiki.plateforme-tests.gentilsvirus.org et ateliersconstituants.gentilsvirus.org (cette dernière adresse concerne ce projet)
Pierro78 (discussion) 16 juin 2014 à 22:26 (CEST) : suite a une fausse manip j ai reboote le serveur hier ;)
Pierro78 (discussion) 18 mai 2014 à 12:53 (CEST) : Ajout des licences pour l upload des fichiers : MediaWiki:Licenses (infos sur Discussion_MediaWiki:Licenses )
Hydronium (discussion) 8 mars 2014 à 15:17 (CET) : Ajout de Rutube dans l'extension EmbedVideo, dans les modèles Video et ShowFicheVideo ainsi que dans les modèles A_V, AF_V etc. (cf. cette note). Modification de l'attribut Service.
Pierro78 (discussion) 28 juillet 2013 à 14:39 (CEST) : upgrade avec https://semantic-mediawiki-bundle.googlecode.com/files/SemanticBundle-20130226.tgz ( Semantic MediaWiki Version 1.8.0.4 )
- ne pas oublier d upgrader de "$smwgDefaultStore = 'SMWSQLStore2';" en SMWSQLStore3 : https://semantic-mediawiki.org/wiki/Help:Installation#Upgrading_existing_installations
Pierro78 (discussion) 23 juin 2013 à 13:46 (CEST) : Extension SecureHTML ajoutée
- AIDE et infos : Thread:Discussion:CarteDesGVsEtGroupesGV/ajouter du html dans du texte via SecureHTML
Pierro78 (discussion) 10 février 2013 à 13:49 (CET) : Upgrade du mediawki de 1.19.1 en 1.20.2
Pierro78 (discussion) 25 janvier 2013 à 13:04 (CET) : crontab : ajout d un script smwrefreshdata.sh s executant ttes les nuits à 4h40
- ... certaines données semantiques ne semblaient pas à jour, plus d'infos sur : http://semantic-mediawiki.org/wiki/Help:Repairing_SMW%27s_data
Pierro78 (discussion) 13 janvier 2013 à 14:28 (CET) : ajout statcounter dans le LocalSettings.php
Pierro78 (discussion) 12 janvier 2013 à 18:10 (CET) : installation APC cache et $wgUseFileCache = true;
Pierro78 (discussion) 24 novembre 2012 à 00:34 (CET) : Ajout extension
- http://www.mediawiki.org/wiki/Extension:DynamicPageList_%28third-party%29 pour afficher les pages liées à une autre page, exemple : Liberté_politique_et_individuelle
Pierro78 (discussion) 26 novembre 2012 à 18:29 (CET) : ds LocalSettings.php
- $wgDefaultUserOptions['numberheadings'] = 1;
- => les "titres de sections" des pages sont automatiquement numérotées
Pierro78 (discussion) 8 novembre 2012 à 23:52 (CET) : qd on saisissait http://projetgentilsvirus.ouvaton.org/index.php/Autre_probl%C3%A8me_essentiel_:_La_monnaieP apache faisait un core dump ... apres un "ulimit -s 88888 ; /etc/init.d/apache2 restart" cela marche ... (le "ulimit -s" valait 10240 auparavant)
Pierro78 (discussion) 8 octobre 2012 à 16:39 (CEST) : Activation de l'antibot (antispam) QuestyCaptcha de l'extension ConfirmEdit : https://www.mediawiki.org/wiki/Extension:ConfirmEdit#QuestyCaptcha
Pierro78 (discussion) 2 septembre 2012 à 23:37 (CEST) : FS plein. plein de sendmail (user smmsp) qui tournent => je les ai tous tués et le FS s est vidé
- il reste des gros fichiers ds /var/spool/mqueue-client (cf http://linuxfr.org/forums/linuxredhat/posts/pb-de-disque-qui-se-remplit)
- je les consulte : en fait c est mon script de backup ( /root/bin/wikibackup.sh ) qui ne trouvait pas les fichiers à supprimer et donc envoi de (pleins de) mails bidon ... script corrigé ...
Pierro78 (discussion) 8 juillet 2012 à 14:53 (CEST) : Installation drupal de test : http://projetgentilsvirus.ouvaton.org/drupal-7.14/
Pierro78 (discussion) 6 juillet 2012 à 14:52 (CEST) : installation mw 1.18.4 avec l'extension WYSIWYG : http://projetgentilsvirus.ouvaton.org/mediawiki-1.18.4/
Pierro78 (discussion) 2 juillet 2012 à 23:55 (CEST) : installation https://www.mediawiki.org/wiki/Extension:LiquidThreads
Pierro78 (discussion) 2 juillet 2012 à 20:34 (MSK) : désactivation du "wiki-forum" (awc) suite à vote : https://www.facebook.com/groups/gentilsvirus/permalink/453984507959448/
Pierro78 (discussion) 2 juillet 2012 à 18:07 (MSK) : chicagovps m'a répondu en disant que cela devrait etre OK maintenant, et effectivement cela a l'air d'etre le cas ...
Pierro78 (discussion) 2 juillet 2012 à 13:29 (MSK) : Ce matin vers 11h le serveur a été inaccessible ou trés lent pendant qqs minutes (10-15 je pense) - j'ai fait un ticket à chicagovps ...