<?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; apache2</title>
	<atom:link href="http://www.zero0ne.de/tag/apache2/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>Apache &#8211; Tomcat: Tomcat-Worker Verwendung in VHosts</title>
		<link>http://www.zero0ne.de/2011/02/apache-tomcat-tomcat-worker-verwendung-in-vhosts/</link>
		<comments>http://www.zero0ne.de/2011/02/apache-tomcat-tomcat-worker-verwendung-in-vhosts/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 09:25:11 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Stuff]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[VirtualHost]]></category>
		<category><![CDATA[worker]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=2015</guid>
		<description><![CDATA[Hat man nun alles dementsprechende konfiguriert, kann man in jeden X-beliebigen VHost darauf zugreifen. Dazu gibt man entweder „jkmount“ an, um Pfade auf einen Tomcat-Worker/Balancer zu lenken oder „jkunmount“ um bestimmt Pfade genau davon auszuschließen. Bei den Mount-Direktiven kann man Pfade, Dateien, Dateipfade oder Pattern angeben. Man kann also sagen „jkmount / WorkerName“ um alles [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hat man nun alles dementsprechende konfiguriert, kann man in jeden X-beliebigen VHost darauf zugreifen. Dazu gibt man entweder „<strong>jkmount</strong>“ an, um Pfade auf einen Tomcat-Worker/Balancer zu lenken oder „<strong>jkunmount</strong>“ um bestimmt Pfade genau davon auszuschließen. Bei den Mount-Direktiven kann man Pfade, Dateien, Dateipfade oder Pattern angeben. Man kann also sagen „<strong>jkmount / WorkerName</strong>“ um alles dieser Domain ab dem Root auf den Tomcat „<strong>WorkerName</strong>“ zu lenken. Also die Syntax ist bei beiden Direktiven immer gleich „<strong>Kommando Pattern Tomcat</strong>“. Möglich wäre also z.B. auch „<strong>jkmount /cms/*.html WorkerName</strong>“ und „<strong>jkunmount /*.php</strong>“. Das erst besagt, das alle Requests auf HTMLs unterhalb von „<strong>/cms</strong>“ an dem Tomcat gesendet werden sollen und das andere, das alle Requests auf PHP-Dateien nicht an an den Tomcat gesendet werden.</p>
<p style="text-align: justify;">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/02/apache-tomcat-tomcat-worker-verwendung-in-vhosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache &#8211; Tomcat: mod_jk.conf</title>
		<link>http://www.zero0ne.de/2011/02/apache-tomcat-mod_jk-conf/</link>
		<comments>http://www.zero0ne.de/2011/02/apache-tomcat-mod_jk-conf/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 09:22:25 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[konfiguration]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=2011</guid>
		<description><![CDATA[In der mod_jk.conf (manchmal auch nur jk.conf) kann man noch zusätzliche Parameter setzen um das Verhalten des Moduls zu beeinflussen. Unter anderem wird hier festgelegt wo das „jk-workers-properties“-File liegt. Dies kann man hier nämlich mit dem Parameter „JkWorkersFile“ festlegen. JkShmFile beschreibt wo die Datei für den „shared memory“ für Balancer ist. Dies wird benutzt damit [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">In der mod_jk.conf (manchmal auch nur jk.conf) kann man noch zusätzliche Parameter setzen um das Verhalten des Moduls zu beeinflussen. Unter anderem wird hier festgelegt wo das „<strong>jk-workers-properties</strong>“-File liegt. Dies kann man hier nämlich mit dem Parameter „<strong>JkWorkersFile</strong>“ festlegen. JkShmFile beschreibt wo die Datei für den „<strong>shared memory</strong>“ für Balancer ist. Dies wird benutzt damit der Balancer seine Worker dirigieren kann. Sollte laut Doku nicht auf einen NFS-Share liegen. Normalerweise liegt es immer unter „<strong>/var/log/apache2/</strong>“. Weiterhin kann man sonst noch festlegen wo die eigentliche log-Datei liegen soll. Deren Log-Level und das Logformat lässt sich auch noch festlegen. Abschließend kann man mit „<strong>JkOptions</strong>“ noch verschiedene Optionen zur Kompatibilität zwischen Apache und Tomcat setzten. Zum Beispiel das der SSL- Header mit gesendet werden soll oder wir URIs weitergegeben werden.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/02/apache-tomcat-mod_jk-conf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache &#8211; Tomcat: jk-workers.properties</title>
		<link>http://www.zero0ne.de/2011/02/apache-tomcat-jk-workers-properties/</link>
		<comments>http://www.zero0ne.de/2011/02/apache-tomcat-jk-workers-properties/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 09:13:38 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Stuff]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[jk-workers.properties]]></category>
		<category><![CDATA[konfiguration]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=2006</guid>
		<description><![CDATA[Hier werden wie weiter oben schon besprochen Worker und Balancer konfiguriert. Am Anfang der Datei gibt es eine sogenannte „worker.list“. Alles was hierin aufgelistet wird, ist dem Apache2 später auch bekannt. Darunter folgt dann meist die Konfiguration der einzelnen Worker und Balancer. Wobei ein Balancer auch nur eine Art Worker ist. Ein Worker ist einfach [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hier werden wie weiter oben schon besprochen Worker und Balancer konfiguriert. Am Anfang der Datei gibt es eine sogenannte „<strong>worker.list</strong>“. Alles was hierin aufgelistet wird, ist dem Apache2 später auch bekannt. Darunter folgt dann meist die Konfiguration der einzelnen Worker und Balancer. Wobei ein Balancer auch nur eine Art Worker ist. Ein Worker ist einfach nur die Beschreibung eines Tomcats. Dabei lässt er sich mit 3 Zeilen abbilden. Man gibt mit „<strong>worker.Name.port</strong>“ den AJP-Connector Port an , mit „<strong>worker.Name.host</strong>“ den Hostnamen oder die IP und mit „<strong>worker.Name.type</strong>“ noch den Typ an. Beim Typ kann man entweder „<strong>ajp13</strong>“ oder „lb“ angeben. Wobei „lb“ dann für Load Balancer steht und „<strong>ajp13</strong>“ für einen normalen Worker. Der „<strong>Name</strong>“ im mittleren Teil der 3 Parameter sollte im dem der JVMRoute aus dem Engine-Tag der Server.xml des Tomcats entsprechen. Im Eigentlich ist dies aber nur wichtig, wenn man einen LB aufbauen möchte. Da so der Apache2 genau die Tomcats unterschieden kann. Hat man also diese 3 Parameter, hat man auch schon einen Worker, diesen fügt man dann noch der am Anfang erwähnten „<strong>worker.list</strong>“ hinzu. Einfach den Namen des Worker dort eintragen in einer Komma-separierten Liste. Anschließend dann noch „<strong>/etc/init.d/apache2 reload</strong>“. Damit ist ein Worker eingerichtet.<span id="more-2006"></span></p>
<p style="text-align: justify;">Einen LoadBalancer richtet man ebenso einfach ein. Zuerst braucht man aber mindestens einen Worker und damit es Sinn macht am besten gleich einen 2. dazu. Den Balancer kann man frei benennen. Mit „<strong>worker.TestBalancer.balance_workers</strong>“ legt man fest, welche Worker Teil des Balancer sind. Dort Komma- separiert die Liste an Tomats mit ihren Worker-Namen eintragen. „<strong>worker.TestBalancer.type</strong>“ setzt man dann auf „<strong>lb</strong>“. Wenn man in seiner Webapplikation mit Seesions arbeitet sollte man dann noch „<strong>worker.adminbalancer.sticky_session</strong>“ auf „<strong>1</strong>“ setzten. Damit man immer auf dem selben Worker bleibt und nicht mit jeden Request hin und her springt. Für die „<strong>method</strong>“ gibt es dann mehrere Optionen, hier ein Auszug aus der offiziellen Doku(1):</p>
<ul style="text-align: justify;">
<li>If method is set to <strong>R[equest] </strong>the balancer will use number of requests to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. This is the default value and should be working well for most applications.</li>
<li>If method is set to <strong>S[ession] </strong>the balancer will use number of sessions to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. Because the balancer does not keep any state, it actually does not know the number of sessions. Instead it counts each request without a session cookie or URL encoding as a new session. This method will neither know, when a session is being invalidated, nor will it correct its load numbers according to session timeouts or worker failover. This method should be used, if sessions are your limiting resource, e.g. when you only have limited memory and your sessions need a lot of memory.</li>
<li>If set to <strong>T[raffic] </strong>the balancer will use the network traffic between JK and Tomcat to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. This method should be used, if network to and from the backends is your limiting resource.</li>
<li>If set to <strong>B[usyness] </strong>the balancer will pick the worker with the lowest current load, based on how many requests the worker is currently serving. This number is divided by the workers lbfactor, and the lowest value (least busy) worker is picked. This method is especially interesting, if your request take a long time to process, like for a download application.</li>
</ul>
<p style="text-align: justify;">Request und Session haben sich bis jetzt bewährt. Der gesamte Parameter wird dann wieder mit „w<strong>orker.TestBalancer.method</strong>“ gesetzt. Damit wäre dann auch ein Balancer konfiguriert. diesen dann nur noch in der „<strong>worker.list</strong>“ mit seinen Namen hinzufügen.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">(1): http://tomcat.apache.org/connectors-doc/reference/workers.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/02/apache-tomcat-jk-workers-properties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Allgemeines zur Apache2-Konfiguration</title>
		<link>http://www.zero0ne.de/2011/02/apache2-konfiguration/</link>
		<comments>http://www.zero0ne.de/2011/02/apache2-konfiguration/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 10:46:27 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Stuff]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[konfiguration]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=1994</guid>
		<description><![CDATA[Aufbau des Konfigurationsverzeichnisses:﻿﻿ /etc/apache2/ &#124;&#8212;&#8212;&#8211;&#62; conf.d/ &#124;&#8212;&#8212;&#8211;&#62; Mods-available/ &#124;&#8212;&#8212;&#8211;&#62; Mods-enabled/ &#124;&#8212;&#8212;&#8211;&#62; Sites-available/ &#124;&#8212;&#8212;&#8211;&#62; Sites-enabled/ &#124;&#8212;&#8212;&#8211;&#62; ssl/ &#124;&#8212;&#8212;&#8211;&#62; apache2.conf &#124;&#8212;&#8212;&#8211;&#62; envvars &#124;&#8212;&#8212;&#8211;&#62; httpd.conf &#124;&#8212;&#8212;&#8211;&#62; jk-workers.properties &#124;&#8212;&#8212;&#8211;&#62; ports.conf &#160; In der obigen Abbildung ist der Standardaufbau des Apache-Konfigurationsverzeichnisses zu sehen. Die Einzelnen Punkt werden nun im Folgenden durchgegangen. Sie werden der Rehe nach von oben nach unten [...]]]></description>
			<content:encoded><![CDATA[<p>Aufbau des Konfigurationsverzeichnisses:﻿﻿</p>
<table border="0" cellspacing="0" frame="VOID" rules="NONE">
<colgroup>
<col width="131"></col>
<col width="192"></col>
</colgroup>
<tbody>
<tr>
<td width="131" height="24" align="LEFT">/etc/apache2/</td>
<td width="192" align="LEFT"></td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">conf.d/</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">Mods-available/</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">Mods-enabled/</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">Sites-available/</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">Sites-enabled/</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">ssl/</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">apache2.conf</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">envvars</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">httpd.conf</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">jk-workers.properties</td>
</tr>
<tr>
<td height="24" align="RIGHT">|&#8212;&#8212;&#8211;&gt;</td>
<td align="LEFT">ports.conf</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">In der obigen Abbildung ist der Standardaufbau des Apache-Konfigurationsverzeichnisses zu sehen. Die Einzelnen Punkt werden nun im Folgenden durchgegangen. Sie werden der Rehe nach von oben nach unten durchgegangen.</p>
<p><span id="more-1994"></span></p>
<h3>conf.d</h3>
<p style="text-align: justify;">Im Verzeichnis „<strong>conf.d</strong>“ liegen zusätzliche Konfigurationsdateien, welche nicht unbedingt vom Apache2 selbst stammen müssen. Viele Applikationen legen ihre Konfigs hier ab um sich so in den Apache einzubinden. Zum Beispiel legt Nagios seine Apache spezifischen Konfigs hier ab. Alle Dateien die hierin liegen, werden   automatisch eingebunden. Standardmäßig liegen hier auch immer die Dateien „<strong>charset</strong>“ und „<strong>security</strong>“. „<strong>charset</strong>“ würde  den Apache2 dazu veranlassen, beim ausreichen von Dateien dies in einen Andern Charset auszugeben. Aber dies ist meist immer deaktiviert, da es an sich eine schlecht Idee ist, das Charset so zu manipulieren. „<strong>security</strong>“ gibt an, was der Apache im Fehlerfall an Informationen preisgeben soll. So Informationen wie Name, OS, Module, Requestbody, Signatur. Sollte man immer auf ein so wenig wie möglich begrenzen.</p>
<h3>mods-available und mods-enabled</h3>
<p style="text-align: justify;">Unterhalb von „<strong>mods-available</strong>“ liegen alle Konfigurationen der mit Apache2 ausgelieferten und auch im Nachhinein installierten Module. Meist sind es nur simple Load-Anweisungen. Aber auch komplette Konfigurationen wie zum Beispiel bei mod_fcgi und mod_jk. Konfiguration in diesem Verzeichnis werden nicht automatisch geladen. Sie werden hier nur vorgehalten. Dies erklärt sich im Zusammenhang mit dem Verzeichnis namens „<strong>mods-enabled</strong>“. Denn wenn hier eine Konfig liegt, wird diese wieder automatisch eingebunden. Im laufe der zeit hatte es sich beim Apache2-Projekt eingebürgert, die Konfigs immer vor zuhalten und dann bei bedarf in „<strong>mods-enabled</strong>“ rein zu linken. D.h. die Konfigs liegen unterhalb von „<strong>mods-available</strong>“ und werden nur mittels eines symbolischen Links in „<strong>mods-enabled</strong>“ in die Gesamtkonfiguration vom Apache2 eingebunden. Dies ist allerdings Keine Pflicht. Man kann Konfigs auch direkt unterhalb von „<strong>mods-enabled</strong>“ ablegen.</p>
<h3>sites-available und sites-enabled</h3>
<p style="text-align: justify;">Mit den Sites verhält es sich ähnlich wie mit den Mods. Es gibt einmal das „<strong>available</strong>“ Verzeichnis wo die eigentlichen Konfigs drin liegen und dann das „<strong>enabled</strong>“ Verzeichnis wo dann die aktiven Sites rein gelinkt werden. Daran wird sich bei der jetzigen Konfiguration allerdings nicht gehalten. Die aktiven Konfigs der Seiten liegen auch direkt im „<strong>enabled</strong>“ Verzeichnis. Sie werden nicht noch extra rein gelinkt.</p>
<h3>SSL allgemein</h3>
<p style="text-align: justify;">Hier liegen die SSL-Zertifikate welche der Apache2 benutzen soll. Dieses Verzeichnis muss nicht immer bestehen, teilweise wird auch auf „<strong>/etc/ssl</strong>“ zurückgegriffen. Meist liegen die Zertifikate in „<strong>pem</strong>“-Form vor. Das heißt das Key und Zertifikat in einer Datei vereinigt sind. Daneben liegt dann meist noch das CA-Bundle. Dieses liefert noch einmal die Root-Zertifikate, mit welchen das eigene Zertifikat unterschrieben wurde. Das macht pro Domain dann immer 2 Dateien. Obwohl, wenn man die Zertifikate alle vom Selben Aussteller hat, es reichen würde immer auf ein ca-bundle zu verweisen.</p>
<p style="text-align: justify;">Zertifikate haben immer nur eine begrenzte Gültigkeit. Danach müssen sie erneuert werden. D.h. In den meisten Fällen neu ausgestellt werden. Zertifikate lassen sich günstig und einfach von <a href="http://www.ready2host.de/">http://www.ready2host.de/</a> beziehen. Dort gibt es dann auch immer eine Einbauanleitung.</p>
<h3>apache.conf</h3>
<p style="text-align: justify;">In der apche2.conf steht die Hauptkonfiguration des Apache2-Webserver. Hier muss man eigentlich selten Hand anlegen, da die Presets immer sehr gut funktionieren. Wichtig sind für einen nur zB. Die KeepAlive-Einstellungen. Diese stehen ganz oben in der Konfig. Auch sind dort gleich die Einstellungen zum Thread-Management. Am Ende der Datei stehen noch einige vHost-Sondereinstellungen (siehe 3.2.1).</p>
<h3>envvars</h3>
<p style="text-align: justify;">Hier sind nur 3 Variablen hinterlegt. Dies ist eine Eigenart von Debian/Ubuntu. Die Variablen, besagen nur unter welchen User und welcher Gruppe der Webserver ausgeführt werden soll. Weiterhin noch wo die PID gespeichert werden soll.</p>
<h3>httpd.conf</h3>
<p style="text-align: justify;">Diese Datei ist meist leer. In mach anderen Systemen ist dies die Hauptkonfiguration. Deswegen existiert sie auch hier, falls Programme nach ihr suchen. Aus welchen Gründen auch immer.</p>
<h3>jk-workes-properties</h3>
<p style="text-align: justify;">Diese Datei ist zwar kein Standard,aber in Zusammenhang mit Tomcat wichtig. Sie besagt welcher Tomcat unter welchen Namen in der Apache2-Konfiguration anzusprechen ist. Auch werden hier die Balancer konfiguriert. Diese Datei ist immer im Zusammenhang mit „<strong>mod_jk</strong>“ zu betrachten.</p>
<h3>ports.conf</h3>
<p style="text-align: justify;">Diese Datei stellt wieder eine Eigenart von Debian/Ubuntu dar. Hier sind allein nur die Ports gelistet auf welchen der Apache2 lauschen soll. Im Standardfall sind dies immer Port 80 und Port 443.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/02/apache2-konfiguration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>

