413 lines
13 KiB
Markdown
413 lines
13 KiB
Markdown
---
|
||
categories: web
|
||
title: Howto Migration Wheezy vers Jessie
|
||
...
|
||
|
||
Voici les principaux changements de version :
|
||
|
||
* 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
|
||
|
||
Release Notes amd64 : <http://www.debian.org/releases/jessie/amd64/release-notes/>
|
||
|
||
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 le cache APT avec la commande :
|
||
|
||
~~~
|
||
# dpkg-divert --remove --rename --divert /usr/bin/apt-get.bak /usr/bin/apt-get
|
||
# 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-*"
|
||
~~~
|
||
|
||
|
||
## systemd
|
||
|
||
Debian 8 utilise systemd par défaut. Pour passer effectivement en systemd (conseillé), il faut :
|
||
|
||
~~~
|
||
# apt install systemd-sysv
|
||
~~~
|
||
|
||
Informations de survie :
|
||
|
||
* lire <http://trac.evolix.net/infogerance/wiki/HowtoSystemd>
|
||
* Repasser en sysV (non conseillé/testé) : <http://without-systemd.org/wiki/index.php/How_to_remove_systemd_from_a_Debian_jessie/sid_installation>
|
||
|
||
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 <http://trac.evolix.net/infogerance/wiki/HowtoSystemd#networking>
|
||
|
||
## Bind
|
||
|
||
Si vous utilisez un chroot et systemd, vous devez (installer pkg _bind9_) -> voir <http://trac.evolix.net/infogerance/wiki/HowtoBind#InstallationetconfigurationdeBind>
|
||
|
||
~~~
|
||
# 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
|
||
~~~
|
||
|
||
~~~
|
||
<Directory /home/>
|
||
Options Indexes FollowSymLinks
|
||
AllowOverride None
|
||
Require all granted
|
||
</Directory>
|
||
~~~
|
||
|
||
* 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 `NameVirtualHost`:
|
||
|
||
~~~
|
||
AH00548: NameVirtualHost has no effect and will be removed in the next release
|
||
~~~
|
||
|
||
* Il faut remplacer la directive `SSLSessionCache` :
|
||
|
||
~~~
|
||
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)
|
||
~~~
|
||
|
||
* La directive `SSLMutex` est osbolète :
|
||
|
||
~~~
|
||
Invalid command 'SSLMutex', perhaps misspelled or defined by a module not included in the server configuration
|
||
~~~
|
||
|
||
* 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 !**
|
||
|
||
* La directive `AuthzLDAPAuthoritative` est obsolète, il faut la remplacer par les directives _Require_ adéquats : <https://httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html>
|
||
|
||
### 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_
|
||
|
||
Si `apt-get update` ne marche plus, et certains sites sont inaccessibles (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).
|
||
|
||
## sympa
|
||
|
||
Si l'on utilise Sympa avec PostgreSQL, [la mise à jour ne gère apparemment pas le schéma SQL](http://bugs.debian.org/782273). Il faudra recréer la table *session_table* :
|
||
|
||
~~~
|
||
$ psql -U sympa -h /var/run/postgresql sympadb
|
||
Password for user sympa:
|
||
|
||
sympadb=> DROP TABLE session_table;
|
||
sympadb=> CREATE TABLE session_table (
|
||
data_session varchar(500),
|
||
date_session int4 NOT NULL,
|
||
email_session varchar(100),
|
||
hit_session int4,
|
||
id_session varchar(30) NOT NULL,
|
||
prev_id_session varchar(30),
|
||
refresh_date_session int4,
|
||
remote_addr_session varchar(60),
|
||
robot_session varchar(80),
|
||
start_date_session int4 NOT NULL,
|
||
CONSTRAINT ind_session PRIMARY KEY (id_session) );
|
||
~~~
|
||
|
||
## ircd-hybrid
|
||
|
||
ircd-hybrid passe d'une version 7 à 8, sa configuration doit être refaite complètement à la main !
|
||
Par ailleurs, ircd-hybrid n'intègre plus le module *m_opme*, il faut envisager un autre serveur IRC comme ircd-ratbox ou charybdis.
|
||
|
||
## OpenLDAP
|
||
|
||
Attention, le format des données OpenLDAP change, et l'upgrade intègre cette migration.
|
||
|
||
Si cela dysfonctionne, vous pouvez faire cela à la main :
|
||
|
||
~~~
|
||
# mv /var/lib/ldap /var/lib/ldap.bak
|
||
# db5.3_recover -eh /var/lib/ldap
|
||
# cp /usr/share/slapd/DB_CONFIG /var/lib/ldap
|
||
# slapadd -l /var/backups/slapd-2.4.31-2+deb7u2/*.ldif
|
||
# chown -R openldap: /var/lib/ldap
|
||
# systemcl start slapd
|
||
~~~
|
||
|
||
Et si besoin de zapper l'upgrade automatique car vous l'avez géré à la main, éditez `/var/lib/dpkg/info/slapd.postinst` et positionnez temporairement un `exit 0` pour la fonction _postinst_upgrade_configuration()_ avant de relancer votre `dist-upgrade` (pensez à remettre comme c'était après).
|
||
|
||
## NSS/PAM
|
||
|
||
En cas d'erreurs du type `pam_ldap: error trying to bind (Invalid credentials)` ou `sshd: Invalid user` pensez à vider le cache _nscd_.
|
||
|
||
## Asterisk
|
||
|
||
Le module "meetme" n'existe plus, il est remplacé par "confbridge"
|
||
|
||
## logrotate
|
||
|
||
Si vous avez une erreur du type : _zsyslog: missing '{' after log files definition_
|
||
c'est qu'il faut préciser une section du type :
|
||
|
||
~~~
|
||
/var/log/mail.log
|
||
{
|
||
daily
|
||
rotate 365
|
||
}
|
||
~~~
|