**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.** # Howto Migration Wheezy -> Jessie Release Notes amd64 : Avant de mettre à jour penser à vérifier les paquets étiquetés et suspendus et modifier si besoin : ~~~ # apt-cache policy # aptitude search "~ahold" ~~~ Éditer les dépôts dans /etc/apt/sources.list et /etc/apt/sources.list.d/*.list pour remplacer wheezy par jessie, puis mettre à jour la cache APT : ~~~ # apt-get update ~~~ Commencer par télécharger l'ensemble des paquets qui devront être installés (afin de limiter le temps effectif d'installation). ~~~ # apt-get dist-upgrade --download-only ~~~ Faire ensuite une mise à niveau "simple", pour appliquer les mises à jour triviales : ~~~ # apt-get upgrade ~~~ Enfin, appliquer les mises à jour non triviales (nécessitant des changements de paquets dépendants, des suppressions, ...) afin d'avoir un oeil plus précis sur ce qui sera fait, avant de valider : ~~~ # apt-get dist-upgrade ~~~ Bien vérifier que le noyau Linux a été mis à jour également : ~~~ # uname -a # version qui tourne actuellement # dpkg -l |grep linux-image # version nouvellement installée ~~~ Si la carte ethernet est un Broadcom, vérifier également que le paquet firmware-bnx2 a été mis à jour. Merger les nouvelles conf au cas par cas : ~~~ # find /etc -name "*.dpkg-*" ~~~ ## VERSIONS Passage de Wheezy à Jessie : MySQL 5.5.31 -> 5.5.43 PHP 5.4.4 -> 5.6.7 Apache 2.2.22 -> 2.4.10 Tomcat 7.0.28 -> 7.0.56 Bind 9.8.4 -> 9.9.5 noyau Linux 3.2 -> 3.16 ## systemd Debian 8 utilise systemd par défaut. Pour passer effectivement en systemd (conseillé), il faut : ~~~ # apt install systemd-sysv ~~~ Informations de survie : * lire * Repasser en sysV (non conseillé/testé) : Attention, le passage a systemd est délicat avec le démarrage réseau ! En effet, si des scripts liés au réseau sont démarrés via /etc/network/if-*up*/ vous aurez un blocage complet du démarrage... Exemple : si le paquet openntpd est désinstallé et non purgé, votre démarrage sera bloqué => *dpkg -P openntpd* Il faut donc vérifier que tous les scripts liés au réseau sont bien d'actualité : ls -l /etc/network/if-*up*/ Plus de détails sur ## Bind Si vous utilisez un chroot et systemd, vous devez (installer pkg _bind9_) -> voir ~~~ # cp -a /lib/systemd/system/bind9.service /etc/systemd/system/ ~~~ Ajuster la section [Service] : ~~~ EnvironmentFile=-/etc/default/bind9 ExecStart=/usr/sbin/named -f $OPTIONS ~~~ Puis : ~~~ # systemctl daemon-reload ~~~ Autre information importante pour vos zones "slave" elles sont désormais binaires par défaut, pour conserver les anciennes il faut donc ajouter l'option (par exemple dans /etc/bind9/named.conf.options) : ~~~ masterfile-format text; ~~~ ## Redis /run n'est plus persistant. Il faut préciser dans l'unit de redis le RuntimeDirectory pour que la création de /var/run/redis soit effectuée au démarrage (et placer la socket et le pid dans /var/run/redis). ~~~ # cp -a /lib/systemd/system/redis-server.service /etc/systemd/system/ ~~~ Editer /etc/systemd/system/redis-server.service et ajuster la section [Service] : ~~~ RuntimeDirectory=redis RuntimeDirectoryMode=700 ~~~ Puis : ~~~ # systemctl daemon-reload ~~~ ## Apache * Il faut autoriser /home/ ou /srv dans /etc/apache2/apache2.conf ! ~~~ [Wed Nov 25 16:40:33.466946 2015] [authz_core:error] [pid 17204] [client XX.XX.XX.XX:48740] AH01630: client denied by server configura tion: /home/XXX/www/YYY/ZZZ ~~~ ~~~ Options Indexes FollowSymLinks AllowOverride None Require all granted ~~~ * Il faut s'assurer que les fichiers dans /etc/apache2/sites-* se terminent en .conf en les renommant. (Ou modifier la directive dans apache2.conf. **Non conseillé car cela casse a2{en,dis}site.**) ~~~ # cd /etc/apache2/sites-available/ # for file in *; do if ! [[ "$file" =~ ".conf" ]]; then mv "$file" "${file}.conf"; fi; done # cd /etc/apache2/sites-enabled/ # for file in *; do if ! [[ "$file" =~ ".conf" ]]; then mv "$file" "${file}.conf"; fi; done # for file in *; do rm "$file"; ln -s "../sites-available/$file" "$file"; done ~~~ * Il faut supprimer la directive : ~~~ AH00526: Syntax error on line 89 of /etc/apache2/apache2.conf: Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration ~~~ * Il faut supprimer les directives : ~~~ AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:8 ~~~ * Il faut remplacer ... ~~~ AH00526: Syntax error on line 5 of /etc/apache2/conf/ssl-evolix.conf: SSLSessionCache: 'shm' session cache not supported (known names: default,shmcb). Maybe you need to load the appropriate socache module (mod_socache_shm?). ~~~ par ~~~ SSLSessionCache shmcb:/var/log/apache2/ssl_gcache_data(512000) ~~~ * Les directives Options doivent avoir + ou -. ~~~ AH00526: Syntax error on line 27 of /etc/apache2/sites-enabled/app: Either all Options must start with + or -, or no Option may. # sed -i 's/Options ExecCGI -MultiViews/Options +ExecCGI -MultiViews/g' /etc/apache2/sites-available/* ~~~ * RewriteLog et RewriteLogLevel n'existent plus, à supprimer ~~~ AH00526: Syntax error on line 61 of /etc/apache2/sites-enabled/app: Invalid command 'RewriteLog', perhaps misspelled or defined by a module not included in the server configuration # cd /etc/apache2/sites-available/ # sed -i '/RewriteLog/d' * # sed -i '/RewriteLogLevel/d' * ~~~ *Il ne faut plus utiliser les directives MaxClients mais MaxRequestWorkers ! * ### ModSec * deprecated: ~~~ ModSecurity: WARNING Using transformations in SecDefaultAction is deprecated (/etc/apache2/conf.d/mod-security2.conf:19 ~~~ Il faut mettre : ~~~ SecDefaultAction "log,auditlog,deny,status:406,phase:2" ~~~ * id ~~~ ModSecurity: Rules must have at least id action ~~~ Il faut rajouter des id aux rules. ~~~ # File name SecRule REQUEST_FILENAME "modsecuritytest1" "id:1" # Complete URI SecRule REQUEST_URI "modsecuritytest2" "id:2" SecRule REQUEST_FILENAME "(?:n(?:map|et|c)|w(?:guest|sh)|cmd(?:32)?|telnet|rcmd|ftp)\.exe" "id:3" ~~~ ## Squid Attention Squid3 semble non compatible avec le kernel 3.2 de Wheezy, il faut bien rebooter sur le nouveau kernel pour que Squid soit fonctionnel. Pour installer le nouveau kernel, parfois nécessaire de préciser l'installation du kernel, en indiquant le package concerné : _linux-image-xx_ * APT UPDATE ne marche plus, et certains sites sont innaccessible (timeout): -> vérifier que tcp_outgoing_address est présent dans la conf de _Squid_ -> mettre à jour `init.d/minifirewall` -> restart minifirewall ### Mettre à jour minifirewall Pour que squid fonctionne, il faut que la version de minifirewall soit récente. Auquel cas le message d'erreur suivant peut apparaître dans cache.log et squid ne démarre pas. ~~~ 2016/06/30 00:37:26 kid1| sendto FD 11: (1) Operation not permitted 2016/06/30 00:37:26 kid1| ipcCreate: CHILD: hello write test failed ~~~ Il manque une règle ip6tables. Cela a été corrigé via [ce commit](https://forge.evolix.org/projects/minifirewall/repository/revisions/705c4683a2d7214c3f9664577955f1dd32cfdf54/diff/minifirewall). *Il faut donc mettre à jour le script d'init minifirewall* ! ## Elasticsearch Le fichier /etc/default/elasticsearch doit contenir les informations de configuration (il ne les a pas forcément par défaut !!) : ~~~ LOG_DIR=/var/log/elasticsearch DATA_DIR=/var/lib/elasticsearch WORK_DIR=/tmp/elasticsearch CONF_DIR=/etc/elasticsearch CONF_FILE=/etc/elasticsearch/elasticsearch.yml ES_HOME=/usr/share/elasticsearch ulimit -n 65535 sysctl -q -w vm.max_map_count=262144 ~~~ Sinon, vous aurez notamment des erreurs du type : ~~~ elasticsearch[6821]: Failed to configure logging... elasticsearch[6821]: org.elasticsearch.ElasticsearchException: Failed to load logging configuration ~~~ Il faut apparemment forcer l'activation au démarrage : ~~~ # systemctl enable elasticsearch ~~~ ## Spamassassin SA peut gueuler, voir le package sa-compile qui n'arrive pas à s'installer. Sans doute Razor plugin qui râle, donc vérifier le chargement de celui-ci : ~~~ grep -ri razor /etc/spamassassin/local_evolix.cf ~~~ -> commenter _razor_timeout_ (autre solution?) ## MySQL Penser à ajouter la valeur par défaut à _secure-file-priv_ dans la config de MySQL (premier trouvé par ordre de préférence) : * /etc/mysql/conf.d/evolinux.cnf * /etc/mysql/conf.d/evolix.cnf * /etc/mysql/my.cnf * /etc/mysql/conf.d/000-evolinux-defaults.cnf ~~~ [mysqld] secure-file-priv = "" ~~~ ## Redmine Lors de la migration, le package peut avoir été désinstallé. Regarder dans les logs dpkg: ~~~ grep redmine /var/log/dpkg.log ~~~ Réinstaller le package, et s'assurer du PassengerDefaultUser pour www-data dans le mod apache2: ~~~ $ vi /etc/apache2/mods-available/passenger.conf PassengerDefaultUser www-data ~~~ Si besoin, changer _adapter_ de mysql vers mysql2 (avec package à installer si non présent) : `/etc/redmine/default/database.yml` ## Evoadmin et web-add À cause de Apache 2.4 en Jessie, ils ne sont pas compatibles. Il faut installer la version de la branche Jessie. Idéalement relancer le module evolinux jessie pour evoadmin (supprimer le vhost 'evoadmin' puis relancer evolinux en faisant grandement attention à ne valider que seulement l'installation de evoadmin-web). ## rbenv Attention, une mise-à-jour majeure (tout comme une mise-à-jour majeure d'ailleurs) va casser les compilations (sauf coup de chance).