<?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>nerdcenter &#187; Webserver</title>
	<atom:link href="http://nerdcenter.de/category/webserver/feed/" rel="self" type="application/rss+xml" />
	<link>http://nerdcenter.de</link>
	<description>IT-Kniffe eines Webentwicklers.</description>
	<lastBuildDate>Fri, 25 Jun 2010 15:11:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>suPHP und PHP Opcode Caches</title>
		<link>http://nerdcenter.de/suphp-php-opcode-cache/</link>
		<comments>http://nerdcenter.de/suphp-php-opcode-cache/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 11:02:37 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Linux / Unix]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://nerdcenter.de/?p=63</guid>
		<description><![CDATA[

Eigentlich ist suPHP eine nette Sache. Das Apache Modul mod_suphp sorgt in Kombination mit einem SetUID Binary dafür, dass PHP-Skripte mit den Berechtigungen des Benutzers, dem sie gehören, ausgeführt werden. Damit das funktioniert muss man in Binär-Distributionen wie etwa Debian Linux nicht mehr tun, als dass Modul zu installieren, einen Blick auf dessen Konfiguration zu [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Eigentlich ist suPHP eine nette Sache. Das Apache Modul mod_suphp sorgt in Kombination mit einem SetUID Binary dafür, dass PHP-Skripte mit den Berechtigungen des Benutzers, dem sie gehören, ausgeführt werden. Damit das funktioniert muss man in Binär-Distributionen wie etwa Debian Linux nicht mehr tun, als dass Modul zu installieren, einen Blick auf dessen Konfiguration zu werfen und es anschließend zu aktivieren. Vielleicht ist es gerade diese Einfachheit (deren Preis die Starrheit ist), die es so beliebt macht.</p>
<p>Ein großes Problem tut sich aber dann auf, wenn man PHP-Caches wie APC, TurckMM oder eAccelerator verwenden möchte. Denn all diese Caches funktionieren nicht im Zusammenspiel mit suPHP. Zwar lässt sich eine solche Kombination verwenden, doch ist sie leider nutzlos, da nichts gecached wird.</p>
<p>Eine wundervolle Alternative zu der Verwendung von suPHP ist eine Kombination aus Apache, SuExec, FCGID und PHP-CGI. Mit dieser Kombination funktioniert auch das Caching problemlos. Eine Anleitung zum Aufsetzen dieser Kombination findet sich bei <a href="http://wiki.hetzner.de/index.php/Apache_PHP5_fcgi_und_SuExec">Hetzner.de</a>.</p>
<p>Wer seine Websites nicht in dem von der jeweils genutzten Linux Distribution dafür vorgesehenen Verzeichnis ablegt sondern stattdessen beispielsweise in /home/*/public_html/ muss darauf achten, SuExec selbst zu kompilieren oder auf Debian-Systemen die gepatchte Version apache2-suexec-common zu verwenden. Aus Sicherheitsgründen erwartet SuExec bereits bei der Kompilierung den Pfad zum Docroot. Bei der Verwendung von apache2-suexec-common lässt sich das Docroot in der Datei /etc/apache2/suexec/www-data angeben.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/suphp-php-opcode-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache: mod_rewrite Rewrite Rules Tutorial</title>
		<link>http://nerdcenter.de/apache-mod_rewrite-rewrite-rules-tutorial/</link>
		<comments>http://nerdcenter.de/apache-mod_rewrite-rewrite-rules-tutorial/#comments</comments>
		<pubDate>Sun, 31 Dec 2006 02:12:38 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://www.nerdcenter.de/apache-mod_rewrite-rewrite-rules-tutorial/</guid>
		<description><![CDATA[

Was ist mod_rewrite?
mod_rewrite ist eine Bibliothek für den Apache Webserver, die Adressen (URLs) umschreiben kann. Man kann sich das in etwa wie eine Verknüpfung vorstellen, die auch Parameter an das echte Programm mit dem echten Pfad übergeben kann.
Was bringt mir mod_rewrite?
Mit mod_rewrite wird Webmastern eine schöne Möglichkeit in die Hand gelegt für noch schönere URLs [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p><strong>Was ist mod_rewrite?</strong></p>
<p><strong>mod_rewrite</strong> ist eine Bibliothek für den <strong>Apache</strong> Webserver, die Adressen (URLs) umschreiben kann. Man kann sich das in etwa wie eine Verknüpfung vorstellen, die auch Parameter an das echte Programm mit dem echten Pfad übergeben kann.</p>
<p><strong>Was bringt mir mod_rewrite?</strong></p>
<p>Mit <strong>mod_rewrite</strong> wird Webmastern eine schöne Möglichkeit in die Hand gelegt für noch schönere URLs zu sorgen. So vermag <strong>mod_rewrite</strong> beispielsweise aus www.bla.de/blub.php?bla=bla&#038;bla2=bla2 www.bla.de/blub_bla-bla2, www.bla.de/blub-bla-bl2.html oder etwa www.bla.de/blub/bla/bla2/ zu machen.</p>
<p>Dies hat den angenehmen Effekt, dass die URLs von Suchmaschinen perfekt verfolgt werden können und der Webmaster die URLs mit Keywords anreichern kann, die sein Ranking in den Suchmaschinen positiv beeinflussen. Außerdem ist es natürlich angenehmer für die Augen und vereinfacht Direktzugriffe von Stammgästen <img src='http://nerdcenter.de/wp-includes/images/smilies/icon_wink.gif' alt="Icon Wink in " class='wp-smiley' /> </p>
<p><strong>mod_rewrite Konfiguration / Syntax<br />
</strong></p>
<p><strong>mod_rewrite</strong> handelt nach Regeln, die der Webmaster entweder in einer <strong>.htaccess</strong> Datei in dem entsprechenden Verzeichnis (bzw. einem darüberliegenden, da sie rekursiv vererbt werden) hinterlegt, oder direkt in die Konfiguration des <strong>Apache</strong> Webservers schreibt. Letzteres hat Performance-Vorteile, da der <strong>Apache</strong> keine <strong>.htaccess</strong> Datei einlesen muss. Die Syntax der Regeln entspricht <a href="http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck">Perls regulären Ausdrücken</a>.</p>
<p><strong>mod_rewrite Syntax Beispiele</strong></p>
<p>Zu Beginn muss <strong>mod_rewrite</strong> aktiviert werden:</p>
<p><code> RewriteEngine On </code></p>
<p>Dann wird das Verzeichnis ausgewählt, auf das sich die Regeln beziehen:</p>
<p><code> RewriteBase / </code></p>
<p>Folgende Regel macht den Aufruf des PHP-Skriptes index.php mit den Parametern id und name auch via Aufruf einer URL möglich, die mit i_ beginnt und mit den beiden Parametern getrennt durch ein Minus weiter geht:</p>
<p><code> RewriteRule ^i_(.*)-(.*)$ index.php?id=$1&#038;name=$2 </code></p>
<p>Folgende Regel tut genau das gleiche, beschränkt die Zulässigen Datentypen der Parameter aber bei id auf einen String und bei name auf einen Integer &#8211; weichen sie ab findet kein Umschreiben statt.</p>
<p><code> RewriteRule ^i_([a-Z]*)-([0-9]*)$ index.php?id=$1&#038;name=$2 </code></p>
<p>Weitere Informationen zu regulären Ausdrücken finden sich <a href="http://www.regular-expressions.info/">hier</a>. Mehr zu mod_rewrite gibt es auf <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">Apache.org</a>.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/apache-mod_rewrite-rewrite-rules-tutorial/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apache: Bots (UserAgent / IP) aussperren per .htaccess</title>
		<link>http://nerdcenter.de/apache-bots-aussperren-per-htaccess/</link>
		<comments>http://nerdcenter.de/apache-bots-aussperren-per-htaccess/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 18:46:59 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://www.nerdcenter.de/apache-bots-aussperren-per-htaccess/</guid>
		<description><![CDATA[

Ein Anonymizerservice von einem Freund und mir wurde vor kurzem von Bots u.a. für Trackback-Spam missbraucht. Was passiert war lag auf der Hand &#8211; 8 Trafficlimit Mails an einem Tag (ich hab mal ein tägliches Limit von 30GB vorgegeben). In den Logs wurden die schuldigen schnell gefunden.
Aber wie lassen sich Bots aussperren? Beim Apache Webserver [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Ein Anonymizerservice von einem Freund und mir wurde vor kurzem von Bots u.a. für <strong>Trackback-Spam</strong> missbraucht. Was passiert war lag auf der Hand &#8211; 8 Trafficlimit Mails an einem Tag (ich hab mal ein tägliches Limit von 30GB vorgegeben). In den Logs wurden die schuldigen schnell gefunden.</p>
<p>Aber wie lassen sich Bots aussperren? Beim <strong>Apache Webserver</strong> funktioniert dies relativ leicht: in der Datei des jeweiligen VHosts bzw. in der httpd.conf / apache2.conf  oder alternativ in der <strong>.htaccess</strong> Datei können Regeln aufgestellt werden, die Hosts anhand bestimmter Kriterien ausschließen. Zur Demonstration:</p>
<p>Folgender Eintrag in einer <strong>.htaccess</strong> Datei bewirkt, dass die Hosts mit den IP-Adressen 69.50.160.50 und 64.28.177.122 nicht mehr auf Inhalte des <strong>Apache</strong> zugreifen können:<br />
<code><br />
order deny,allow<br />
deny from 69.50.160.50<br />
deny from 64.28.177.122<br />
</code></p>
<p>Folgende Einträge schließen alle Clients, die den <strong>UserAgent</strong>  TrackBack/1.02  oder einen <strong>UserAgent</strong>, der mit &#8220;Java&#8221; beginnt haben (ein Bot mit dem <strong>UserAgent</strong> TrackBack/1.02 sorgte für Trackback-Spam und diverse Bots mit dem <strong>UserAgent</strong> Java hatten ganz offensichtlich auch nichts gutes vor), von dem Zugriff auf Inhalte des <strong>Apache</strong> aus:</p>
<p><code> RewriteEngine On<br />
RewriteCond %{HTTP_USER_AGENT} ^Java<br />
RewriteRule ^.*$ - [F]<br />
RewriteCond %{HTTP_USER_AGENT} TrackBack/1.02<br />
RewriteRule ^.*$ - [F] </code></p>
<p>Wer mehr über die dynamisch wirkenden RewriteConditions wissen möchte sollte sich mit regulären Ausdrücken beschäftigen.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/apache-bots-aussperren-per-htaccess/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PHP cachen mit APC</title>
		<link>http://nerdcenter.de/php-cachen-mit-apc/</link>
		<comments>http://nerdcenter.de/php-cachen-mit-apc/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 14:13:32 +0000</pubDate>
		<dc:creator>kcore</dc:creator>
				<category><![CDATA[Webserver]]></category>

		<guid isPermaLink="false">http://www.nerdcenter.de/php-cachen-mit-apc/</guid>
		<description><![CDATA[

Spätestens, wenn top ein CPU usage von 100% anzeigt oder sich die Maschine gar das erste mal verabschiedet muss sich Herr root die Frage stellen, was er tun kann, um das Problem zu beseitigen.
Sollte top zudem verraten, dass Apache bzw. PHP-CGI -Prozesse dafür verantwortlich sind muss man sich die Frage stellen, ob dies an der [...]]]></description>
			<content:encoded><![CDATA[
<!-- google_ad_section_start -->
<p>Spätestens, wenn top ein CPU usage von 100% anzeigt oder sich die Maschine gar das erste mal verabschiedet muss sich Herr root die Frage stellen, was er tun kann, um das Problem zu beseitigen.</p>
<p>Sollte top zudem verraten, dass <strong>Apache</strong> bzw. <strong>PHP-CGI</strong> -Prozesse dafür verantwortlich sind muss man sich die Frage stellen, ob dies an der Execution time liegt, oder an externen Faktoren (z.B. wenn Bilder von externen Servern geladen werden).</p>
<p>Sollte das Problem tatsächlich lokaler natur sein, so verspricht <a href="http://pecl.php.net/package/APC">APC</a> Abhilfe. <strong>APC</strong> ist ein Modul für <strong>PHP</strong>, das bereits kompilierte <strong>PHP</strong> Skripte, bzw. genauer gesagt deren <strong>Bytecode</strong> cacht.</p>
<p>Die Installation von <strong>APC</strong> gestaltet sich simpel. Der Tarball muss nur von der Seite heruntergeladen werden, anschließend lässt er sich mit <em>tar zxf APC-*</em> entpacken. Es folgen das Ausführen von <em>phpize</em> (normaler Weise in /usr/bin/ bzw. /usr/local/bin/ beheimatet) sowie <em>./configure</em> (genaue Parameter bitte der Datei INSTALL entnehmen), <em>make</em> und <em>make install</em>. Anschließend muss das Modul nur noch durch einen Eintrag in die php.ini geladen werden.<br />
Der Performanceunterschied ist nicht gigantisch, jedoch deutlich spür- und sichtbar. Mehr dazu auf der <a href="http://pecl.php.net/package/APC">offiziellen Seite</a>.</p>
<!-- google_ad_section_end -->
]]></content:encoded>
			<wfw:commentRss>http://nerdcenter.de/php-cachen-mit-apc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
