{"id":159,"date":"2009-04-05T20:24:53","date_gmt":"2009-04-05T20:24:53","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=159"},"modified":"2009-04-05T20:26:38","modified_gmt":"2009-04-05T20:26:38","slug":"ips-umziehen-mit-ispcp-omega","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=159","title":{"rendered":"IPs umziehen mit ispCP Omega"},"content":{"rendered":"<p>Ich muss zugeben, ich bin begeistert, wie offen ispCP Omega f\u00fcr \u00c4nderungen durch den Benutzer im Backend ist, wenn dieser wei\u00df, was er denn tun m\u00f6chte. So geschehen heute, als ich einen kleinen Fehler in meiner Server-Konfiguration behoben habe: Bei der Einrichtung des Servers wurde ispCP auf die falsche der beiden IP-Adressen gebunden. Dies \u00fcber das Webinterface zu korrigieren ist eine einzige Klick-Orgie und braucht einfach zu lange. Schneller geht es da mit einem beherzten Griff in die Datenbank des Systems.<!--more--><\/p>\n<p>Bevor man nun versucht, die IP zu \u00e4ndern, sollte man mit dem groben Vorgehen vertraut sein. Hierbei hilft die <a href=\"http:\/\/isp-control.net\/ispcp\/wiki\/docs\/de\/howto\/change_ip\">Dokumentation von ispCP<\/a>, in der ein recht \u00e4hnliches Szenario im Detail erkl\u00e4rt wird. Ziel  dort ist es, eine bestehende Installation von ispCP auf einen fremden Server umzuziehen. Will man aber eine bestehende Installation auf dem gleichen Server belassen und nur die IPs \u00e4ndern, unter denen diese erreichbar ist, so entfallen eine Reihe von Schritten, w\u00e4hrend man an anderer Stelle noch etwas nacharbeiten muss.<\/p>\n<p>Fangen wir also an, unseren Server von 127.0.0.1 nach 192.168.0.1 umzuziehen (mal als Beispiel). Dazu begeben wir uns als erstes in die Datenbank von ispCP und \u00f6ffnen dort die Tabelle server_ips. In dieser Sollte bereits ein Datensatz \u00e4hnlich zu Datensatz 1 stehen. Hier erg\u00e4nzen wir einen weiteren analog dem Beispiel aus Datensatz 2:<\/p>\n<pre lang=\"text\">\r\nip_id        1\r\nip_number    127.0.0.1\r\nip_domain    localhost\r\nip_alias     localhost\r\n\r\nip_id        2\r\nip_number    192.168.0.1\r\nip_domain    somehost\r\nip_alias     aliasname\r\n<\/pre>\n<p>\u00c4nderungen speichern und weiter! Unser n\u00e4chster Stopp ist die Tabelle domain. In dieser gibt es eine Spalte domain_ip_id. Hier \u00e4ndern wir f\u00fcr jede Domain, die wir auf die neue IP umziehen wollen den dort eingetragenen Wert und setzen gleichzeitig das Feld domain_status auf change. Sollte das \u00c4ndern des Domain-Status vergessen werden, wird die \u00c4nderung nicht \u00fcbernommen, sondern bleibt solange, bis an dieser Domain irgendeinmal eine \u00c4nderung stattfinden soll vorgemerkt.<\/p>\n<p>Zu beachten ist hierbei speziell auch eine Eigenheit, die mir kurzzeitig vorhin meinen Blog lahmgelegt hat: Da Sub-Domains keine eigene IP-Zuweisung besitzen, gilt eine \u00c4nderung der IP IMMER global f\u00fcr alle Subdomains mit. Wird also die IP einer Domain ge\u00e4ndert, m\u00fcssen auch alle Subdomains in der Tabelle subdomain, die zu dieser Domain geh\u00f6ren auf den Status change gesetzt werden. Vergisst man dies, wird dies mit der Nichterreichbarkeit der betroffenen Subdomains (unter der neuen IP) bestraft &#8211; und genau dieses Schicksal ist meinem Blog vorhin wiederfahren \ud83d\ude09<\/p>\n<p>Das Gleiche wiederholen wir nun in der Tabelle domain_aliases: Diesmal sind die beiden ben\u00f6tigten Spalten alias_ip_id und alias_status. Das Vorgehen ist identisch zu dem bei Domains. Auch hier muss unbedingt darauf geachtet werden, dass man alle betroffenen Subdomain-Aliase in der Tabelle subdomain_alias, auch auf ge\u00e4ndert setzt, da diese sonst genauso funktional sind, wie im Fall normaler Subdomains \ud83d\ude09<\/p>\n<p>H\u00e4tten wir eigentlich fast alles erledigt, was die Backend-Konfiguration angeht. Einzig die \u00dcberwachungs-Einstellungen f\u00fcr den Server-Status w\u00e4ren jetzt noch zu erledigen, sollte man die neue IP der Domains \u00fcberwachen lassen (an Stelle der alten). Hierzu \u00f6ffnet man die Tabelle config und sucht die Konfigurationszeile &#8218;PORT_HTTP&#8216; in der etwas \u00e4hnliches wie &#8217;80;tcp;HTTP;1;0;127.0.0.1&#8242; stehen sollte. Hier passt man am Ende einfach die IP an (also &#8217;80;tcp;HTTP;1;0;192.168.0.1&#8242;) und speichert. Je nach Wunsch, wiederholt man dies f\u00fcr &#8218;PORT_HTTPS&#8216;.<\/p>\n<p>Ferner sollte man beachten, dass man die neue IP bei seinen Resellern korrekt eintr\u00e4gt. Hierzu dient die Tabelle reseller_props, und die Spalte reseller_ips, in der die IDs der erlaubten IPs f\u00fcr diesen Reseller durch Semikolon getrennt eingetragen werden. Jeder Eintrag ist dabei mit einem Semikolon abzuschlie\u00dfen.<\/p>\n<p>Nach dem wir nun alle Einstellungen get\u00e4tigt haben, kann es an&#8217;s \u00fcbernehmen gehen. Hierzu verbinden wir uns auf eine Root-Shell auf dem Server und f\u00fchren ein beherztes<\/p>\n<pre lang=\"bash\">\/var\/www\/ispcp\/engine\/ispcp-rqst-mngr<\/pre>\n<p>aus. Dieser Vorgang kann nun, je nach Anzahl der ge\u00e4nderten Domains durchaus eine Weile brauchen (bei mir hat das f\u00fcr 12 Domains + 40 Aliase 3 Minuten gedauert).  Nach dem ispCP fertig ist,, sollte man zudem noch einmal explizit den Apache neustarten:<\/p>\n<pre lang=\"bash\">apache2ctl restart<\/pre>\n<p>Nach dem nun die neuen IPs bereits in der Konfiguration eingetragen sind, und korrekt funktionieren, verr\u00e4t ein Blick mit<\/p>\n<pre lang=\"bash\">apache2ctl -S<\/pre>\n<p>die aktuelle Konfiguration. Diese beinhaltet, wie in der Dokumentation von ispCP beschrieben auch noch die alten vHosts unter den nun obsoleten IPs. Da das \u00c4ndern einer IP im Internet jedoch durchaus 1-2 Tage brauchen kann, sollte man diese f\u00fcr&#8217;s Erste noch in der Konfiguration belassen und sich nun um die Aktualisierung der DNS-Eintr\u00e4ge im Nameserver k\u00fcmmern, sofern dieser extern ist. L\u00e4uft dieser lokal, hilft es, die Zonefiles wie in der Dokumentation beschrieben, von den alten IPs zu reinigen.<\/p>\n<p>Sollte nun, nach dem Abwarten des Cache-Timeouts der Nameserver-Eintr\u00e4ge der Zugriff nur noch \u00fcber die neue IP stattfinden, kann man die alten vHost-Bl\u00f6cke aus der Konfigurationsdatei \/etc\/apache2\/site-enabled\/ispcp entfernen. Nach dem \u00dcbernehmen dieser \u00c4nderung ist man fertig und kann seine Domains auf der neuen IP benutzen.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=159&amp;md5=569790d0733d7570de88e61f35bf378f\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Ich muss zugeben, ich bin begeistert, wie offen ispCP Omega f\u00fcr \u00c4nderungen durch den Benutzer im Backend ist, wenn dieser wei\u00df, was er denn tun m\u00f6chte. So geschehen heute, als ich einen kleinen Fehler in meiner Server-Konfiguration behoben habe: Bei der Einrichtung des Servers wurde ispCP auf die falsche der beiden IP-Adressen gebunden. Dies \u00fcber [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[118,119,81],"class_list":["post-159","post","type-post","status-publish","format-standard","hentry","category-server","tag-domain","tag-ip","tag-ispcp"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=159"}],"version-history":[{"count":2,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/159\/revisions"}],"predecessor-version":[{"id":161,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/159\/revisions\/161"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=159"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}