{"id":519,"date":"2010-02-07T00:02:33","date_gmt":"2010-02-06T23:02:33","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=519"},"modified":"2010-02-07T00:10:25","modified_gmt":"2010-02-06T23:10:25","slug":"ispcp-probleme-mit-fcgid-nach-update","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=519","title":{"rendered":"ispCP: Probleme mit FCGID nach Update"},"content":{"rendered":"<p>Heute wies mich ein Kunde auf meinem Debian-Server auf ein recht merkw\u00fcrdiges Problem hin. Nach dem er eine neue Subdomain angelegt hatte, war diese, trotz dem ispCP die Seite bereits in der Konfiguration eingetragen wurde, nicht erreichbar. Stattdessen verhielt sich der Apache recht merkw\u00fcrdig, in dem er auf eine ganz andere Subdomain redirectete. Zus\u00e4tzlich erhielt ich vom ispCP-Control Daemon einen Fehlerbericht:<\/p>\n<blockquote><p>Hey There,<\/p>\n<p>I&#8217;m the automatic email sent by on your localhost (127.0.0.1) server.<\/p>\n<p>A critical error just was encountered while executing function restart_httpd() in \/var\/www\/ispcp\/engine\/ispcp-serv-mngr<\/p>\n<p>Error encountered was:<\/p>\n<p><code>========================================================================<br \/>\nApache config file is corrupted. Please check before restarting Apache server!!!<br \/>\n========================================================================<\/code><\/p>\n<\/blockquote>\n<p><!--more--><\/p>\n<p>Auf der Konsole \u00e4u\u00dferte sich das Ph\u00e4nomen durch eine Fehlermeldung des Apache wie folgt:<\/p>\n<pre lang=\"text\" escaped=\"true\">Syntax error on line 22 of \/etc\/apache2\/mods-available\/fcgid_ispcp.conf:\r\nSocketPath cannot occur within &lt;VirtualHost&gt; section<\/pre>\n<p>Schaut man sich jedoch die in dieser Meldung beklagte Datei an, so ist kein solcher VirtualHost-Eintrag darin zu entdecken. Vielmehr handelt es sich bei dieser Datei um die globale Konfigurationsdatei von ispCP, mit der Einstellungen f\u00fcr den FastCGI-Daemon fcgid festgelegt werden k\u00f6nnen.<\/p>\n<p>Die L\u00f6sung des Problems liegt hierbei in der ispcp.conf im Ordner \/etc\/apache2\/sites-available. Diese Datei dient ispCP zur Konfiguration jeglicher VirtualHosts des Systems. Eine direkte \u00c4nderung an dieser Datei ist hierbei jedoch nicht zielbringend, da seit ispCP 1.0.3 (derzeit aktuelle Version) das Einpflegen manueller \u00c4nderungen nicht zuverl\u00e4ssig klappt, wenn nicht gleichzeitig auch die Template-Parts angepasst werden. Zum Bereinigen der ispcp.conf werde ich gleich noch Details geben; vorher sollten aber die betroffenen Templates korrigiert werden.<\/p>\n<p>Diese sind im Verzeichnis \/etc\/ispcp\/apache\/parts zu finden. Wichtig sind im konkreten Fall die Dateien als_php2_entry.tpl, dmn_php2_entry.tpl und sub_php2_entry.tpl &#8211; alle enthalten einen Verweis auf die beanstandete Konfigurationsdatei. Zur Korrektur des Fehlers gen\u00fcgt es, in allen drei genannten Dateien nach einer Zeile mit folgendem Inhalt zu suchen:<\/p>\n<pre lang=\"apache\">Include {MODS_DIR}\/fcgid_ispcp.conf<\/pre>\n<p>Und diese durch voranstellen eines #-Zeichens auszukommentieren:<\/p>\n<pre lang=\"apache\">#Include {MODS_DIR}\/fcgid_ispcp.conf<\/pre>\n<p>Anschlie\u00dfend gibt es zwei M\u00f6glichkeiten zur Korrektur der ispcp.conf:<\/p>\n<ol>\n<li>Alle Domains im ispCP \u00fcber die Datenbank als &#8222;change&#8220; markieren und via Request Manager neu schreiben lassen<\/li>\n<li>Kurz mit etwas Bash-Magic die Datei bereinigen<\/li>\n<\/ol>\n<p>Die erste Variante ist zwar theoretisch die sauberere von beiden, da aber nicht jeder direkten Zugriff auf die ispCP-Datenbank hat und zudem das Neuschreiben recht lange brauchen kann (unverh\u00e4ltnism\u00e4\u00dfig f\u00fcr diese \u00c4nderung), werd ich kurz den zweiten Weg erkl\u00e4ren.<\/p>\n<p>Man wechsle in der Verzeichnis mit der ispcp.conf und filtere mit grep die Include-Zeilen heraus, die die fcgid_ispcp.conf einbinden. Vereinfacht geht dies mit:<\/p>\n<pre lang=\"bash\">cd \/etc\/apache2\/sites-available\/\r\ngrep -v fcgid_ispcp.conf ispcp.conf > ispcp.conf.new\r\nmv ispcp.conf.new ispcp.conf<\/pre>\n<p>Danach sollte man die Apache-Konfiguration kurz \u00fcberpr\u00fcfen, was am Einfachsten mit<\/p>\n<pre lang=\"bash\">apache2ctl configtest<\/pre>\n<p>geht. Liefert dies die Ausgabe &#8222;Syntax OK&#8220;, muss lediglich noch der Apache mit<\/p>\n<pre lang=\"bash\">apache2ctl restart<\/pre>\n<p>neu gestartet werden.<\/p>\n<p>Im Anschluss sollte wieder alles wie gewohnt funktionieren.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=519&amp;md5=a66aab503becd37d65564de2df0bbd06\" 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>Heute wies mich ein Kunde auf meinem Debian-Server auf ein recht merkw\u00fcrdiges Problem hin. Nach dem er eine neue Subdomain angelegt hatte, war diese, trotz dem ispCP die Seite bereits in der Konfiguration eingetragen wurde, nicht erreichbar. Stattdessen verhielt sich der Apache recht merkw\u00fcrdig, in dem er auf eine ganz andere Subdomain redirectete. Zus\u00e4tzlich erhielt [&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":[156,14,10,81,346],"class_list":["post-519","post","type-post","status-publish","format-standard","hentry","category-server","tag-apache","tag-bugs","tag-debian","tag-ispcp","tag-server"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/519","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=519"}],"version-history":[{"count":7,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/519\/revisions"}],"predecessor-version":[{"id":526,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/519\/revisions\/526"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}