<?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>CITYCLOUDS &#187; VHOST</title>
	<atom:link href="http://www.cityclouds.de/tag/vhost/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cityclouds.de</link>
	<description>Music, Design &#38; Inspiration</description>
	<lastBuildDate>Sat, 04 Feb 2012 14:06:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Debian Etch – Apache2 mit PHP5 via FastCGI und mehreren VHosts (Teil 3)</title>
		<link>http://www.cityclouds.de/2008/09/debian-etch-%e2%80%93-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-3/</link>
		<comments>http://www.cityclouds.de/2008/09/debian-etch-%e2%80%93-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-3/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 14:20:29 +0000</pubDate>
		<dc:creator>Paeddl</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[fcgi]]></category>
		<category><![CDATA[FCGIWrapper]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[rotatelogs]]></category>
		<category><![CDATA[suExec]]></category>
		<category><![CDATA[VHOST]]></category>

		<guid isPermaLink="false">http://www.cityclouds.de/?p=83</guid>
		<description><![CDATA[Im dritten Teil des Tutorials erzeugen wir die VHost-Konfiguration für den Apache. Ich achte dabei auf Security by obscurity indem ich beispielsweise die Version unseres Webservers nicht preisgebe. Zudem bekommt jeder VHost eine eigene Logdatei, die in der Standard-Konfiguration schnell zu einer großen Datei anwächst. Wir werden Access- und Error-Datei täglich automatisiert neu anlegen um dies zu vermeiden. Zur Übersicht bekommt jede Log-Datei das aktuelle Datum in umgekehrter Reihenfolge an den Dateinamen angehangen.]]></description>
			<content:encoded><![CDATA[<p>Im dritten Teil des Tutorials erzeugen wir die VHost-Konfiguration für den Apache. Ich achte dabei auf Security by obscurity indem ich beispielsweise die Version unseres Webservers nicht preisgebe. Zudem bekommt jeder VHost eine eigene Logdatei, die in der Standard-Konfiguration schnell zu einer großen Datei anwächst. Wir werden Access- und Error-Datei täglich automatisiert neu anlegen um dies zu vermeiden. Zur Übersicht bekommt jede Log-Datei das aktuelle Datum in umgekehrter Reihenfolge an den Dateinamen angehangen.</p>
<p><span id="more-83"></span></p>
<p><a href="http://www.cityclouds.de/?p=15">Zu Teil 2</a></p>
<p>Wir wechseln zunächst in das Config-Verzeichnis indem sich die VHost-Dateien befinden (&#8220;vhost&#8221; bitte ersetzen):</p>
<p><span style="#0000ff;"><em># cd /etc/apache2/sites-available/<br />
# mcedit vhost</em></span></p>
<p>Diese Datei bitte mit folgendem von dir abgeändertem Inhalt befüllen :</p>
<p><span style="#0000ff;"><em>&lt;VirtualHost *&gt;<br />
ServerAdmin info@example.com<br />
ServerName example.com<br />
ServerAlias www.example.com</em></span></p>
<p><em>ServerSignature Off<br />
LogLevel warn<br />
ErrorLog &#8220;|/usr/sbin/rotatelogs /var/www/vhost/log/error.%Y-%m-%d.log  86400&#8243;<br />
CustomLog &#8220;|/usr/sbin/rotatelogs /var/www/vhost/log/access.%Y-%m-%d.log  86400&#8243; common</em></p>
<p><em>DocumentRoot /var/www/vhost/web<br />
DirectoryIndex Default.php Default.html Default.htm index.php index.html index.htm</em></p>
<p><em>#FCGI-Settings<br />
PHP_Fix_Pathinfo_Enable 1</em></p>
<p><em>SuexecUserGroup vhost vhost</em></p>
<p><em>AddHandler fcgid-script .php</em></p>
<p><em>&lt;Directory /var/www/vhost/web&gt;<br />
Options FollowSymLinks +ExecCGI<br />
AllowOverride AuthConfig FileInfo<br />
Order allow,deny<br />
allow from all</em></p>
<p><em>#FCGID-PHP-Teil<br />
FCGIWrapper /var/www/vhost/php-fcgi/php-fcgi-starter .php<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;</em></p>
<ul>
<li>Zu Beginn werden ein paar obligatorische Angaben gemacht.</li>
<li>Wichtig ist die Domain über die der VHost erreichbar ist.</li>
<li><strong>&#8220;ServerSignature Off&#8221;</strong> verbietet die Anzeige der Webserver-Version (z.B. auf einer Fehlerseite).</li>
<li>Mit <strong>&#8220;logLevel&#8221;</strong> wird eingestellt, ab welchem Nachrichten-Status gelogt werden soll (&#8220;error&#8221; wäre z.B. auch möglich, wenn man nicht schon Warnungen gelogt haben möchte).</li>
<li>Danach folgen die zwei Zeilen für unser <strong>Logrotate</strong>. &#8220;86400&#8243; steht für die Sekunden eines Tages.</li>
<li><strong>&#8220;DocumentRoot&#8221; </strong>ist der Pfad, der öffentlich über den Browser erreichbar ist, wenn er nicht durch eine .htaccess-Datei verboten wurde.</li>
<li>Um die Startseite eines Verzeichnisses zu definieren, wird <strong>&#8220;DirectoryIndex&#8221;</strong> benutzt. Dort kann man eine Rangfolge angeben. Ich nutze grundsätzlich die &#8220;index.php&#8221; für meine Startseiten. Mit Default.php lässt sich allerdings immer noch eine Hinweis-Seite für den Fall der Fälle davor schalten.</li>
<li>Es folgt eine Eigenschaft um die Superglobale <strong>$_SERVER['PATH_INFO']</strong> in PHP korrekt zu setzen.</li>
<li>Innerhalb der <strong>Directory-Tags</strong> muss dann noch der Pfad zum <strong>PHP-Wrapper</strong> gesetzt werden.</li>
</ul>
<p>Datei nun mit F2 Speichern und MC verlassen. Nun aktivieren wir die Konfigurations-Datei für den VHost indem wir unter &#8220;sites-enabled&#8221; einen Link anlegen. Nun aktivieren wir die Seite mit (deaktivieren mit # a2dissite vhost):</p>
<p><span style="#0000ff;"><em># a2ensite vhost</em></span></p>
<p>Vielen Dank für diesen Befehl Daniel (Kommentar #1)</p>
<p>Wir starten den Apache neu um unsere Änderungen mit einem PHP-Skript zu testen:</p>
<p><span style="#0000ff;"><em># apache2 -k restart</em></span></p>
<p>PHP-Datei zum Testen anlegen:</p>
<p><span style="#0000ff;"><em># cd /var/www/vhost/web/<br />
# mcedit info.php</em></span></p>
<p>Folgender Inhalt muss in die PHP-Datei:</p>
<p><span style="#0000ff;"><em>&lt;?php</em></span></p>
<p><em>phpinfo();</em></p>
<p>Die schließende PHP-Klammer am Ende Datei habe ich bewusst weggelassen, da die Datei bis zum Ende PHP-Code enthält – Programmierer sind Faul <img src='http://www.cityclouds.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Im nächsten Teil des Tutorials werden wir PHP mit dem eAccelerator und dem Zend Optimizer noch ein wenig Feuer unter dem Hintern machen.</p>
<p><a href="http://www.cityclouds.de/?p=126">Zu Teil 4</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cityclouds.de/2008/09/debian-etch-%e2%80%93-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Debian Etch – Apache2 mit PHP5 via FastCGI und mehreren VHosts (Teil 2)</title>
		<link>http://www.cityclouds.de/2008/08/debian-etch-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-2/</link>
		<comments>http://www.cityclouds.de/2008/08/debian-etch-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-2/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 17:49:57 +0000</pubDate>
		<dc:creator>Paeddl</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php-fcgi-starter]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[VHOST]]></category>

		<guid isPermaLink="false">http://www.cityclouds.de/index.php?/archives/25-guid.html</guid>
		<description><![CDATA[Im zweiten Teil des Tutorials wird die essentielle Ordnerstruktur für den VHost aufgebaut. Die Konfiguration ist so gestaltet, dass sie für den jeweiligen Host eine große Flexibilität bietet.]]></description>
			<content:encoded><![CDATA[<p>Im zweiten Teil des Tutorials wird die essentielle Ordnerstruktur für den VHost aufgebaut. Die Konfiguration ist so gestaltet, dass sie für den jeweiligen Host eine große Flexibilität bietet. Im Folgenden legen wir die Verzeichnisstruktur für den VHost an. Ersetze in den Befehlen bitte &#8220;vhost&#8221; durch deinen persönlichen Namen. Ich verwende z.B. den Haupt-Domainnamen um dem späteren Wirrwarr Herr zu werden. Wer das Ganze noch ein wenig professioneller betreiben will, kann sogar Kunden-Nr. vergeben. Grundsätzlich wird für jeden VHost ein eigener User angelegt, damit die Dateien auch in seinem Namen ausgeführt werden. Dies gibt einen besonderen Grad an Sicherheit.</p>
<p><span id="more-15"></span></p>
<p><a href="http://www.cityclouds.de/?p=14">Zu Teil 1</a></p>
<p>Wir liegen nun also erstmal einen neuen User an:</p>
<address># adduser vhost</address>
<p>Es folgen ein paar Angaben zur Person, die du aber auch leer lassen kannst. Wir wechseln nun in das Verzeichnis, wo wir die einzelnen VHosts anlegen:</p>
<address># cd /var/www</address>
<p>Ordner für Website anlegen:</p>
<address># mkdir vhost</address>
<p>In den Ordner des VHosts wechseln:</p>
<address># cd vhost</address>
<p>Dort werden die essenziellen Ordner für jeden VHost anlegt. Zunächst eine kurze Beschreibung, was die Ordner später beinhalten:</p>
<p>* conf: Ordner für die Config-Dateien. In unserem Fall nur für die php.ini<br />
* log: Logdateien des Apaches<br />
* php-fcgi: Wrapper-Skript mit Einstellungen für das Ausführen der PHP-Skripte<br />
* php-tmp: Ordner, der z.B. die Session-Daten von PHP beherbergt<br />
* web: Dieser Ordner wird später von außen über den Browser erreichbar sein.</p>
<p>Wir legen nun also die Ordner an:</p>
<address># mkdir conf<br />
# mkdir log<br />
# mkdir php-fcgi<br />
# mkdir php-tmp<br />
# mkdir web</address>
<p>Wir legen zunächst den Wrapper zum Ausführen der PHP-Skripte und wechseln zunächst in das Verzeichnis:</p>
<address># cd php-fcgi</address>
<p>Dort eine Datei namens &#8220;php-fcgi-starter&#8221; anlegen:</p>
<address>#mcedit php-fcgi-starter</address>
<p>Diese Datei beinhaltet den Pfad zur späteren php.ini des VHosts exklusive dem Dateinamen &#8220;php.ini&#8221;. Die Zeilen mit vorangestelltem &#8220;export&#8221; stellen die zuvor definierte Variable in PHP als Superglobale zur Verfügung. Z.B. der Pfad zur php.ini wird in PHP mit $_SERVER[''PHPRC''] ausgegeben. Wer diesen &#8220;Export&#8221; der Daten nicht wünscht, lässt diese Zeilen einfach Weg. &#8220;nice -n 5&#8243; legt die Priorität des Prozesses fest. Je höher der Wert, desto wichtiger gilt dieser Prozess im System. Wer dem Webserver die maximale Rechenleistung zusichern will, erhöht diesen Wert auf 19 (Maximum).</p>
<p>Inhalt des Wrappers (&#8220;vhost&#8221; bitte ersetzen):</p>
<address>#!/bin/sh<br />
PHPRC=&#8221;/var/www/vhost/conf&#8221;<br />
export PHPRC<br />
PHP_FCGI_CHILDREN=2<br />
export PHP_FCGI_CHILDREN<br />
PHP_FCGI_MAX_REQUESTS=5000<br />
export PHP_FCGI_MAX_REQUESTS<br />
exec nice -n 5 /usr/bin/php-cgi</address>
<p>Datei mit F2 speichern und den MidnightCommander mit F10 verlassen.</p>
<p>Nun wird es etwas knifflig. Der VHost User braucht folgende Rechte (&#8220;vhost&#8221; ersetzen):</p>
<address># chown vhost:vhost php-fcgi-starter<br />
# chmod 750 php-fcgi-starter</address>
<p>Damit diese Datei aber dennoch nicht manipuliert werden kann, nutzen wir das Immutable-Bit:</p>
<address># chattr -V +i php-fcgi-starter</address>
<p>Danach ist die Datei auch für den root-User nicht mehr editierbar. Erst nachdem das Immutable-Bit entfernt wurde, kann die Datei wieder bearbeitet werden. Das funktioniert so:</p>
<address># chattr -V -i php-fcgi-starter</address>
<p>Nun benötigen wir für den VHost eine eigene php.ini. Dafür nehmen wir die vom System vorgegebene Datei als Grundlage:</p>
<address># cp /etc/php5/cgi/php.ini /var/www/vhost/conf/php.ini</address>
<p>Diese Datei kannst du dann nach deinen Bedürfnissen anpassen. Achte aber darauf, dass du keine CGI-Skripte zulässt, da man mit diesen das Immutable-Bit entfernen kann.</p>
<p><a href="http://www.cityclouds.de/?p=83">Zu Teil 3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cityclouds.de/2008/08/debian-etch-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian Etch – Apache2 mit PHP5 via FastCGI und mehreren VHosts (Teil 1)</title>
		<link>http://www.cityclouds.de/2008/08/debian-etch-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-1/</link>
		<comments>http://www.cityclouds.de/2008/08/debian-etch-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-1/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 12:46:57 +0000</pubDate>
		<dc:creator>Paeddl</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[eAccelerator]]></category>
		<category><![CDATA[fcgi]]></category>
		<category><![CDATA[MySQL5]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[VHOST]]></category>
		<category><![CDATA[Zend Optimizer]]></category>

		<guid isPermaLink="false">http://www.cityclouds.de/index.php?/archives/24-guid.html</guid>
		<description><![CDATA[Dieses HowTo soll euch zeigen, wie man auf Debian Etch einen leistungsstarken Webserver für PHP-Anwendungen zur Verfügung stellt. Ich verwende beschriebene Konfiguration für einen Produktiv-Server, auf dem mehrere VHosts laufen. Darauf sind zahlreiche Web-Applikationen, wie Typo3 installiert. Ziel ist es einen Server mit folgenden Eigenschaft zu installieren&#8230; * Apache 2 * PHP5 (via FastCGI) * [...]]]></description>
			<content:encoded><![CDATA[<p>Dieses HowTo soll euch zeigen, wie man auf Debian Etch einen leistungsstarken Webserver für PHP-Anwendungen zur Verfügung stellt. Ich verwende beschriebene Konfiguration für einen Produktiv-Server, auf dem mehrere VHosts laufen. Darauf sind zahlreiche Web-Applikationen, wie Typo3 installiert. Ziel ist es einen Server mit folgenden Eigenschaft zu installieren&#8230;</p>
<p>* Apache 2<br />
* PHP5 (via FastCGI)<br />
* cURL-Erweiterung für PHP (wird von Typo3)<br />
* Tidy-Erweiterung für PHP (optional für PHP)<br />
* mcrypt-Erweiterung für PHP (empfohlen für phpMyAdmin)<br />
* GD2lib mit Freetype2<br />
* eAccelerator (PHP-Beschleuniger)<br />
* Zend Optimizer (PHP-Beschleuniger)<br />
* MySQL5<br />
<span id="more-14"></span><br />
Des Weiteren wird es mit diesen Paketen möglich sein, die PHP-Skripte mit den Rechten des Eigentümers auszuführen. Dafür wird suExec zuständig sein. Ich lege bei diesem Tutorial Wert auf eine hohe PHP-Performance, weshalb ich zu dem seit längerem etabliertem FastCGI auch noch zwei PHP-Beschleuniger einsetze.</p>
<p>Benötigt wird ein SSH-Zugang zu eurem Sever. Natürlich verlangt die Konfiguration von uns, dass wir mit root-Rechten auf dem Server arbeiten dürfen. Zudem verwende ich für das Editieren der Config-Dateien den Edit-Modus des MidnightCommanders. Das ist in meinen Augen ein ganz nützlicher Datei-Browser, der ein minimales GUI mitbringt. Wer ihn ebenfalls nutzen will, installiert das Teil mit folgendem Befehl:</p>
<address># aptitude install mc</address>
<p>Ihr solltet zunächst euer Debian auf den neusten Stand bringen. Wie empfohlen nutzen wir zum Installieren der Pakete &#8220;aptitude&#8221;. Wer bei seinem System bereits auf apt-get zurückgegriffen hat, sollte dies auch weiterhin tun und &#8220;aptitude&#8221; durch &#8220;apt-get&#8221; ersetzen.</p>
<p>System aktualisieren</p>
<address># aptitude update<br />
# aptitude upgrade</address>
<p>Benötigte Pakete installieren:</p>
<address># aptitude install apache2-mpm-worker apache2-threaded-dev apache2.2-common apache2-utils libapache2-mod-fcgid php5 php5-common php5-cgi php5-gd php5-mysql php5-tidy php5-curl php5-mcrypt mysql-server-5.0 libfreetype6 libgd2-xpm</address>
<p>Standardmäßig bekommt der MySQL-Root-User kein Passwort, da zunächst keine Verbindungen von außen zulässt. Da sicher nun einmal sicher ist, werden wir dennoch ein Passwort vergeben. &#8220;geheim&#8221; bitte durch dein Passwort ersetzen.</p>
<address># mysqladmin -u root password geheim</address>
<p>Wenn du nun die IP-Adresse deines Servers im Browser eingibst, solltest du bereits mit der Meldung &#8220;It works!&#8221; belohnt werden.</p>
<p><a href="http://www.cityclouds.de/?p=15">Zu Teil 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cityclouds.de/2008/08/debian-etch-apache2-mit-php5-via-fastcgi-und-mehreren-vhosts-teil-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

