{"id":126,"date":"2009-03-09T19:54:45","date_gmt":"2009-03-09T19:54:45","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=126"},"modified":"2009-03-09T19:54:45","modified_gmt":"2009-03-09T19:54:45","slug":"domain-und-subdomain-aliase-mit-ispcp-omega","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=126","title":{"rendered":"Domain- und Subdomain-Aliase mit ispCP Omega"},"content":{"rendered":"<p>Das <a href=\"http:\/\/www.isp-control.net\/news\/news\/ispcp-team-preparing-for-launch.html\">k\u00fcrzlich in der Version 1.0.0<\/a> erschienene Server-Management-Tool <a href=\"http:\/\/www.isp-control.net\/\">ispCP Omega<\/a>, dass auch Verwendung bei mir auf dem Server findet, ist soweit von der Oberfl\u00e4che relativ gut durchdacht, jedoch fehlen derzeit f\u00fcr einige Funktionen noch M\u00f6glichkeiten zur Steuerung \u00fcber das Webfrontend.<\/p>\n<p>Was zwar bereits m\u00f6glich ist, und soweit auch funktioniert, ist das Anlegen sogenannter Domain-Aliase, d.h. einer zweiten Domain, die auf dem Verzeichnis-Abbild einer existierenden Domain eingeblendet wird.  Jedoch gibt es hier in der aktuellen Release-Version noch ein paar Einschr\u00e4nkungen, wenn man diesen Alias \u00fcber das Webfrontend anlegt. \u00c4hnliches gilt auch, wenn man eine Subdomain spiegeln m\u00f6chte. Im folgenden m\u00f6chte ich daher eine kleine Erg\u00e4nzung zum <a href=\"http:\/\/isp-control.net\/documentation\/de\/frequently_asked_questions\/how_can_i_let_2_domains_point_to_the_same_document_root\">FAQ-Beitrag von ispCP<\/a> geben, um dessen Umsetzung zu vereinfachen.<!--more--><\/p>\n<p>F\u00fcr den Fall, dass man wie ich eine Seite transparent \u00fcber 2 Domains einblenden m\u00f6chte, wie im verlinkten FAQ-Beitrag gezeigt, ist es oftmals etwas umst\u00e4ndlich, eine Dummy-Domain f\u00fcr diesen Fall erst anzulegen. Da ispCP in dieser Hinsicht in seiner Datenbank-Struktur relativ gut ausgekl\u00fcgelt ist, ist dies aber kein wirkliches Problem.<\/p>\n<p>F\u00fcr die Domain-Verwaltung sind im Wesentlichen 4 Tabellen interessant: domain, domain_aliases, subdomain und subdomain_alias. In den Tabellen domain und subdomain stehen alle real im System verwalteten Domains respektive Subdomains drin; in den beiden anderen Tabellen folgen Eintr\u00e4ge, die virtuell eingeblendet, bzw. \u00fcberblendet werden sollen.<\/p>\n<p>Nehmen wir aber mal ein kleines Beispiel, um die Eintr\u00e4ge dieser Tabellen etwas genauer zu erkl\u00e4ren. Wenn man die Seite example.org hat, so findet sich in der Domain-Tabelle etwa folgender Eintrag:<\/p>\n<pre lang=\"txt\">\r\ndomain_id               1\r\ndomain_name             'example.org'\r\ndomain_gid              2001\r\ndomain_uid              2001\r\ndomain_admin_id         1\r\ndomain_created_id       1\r\ndomain_created          1234567890\r\ndomain_last_modified    0\r\ndomain_mailacc_limit    0\r\ndomain_ftpacc_limit     0\r\ndomain_traffic_limit    0\r\ndomain_sqld_limit       0\r\ndomain_sqlu_limit       0\r\ndomain_status           'ok'\r\ndomain_alias_limit      0\r\ndomain_subd_limit       0\r\ndomain_ip_id            1\r\ndomain_disk_limit       0\r\ndomain_disk_usage       42\r\ndomain_php              'yes'\r\ndomain_cgi              'no'\r\n<\/pre>\n<p>Wichtig in diesem Zusammenhang sind die Spalten domain_id, die die intern von ispCP zur Referenzierung dieser Domain verwandte Kennung angibt, sowie die Spalte domain_status. Hier sind unter anderem die Werte &#8218;ok&#8216;, &#8218;toadd&#8216; und &#8218;change&#8216; m\u00f6glich. &#8218;ok&#8216; gibt hierbei an, dass die Domain gerade einsatzbereit ist und keine ausstehenden \u00c4nderungen vorliegen. Ist der Status &#8218;toadd&#8216; so soll diese Domain eingerichtet werden. Mit dem Wert &#8218;change&#8216; in der Statusspalte weist man ispCP an, eine Ver\u00e4nderung an der Domain vorzunehmen.<\/p>\n<p>M\u00f6chte man nun eine zweite Domain example.com auch zu diesem User hinzuf\u00fcgen, so muss man einen Blick in die Tabelle domain_aliases werfen. Um dem Benutzer von example.org auch example.com zur Verf\u00fcgung zu stellen UND die Domain in das Wurzelverzeichnis zu h\u00e4ngen, f\u00fcgt man folgenden Eintrag in seiner Tabelle domain_aliases hinzu:<\/p>\n<pre lang=\"txt\">\r\nalias_id                1\r\ndomain_id               1\r\nalias_name              'example.com'\r\nalias_status            'toadd'\r\nalias_mount             '\/'\r\nalias_ip_id             1\r\nurl_forward             'no'\r\n<\/pre>\n<p>Wichtig ist in diesem Zusammenhang, dass zum Hinzuf\u00fcgen der Domain als neuer Alias im Statusfeld &#8218;toadd&#8216; stehen muss; hat man einen bestehenden Domain-Alias-Eintrag ge\u00e4ndert, muss der Status auf &#8218;change&#8216; gesetzt werden.<\/p>\n<p>\u00dcbernommen werden die \u00c4nderungen an einem Domain-Alias (sofern \u00fcber die Kommandozeile ausgef\u00fchrt) mit<\/p>\n<pre lang=\"bash\">\/var\/www\/ispcp\/engine\/ispcp-rqst-mngr<\/pre>\n<p>Die domain_id bezieht sich hierbei immer auf die Tabelle domain, nicht auf domain_aliases. Das Feld alias_ip_id gibt an, auf welcher der Server-IPs die Domain erreichbar sein soll. Diese kann man i.d.R. wie im Domain-Eintrag belassen.<\/p>\n<p>Soviel zum dokumentierten Verhalten im FAQ-Beitrag. M\u00f6chte man nun zus\u00e4tzlich auf example.org eine Subdomain foo.example.org einrichten, sieht der zugeh\u00f6rige Eintrag in der Tabelle subdomain wie folgt aus:<\/p>\n<pre lang=\"txt\">\r\nsubdomain_id            1\r\ndomain_id               1\r\nsubdomain_name          'foo'\r\nsubdomain_mount         '\/foo'\r\nsubdomain_status        'toadd'\r\n<\/pre>\n<p>Nun aber zu einem Punkt, der vielleicht etwas verwundert, aber IMHO recht logisch erscheint: Wenn man auf example.org die Subdomain foo.example.org mit obigem Tabelleneintrag anlegt, so wird keine Spiegelung dieser Domain auf example.com eingetragen. Die Subdomain foo.example.com muss somit noch manuell erg\u00e4nzt werden. Hierf\u00fcr lautet der Eintrag in der Tabelle subdomain_alias wie folgt:<\/p>\n<pre lang=\"txt\">\r\nsubdomain_alias_id      1\r\nalias_id                1\r\nsubdomain_alias_name    'foo'\r\nsubdomain_alias_mount   '\/foo'\r\nsubdomain_alias_status  'toadd'\r\n<\/pre>\n<p>Nach Abschluss der Arbeiten an den Subdomain-Aliasen m\u00fcssen auch hier die \u00c4nderungen in das System \u00fcbernommen werden. Dies geschieht am einfachsten wieder mit<\/p>\n<pre lang=\"bash\">\/var\/www\/ispcp\/engine\/ispcp-rqst-mngr<\/pre>\n<p>Nach Ausf\u00fchrung des Request Managers sollten nun \u00fcberall in den neu eingetragenen Datens\u00e4tzen der Status OK stehen. Ist dies nicht der Fall kann man \u00fcber die Weboberfl\u00e4che von ispCP oftmals eine grobe Diagnose der Situation erfahren, auch wenn &#8222;Undefinierter Fehler&#8220; als Status nicht sehr aussagekr\u00e4ftig ist. Hier hilft es, die in die Datenbank eingetragenen Daten noch einmal genau zu pr\u00fcfen, denn ispCP reagiert zurecht allergisch auf falsch eingetragene Statuswerte (was auch die Ursache f\u00fcr genannte Meldung ist).<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=126&amp;md5=010e98ccb7574e2e3cac7b9dfff9f61b\" 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>Das k\u00fcrzlich in der Version 1.0.0 erschienene Server-Management-Tool ispCP Omega, dass auch Verwendung bei mir auf dem Server findet, ist soweit von der Oberfl\u00e4che relativ gut durchdacht, jedoch fehlen derzeit f\u00fcr einige Funktionen noch M\u00f6glichkeiten zur Steuerung \u00fcber das Webfrontend. Was zwar bereits m\u00f6glich ist, und soweit auch funktioniert, ist das Anlegen sogenannter Domain-Aliase, d.h. [&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":[81,346,88],"class_list":["post-126","post","type-post","status-publish","format-standard","hentry","category-server","tag-ispcp","tag-server","tag-verwaltung"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/126","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=126"}],"version-history":[{"count":1,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/126\/revisions"}],"predecessor-version":[{"id":127,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/126\/revisions\/127"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}