{"id":9025,"date":"2018-04-12T17:49:00","date_gmt":"2018-04-12T17:49:00","guid":{"rendered":"https:\/\/www.wegneronline.com\/blog\/2018\/04\/12\/debian-upgrade-leicht-gemacht-von-wheezy-ueber-jessie-auf-stretch\/"},"modified":"2024-02-22T08:37:19","modified_gmt":"2024-02-22T07:37:19","slug":"debian-upgrade-leicht-gemacht-von-wheezy-ueber-jessie-auf-stretch","status":"publish","type":"post","link":"https:\/\/www.wegneronline.com\/blog\/2018\/04\/12\/debian-upgrade-leicht-gemacht-von-wheezy-ueber-jessie-auf-stretch\/","title":{"rendered":"Debian Upgrade leicht gemacht: Von Wheezy \u00fcber Jessie auf Stretch"},"content":{"rendered":"\n<p>Ich setze auf 90% meiner Server <a href=\"https:\/\/www.debian.org\/\" target=\"_blank\" rel=\"noopener\">Debian Linux<\/a> als Betriebssystem ein. Leider bin ich manchmal etwas schludrig in Bezug auf gr\u00f6\u00dfe Distributionsupdates, was bei Debian auch gar nicht so furchtbar schlimm ist. Die <a href=\"https:\/\/wiki.debian.org\/LTS\" target=\"_blank\" rel=\"noopener\">LTS-Zeiten des Debian-Teams<\/a> sind dankenswerterweise sehr, sehr gro\u00dfz\u00fcgig.<\/p>\n\n\n\n<p>Entsprechend hatte ich noch einen Stapel Server, auf dem Debian Wheezy (<a href=\"https:\/\/www.debian.org\/releases\/wheezy\/\" target=\"_blank\" rel=\"noopener\">7.11 aus 2013<\/a>) lief. Dessen LTS endet aber nun im Mai 2018 und sp\u00e4testens dann ist es h\u00f6chste Eisenbahn auf eine neuere Version zu wechseln.&nbsp;<\/p>\n\n\n\n<p>Meine Erfahrungen will ich hier dokumentieren und f\u00fcr die Nachwelt festhalten \ud83d\ude42<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Status Quo<\/h3>\n\n\n\n<p>Auf den betroffenen Servern lief folgende Software (also &#8222;insgesamt&#8220; gedacht):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apache 2.2<\/li>\n\n\n\n<li>mySQL 5.5<\/li>\n\n\n\n<li>PHP 5.6<\/li>\n\n\n\n<li>Dovecot<\/li>\n\n\n\n<li>Postfix<\/li>\n\n\n\n<li>Let&#8217;s Encrypt<\/li>\n\n\n\n<li>SpamAssassin<\/li>\n\n\n\n<li>Endanwender-Tools: WordPress, Typo3, WebsiteBaker<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Der Updateprozess<\/h3>\n\n\n\n<p>Ein direktes Update von Wheezy (7.x) auf Stretch (9.x) ist nicht vorgesehen und auch absolut nicht ratsam. Lieber langsam und daf\u00fcr sicher den Umweg \u00fcber Jessie (8.x) gehen. Sp\u00e4testens bei dem Upgrade auf Jessie merkt man, was kaputt gegangen ist und was man nochmal fixen muss.<\/p>\n\n\n\n<p>Dabei ist der Schritt von Wheezy zu Jessie tats\u00e4chlich der gr\u00f6\u00dfere, da sich hier f\u00fcr das o.g. Software-Setup <strong>einiges <\/strong>\u00e4ndert! (Dazu mehr gleich im Abschnitt &#8222;Fallstricke und m\u00f6gliche Probleme&#8220;.)<\/p>\n\n\n\n<p>Das Update an sich ist <a href=\"http:\/\/alexander.holbreich.org\/debian-to-stretch\/\" target=\"_blank\" rel=\"noopener\">hier sehr gut beschrieben<\/a>. Es gibt auch zwei Dokumente von Debian, die m\u00f6gliche Probleme adressieren (f\u00fcr <a href=\"https:\/\/www.debian.org\/releases\/jessie\/i386\/release-notes\/ch-information.en.html\" target=\"_blank\" rel=\"noopener\">Wheezy<\/a> und <a href=\"https:\/\/www.debian.org\/releases\/stretch\/i386\/release-notes\/ch-information.en.html\" target=\"_blank\" rel=\"noopener\">Jessie<\/a>). Eine sehr ausf\u00fchrliche Abhandlung \u00fcber die Risiken <a href=\"http:\/\/ewen.mcneill.gen.nz\/blog\/entry\/2017-06-07-debian-wheezy-to-stretch-in-two-larger-steps\/\" target=\"_blank\" rel=\"noopener\">gibt es auch hier<\/a>.<\/p>\n\n\n\n<p>Im Endeffekt funktioniert das Update in wenigen Schritten immer gleich, egal ob von Wheezy auf Jessie oder Jessie auf Stretch:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/wiki.ubuntuusers.de\/Screen\/\" target=\"_blank\" rel=\"noopener\">Einen screen \u00f6ffnen<\/a>, damit eventuelle Netzwerkprobleme nicht zum Abbruch des Upgrades f\u00fchren, gerade wenn man per SSH unterwegs ist<\/li>\n\n\n\n<li>Sicherstellen, dass alles up to date ist (<em>apt-get update &amp;&amp; apt-get upgrade<\/em>)<\/li>\n\n\n\n<li>Schauen, ob noch Pakete &#8222;on hold&#8220; sind, z.B. mit&nbsp;<em>dpkg &#8211;get-selections | grep &#8218;hold&#8216;<\/em><\/li>\n\n\n\n<li>Die sources.list von apt anpassen, sodass die neuen Pakete geladen werden k\u00f6nnen; am einfachsten geht das z.B. mit einem Befehl wie&nbsp;<em>sed -i &#8217;s\/<u>ALTEVERSION<\/u>\/<u>NEUEVERSION<\/u>\/g&#8216; \/etc\/apt\/sources.list<\/em>, wobei ALTEVERSION beispielsweise f\u00fcr Wheezy und NEUEVERISON f\u00fcr Jessie steht<\/li>\n\n\n\n<li><em>apt-get update<\/em><\/li>\n\n\n\n<li><em>apt-get upgrade<\/em><\/li>\n\n\n\n<li><em>apt-get dist-upgrade<\/em><\/li>\n\n\n\n<li>Neustart z.B. mit <em>reboot<\/em><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Fallstricke und m\u00f6gliche Probleme<\/h3>\n\n\n\n<p><strong>Apache 2.2 auf 2.4: Syntaxprobleme<\/strong><\/p>\n\n\n\n<p>Der Versionswechsel bei Apache bedeutet auch gro\u00dfe \u00c4nderungen in der Syntax. Davor hatte ich am meisten Angst, denn so wird zum Beispiel das <em>AllowOverride <\/em>f\u00fcr alle Hosts auf <em>None <\/em>gesetzt, wenn nicht explizit etwas anderes angegeben wird. Eventuell vorhandene <em>.htaccess<\/em> Dateien werden so m\u00f6glicherweise nicht mehr ber\u00fccksichtigt.<\/p>\n\n\n\n<p>Die Quick and Dirty<sup>TM<\/sup>&nbsp;L\u00f6sung ist folgendes in die apache2.conf (oder httpd.conf) an eine beliebige Stelle einzubauen:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&lt;Directory \/&gt;<br>\n&nbsp; &nbsp; &nbsp; &nbsp; Options FollowSymLinks<br>\n&nbsp; &nbsp; &nbsp; &nbsp; AllowOverride All<br>\n&nbsp; &nbsp; &nbsp; &nbsp; Require all denied<br>\n&lt;\/Directory&gt;<\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&lt;Directory \/var\/www\/&gt;<br>\n&nbsp; &nbsp; &nbsp; &nbsp; Options Indexes FollowSymLinks<br>\n&nbsp; &nbsp; &nbsp; &nbsp; AllowOverride All<br>\n&nbsp; &nbsp; &nbsp; &nbsp; Require all granted<br>\n&lt;\/Directory&gt;<\/p>\n<\/blockquote>\n\n\n\n<p>Das birgt jedoch einige m\u00f6gliche Sicherheitsrisiken, gerade wenn man fremde User auf dem Server hat, da man die <em>.htaccess<\/em> quasi komplett freigibt. Und die feine englische Art ist es auch nicht. Aber f\u00fcr&#8217;s erste als kleiner Hack reicht es.<\/p>\n\n\n\n<p>Au\u00dferdem \u00e4ndert sich die Rechtesyntax, sodass der Verzeichnisschutz mit .htpasswd eventuell unwirksam wird. 99% aller Admins setzen aber mit Sicherheit schon die neue Syntax ein, die bereits vor Jahren eingef\u00fchrt wurde &#8211; so auch bei mir, da gab es keine Probleme.<\/p>\n\n\n\n<p>Die Apache Foundation hat eine gute Zusammenfassung der Syntax\u00e4nderungen <a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/upgrading.html\" target=\"_blank\" rel=\"noopener\">hier bereitgestellt<\/a>, die mir sehr geholfen hat.<\/p>\n\n\n\n<p><strong>Fail2Ban gibt den Geist auf<\/strong><\/p>\n\n\n\n<p>Bei dem Upgrade von Jessie auf Stretch wird Fail2Ban nicht richtig migriert und entsprechend kackt das Ding komplett ab. Am besten mit&nbsp;<em>apt-get remove fail2ban<\/em>&nbsp;entfernen und dann nach dem Upgrade wieder installieren.<\/p>\n\n\n\n<p>Warum genau das Tool so Probleme macht&#8230; keine Ahnung, ich habe auf eine Fehleranalyse verzichtet.<\/p>\n\n\n\n<p><strong>PHP5.x wird PHP7.x<\/strong><\/p>\n\n\n\n<p>Mit dem Upgrade auf Jessie, sp\u00e4testens aber auf Stretch fliegt PHP5.x raus. Das ist auch gut so, <a href=\"http:\/\/php.net\/supported-versions.php\" target=\"_blank\" rel=\"noopener\">denn der LTS f\u00fcr PHP5.6 l\u00e4uft aktuell aus und der f\u00fcr PHP5.4 ist schon lange abgelaufen<\/a>. Au\u00dferdem ist PHP7.x deutlich performanter, tats\u00e4chlich sogar sp\u00fcrbar schneller!<\/p>\n\n\n\n<p>Einige Anwendungen haben Probleme mit PHP7, so zum Beispiel WordPress-Installationen unter Version 4.x,&nbsp;Typo3-Versionen unter 6.x oder das furchtbare CMS WebsiteBaker unter Version 2.10, das leider einer der User einsetzt. Hier hilft nur h\u00e4ndisches Nachschauen und Updaten.&nbsp;<\/p>\n\n\n\n<p>Vorsicht jedoch: Nach dem Upgrade ist PHP7 bei mir nicht aktiv gewesen und PHP5.6 lief einfach unbehelligt weiter. Zwar zeigte in&nbsp;<em>php -v<\/em>&nbsp;in der Konsole schon PHP7 an, allerdings nutzte der Apache weiter PHP5.6. Grund hierf\u00fcr ist, dass im Zuge des Upgrades das Modul f\u00fcr PHP7 nicht automatisch geladen wird. Das muss man h\u00e4ndisch nachholen, und zwar so:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><em>a2dismod php5<\/em><\/li>\n\n\n\n<li><em>a2enmod php7.0<\/em><\/li>\n\n\n\n<li><em>service apache2 restart<\/em><\/li>\n<\/ol>\n\n\n\n<p>Auch sollte man eventuell noch folgende Pakete nachinstallieren, wenn man Typo3 einsetzt:&nbsp;<em>apt-get install php7.0-apcu php7.0-soap. <\/em>Diese werden von den meisten Typo3-Installationen ben\u00f6tigt, APCu ist au\u00dferdem ein gutes Cache-Tool.<\/p>\n\n\n\n<p><strong>Dovecot zickt herum<\/strong><\/p>\n\n\n\n<p>Bislang war es \u00fcblich beim Mailserver Dovecot in die Konfiguration einzubauen, dass der Mailserver das SSLv2-Protokoll verbieten soll. Die entsprechende Direktive&nbsp;<em>!SSLv2<\/em>&nbsp;gibt es allerdings nicht mehr und muss aus der dovecot.conf entfernt werden. Dann startet Dovecot wieder so wie es soll.<\/p>\n\n\n\n<p><strong>EFF Certbot (&#8222;Let&#8217;s Encrypt ACME Client&#8220;) vermisst Python<\/strong><\/p>\n\n\n\n<p>Zumindest bei mir hat es Python zerlegt. Damit der Certbot wieder die korrekten Pakete nachinstallieren kann, das Verzeichnis&nbsp;<em>\/opt\/EFF.org<\/em>&nbsp;vollst\u00e4ndig l\u00f6schen. Keine Sorge, die Zertifikate werden nicht gel\u00f6scht, nur die Cache und Settings vom Certbot, die jeder sich aber neu generiert und dann alles wieder korrekt installiert.<\/p>\n\n\n\n<p>Das ist vermutlich die einfachste L\u00f6sung aller Zeiten \ud83d\ude42<\/p>\n\n\n\n<p><strong>Apache motzt wegen <em>LockFile <\/em>und <em>SSLMutex <\/em>rum<\/strong><\/p>\n\n\n\n<p>Beide Direktiven gibt es im Apache 2.4 nicht mehr und m\u00fcssen ersetzt werden.&nbsp;<\/p>\n\n\n\n<p><em>LockFile <\/em>wird zu&nbsp;<em>Mutex file:${APACHE_LOCK_DIR} default<\/em><\/p>\n\n\n\n<p><em>SSLMutex&nbsp;<\/em>wird einfach nur zu&nbsp;<em>Mutex default<\/em>.<\/p>\n\n\n\n<p>Apache neustarten und es l\u00e4uft wieder \ud83d\ude42<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p>Ansonsten war bei mir alles prima. Die Probleme mit dem Dovecot und Apache haben einiges an Nerven gekostet (immer die wichtigsten Dienste machen Probleme!), aber schlussendlich findet man \u00fcberall Hinweise &#8211; so unterschiedlich die Systeme und die Migration dieser auch sind, so oft hat man doch auch die gleichen Probleme.<\/p>\n\n\n\n<p>Damit liefen die Migrationen deutlich problemloser ab als ich bef\u00fcrchtet hatte. Also ran an den Speck, denn&nbsp;wer nicht jetzt upgraded bereut es sp\u00e4testens nach Mai 2018 \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich setze auf 90% meiner Server Debian Linux als Betriebssystem ein. Leider bin ich manchmal etwas schludrig in Bezug auf gr\u00f6\u00dfe Distributionsupdates, was bei Debian auch gar nicht so furchtbar schlimm ist. Die LTS-Zeiten des Debian-Teams sind dankenswerterweise sehr, sehr gro\u00dfz\u00fcgig. Entsprechend hatte ich noch einen Stapel Server, auf dem Debian Wheezy (7.11 aus 2013) &hellip; <a href=\"https:\/\/www.wegneronline.com\/blog\/2018\/04\/12\/debian-upgrade-leicht-gemacht-von-wheezy-ueber-jessie-auf-stretch\/\" class=\"more-link\"><span class=\"screen-reader-text\">Debian Upgrade leicht gemacht: Von Wheezy \u00fcber Jessie auf Stretch<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-9025","post","type-post","status-publish","format-standard","hentry","category-5-informatik"],"_links":{"self":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/comments?post=9025"}],"version-history":[{"count":2,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9025\/revisions"}],"predecessor-version":[{"id":9122,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/posts\/9025\/revisions\/9122"}],"wp:attachment":[{"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/media?parent=9025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/categories?post=9025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wegneronline.com\/blog\/wp-json\/wp\/v2\/tags?post=9025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}