<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>zer(o_0)ne &#187; cgi</title>
	<atom:link href="http://www.zero0ne.de/tag/cgi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zero0ne.de</link>
	<description>Datenreisender, Cyberpunk, Sysadmin, Console Cowboy ... lebt in der Wired</description>
	<lastBuildDate>Thu, 26 Jan 2012 15:34:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>mod_fcgid für Apache 2.2</title>
		<link>http://www.zero0ne.de/2009/09/fcgid-apache2/</link>
		<comments>http://www.zero0ne.de/2009/09/fcgid-apache2/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 10:01:39 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fastCGI]]></category>
		<category><![CDATA[fcgi]]></category>
		<category><![CDATA[fcgid]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mod_fastcgi]]></category>
		<category><![CDATA[mod_fcgid]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php-cgi]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php5-cgi]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=999</guid>
		<description><![CDATA[Vorbereitungen: Ich gehe hierbei davon aus, das PHP5 und Apache bereits installiert sind und schon funktionieren. Wichtig ist noch das bei PHP5 das CGI wie das CLI Modul mit installiert sind. Sonst klappt das ganze nicht. Sind sie das noch nciht installieren wir diese mit apt-get nach: apt-get install php5-cgi php5-cli fcgid installieren: fcgid lässt [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Vorbereitungen:</strong><br />
Ich gehe hierbei davon aus, das PHP5 und Apache bereits installiert sind und schon funktionieren. Wichtig ist noch das bei PHP5 das CGI wie das CLI Modul mit installiert sind. Sonst klappt das ganze nicht. Sind sie das noch nciht installieren wir diese mit apt-get nach:<span id="more-999"></span></p>
<p><code>apt-get install php5-cgi php5-cli</code></p>
<p><strong>fcgid installieren:</strong><br />
fcgid lässt sich relativ leicht durch das repository installieren. Dazu reicht ein einfaches apt-get aus.</p>
<p><code>apt-get install libapache2-mod-fcgid</code></p>
<p style="text-align: justify;">Nach dem sollte es nun noch konfiguriert werden. Dazu nehmen wir aus der Apache2 Konfiguration erstmal das bisherige PHP5-Modul raus. Dazu entfernen wir einfach die LoadModul Aufforderung in der apache2.conf/httpd.conf oder wie bei Debian/Ubuntu-Systemen, dort löschen wir einfach die php5.conf und php5.load aus dem Verzeichnis &#8220;/etc/apache2/modules-enabled/&#8221;. Da es sich dabei nur um Symlinks handelt bleiben die eigentlichen Dateien also für den Notfall oder ein Rollback erhalten.</p>
<p>Nachdem wir nun das alte php5-Modul entfernt haben binden wir das neue ein. Dies tun wir durch die Direktive</p>
<p><code>LoadModule fcgid_module /usr/lib/apache2/modules/mod_fcgid.so</code></p>
<p style="text-align: justify;">Das Modul muss natürlich an dieser Stelle auch liegen! Nutzen wir Ubuntu oder Debian wurde die Konfiguration schon nach &#8220;modules-enabled&#8221; geschrieben. So sollte das Modul schon einmal geladen werden. Jetzt muss es natürlich noch konfiguriert werden. Allgemein kann man wieder in der httpd.conf/apache2.conf folgenden Block einfügen oder diesen unter &#8220;modules-enabled/fcgid.conf&#8221; bearbeiten:</p>
<p><code>&lt; IfModule mod_fcgid.c &gt;<br />
AddHandler fcgid-script .fcgi<br />
SocketPath /var/lib/apache2/fcgid/sock<br />
IdleTimeout 600<br />
IdleScanInterval 200<br />
BusyTimeout 300<br />
BusyScanInterval 120<br />
ErrorScanInterval 6<br />
ZombieScanInterval 3<br />
ProcessLifeTime 1200<br />
# SpawnScoreUpLimit 10<br />
# SpawnScore 1<br />
# TerminationScore 2<br />
MaxProcessCount 250<br />
DefaultMaxClassProcessCount 10<br />
DefaultMinClassProcessCount 0<br />
IPCConnectTimeout 20<br />
IPCCommTimeout 200<br />
MaxRequestsPerProcess 500<br />
&lt; /IfModule &gt;</code></p>
<p style="text-align: justify;">Damit ist das fcgid-Modul schon mal grundsätzlich einsatz bereit. Fehlen nur noch 2 kleine Sniplets und wir sind fertig! Nach den Apache-Konfigurations-Anpassungen muss nun noch ein Wrapper-Skript her um die PHP-Prozesse zu steuern. Dies legen wir uns an einen beliebigen Ort, aber dort wo der Apache2 es auch lesen kann und machen es ausführbar. Ich habe meins z.B. dort abgelegt: &#8220;/etc/php5/php-procs.sh&#8221;. Der Inhalt des Skripts ist wie folgt:</p>
<p><code>#!/bin/sh<br />
PHP_FCGI_CHILDREN=5<br />
PHP_FCGI_MAX_REQUESTS=100<br />
export PHP_FCGI_CHILDREN<br />
export PHP_FCGI_MAX_REQUESTS<br />
exec /usr/lib/cgi-bin/php5 "$@"<br />
</code></p>
<p style="text-align: justify;">Zu beachten sei noch der Pfad zum php5-cgi Binary. Dieser sollte noch überprüft werden, da das Ding ja auch mal woanders installiert sein kann oder einen anderen Namen haben kann. Die Anzahl der Kinder kann man je nach Last auf dem System noch hoch oder runter stellen. Genauso wie die Maximalen Requests pro Kind, bevor dieses zerstört wird. Haben wir das alles nun getan, fehlt uns nur noch ein Eintrag im jeweiligen VHost, welcher mit PHP arbeiten soll. Dazu fügen wir in diesen zwei Directory-Kontainer ein oder bearbeiten Vorhandene dementsprechend.</p>
<p><code>&lt; Directory / &gt;<br />
Options +FollowSymLinks<br />
AllowOverride all<br />
&lt; /Directory &gt;<br />
&lt; Directory /var/customers/webs/Zombie/ &gt;<br />
AddHandler fcgid-script .php<br />
FCGIWrapper /etc/php5/php-procs.sh .php<br />
Options Indexes +FollowSymLinks MultiViews ExecCGI<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all<br />
&lt; /Directory &gt;</code></p>
<p style="text-align: justify;">FollowSymlinks ist für Anwendungen außerhalb des Webroots gedacht. Das nutz ich meist um phpMyAdmin in verschiedenen Domains zu nutzen, ohne es X-Mal installieren zu müssen. Ist dies dann auch getan, sind wir fertig und geben noch ein finales</p>
<p><code>/etc/init.d/apache2 reload</code></p>
<p style="text-align: justify;">ein. Damit werden all unsere Änderungen aktiv und wir können gucken ob sie auch funktionieren. Das sollten sie eigentlich auch ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2009/09/fcgid-apache2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

