Webserver unter Windows installieren

veröffentlicht am 21. Juli 2010

Als Webentwickler bin ich zu Hause auf ein Testsystem angewiesen. Viele Leute empfehlen immer XAMPP als Entwicklungsserver. Aber XAMPP ist zumindest für mich der absolute Graus: man weiß nicht, welche Einstellungen vom „Standard“ abweichen, häufig zickt XAMPP rum und letztendlich muss man eh noch in der Konfiguration herumpfuschen, damit das System läuft, wie es soll. Ich vertraue da lieber auf meine jahrelang erprobte Eigeninstallation eines WAMP-Servers. Deshalb zeige ich euch heute, wie ich diese Umgebung immer aufsetze.

Pakete herunterladen

Zunächst einmal musst du folgende Pakete herunterladen:

  • Apache Webserver
    Win32 Binary including OpenSSL
  • MySQL-Server
    in der Essentials-Version, nach Klick auf Download unten auf » No thanks, just take me to the downloads! drücken
  • PHP
    unbedingt VC6 x86 Non  Thread Safe / Installer

Apache Webserver installieren

Als erstes kümmern wir uns um die Installation des Apache Webserver. Hierbei kommentiere ich nur die erklärungsbedürftigen Schritte.

Bei den Server-Informationen tragen wir folgende Daten ein. Zwar kann man auch die automatisch erkannten Werte belassen, so finde ich die Konfiguration aber einfach schicker.

PHP installieren

Nachdem der Apache Webserver installiert ist, installieren wir PHP. Auch hier kommentiere ich nur die erklärungsbedürftigen Schritte.

Da wir den Apache Webserver und nicht den IIS verwenden, müssen wir hier Other CGI auswählen. In etwas älteren PHP-Versionen konnte man hier automatisch den Apache Webserver einrichten lassen. Keine Ahnung, warum das Feature raus genommen wurde, aber der Mehraufwand ist nur marginal.

Kommen wir zum wohl wichtigsten Teil des PHP-Installers. Hier legt man fest, welche Module installiert werden sollen. Der Standard ist schon recht gut, hier mache ich nur zwei kleine Anpassungen. Unter Extensions aktivierst du Multi-Byte-String. Dieses Modul ermöglicht den Umgang mit Zeichenkodierungen, bei denen ein Zeichen über mehr als 8-Bit abgebildet wird. Somit kann man z.B. auch Unicode verwenden. Das Modul wird außerdem von PHPMyAdmin benötigt. Unter Extras kann man (wenn es gebraucht wird) außerdem PEAR Install aktivieren. Wofür PEAR gut ist, kann man wunderbar auf der PEAR-Seite bei Wikipedia nachlesen. Sollte man im Nachhinein feststellen, dass ein benötigtes Modul fehlt, kann man den Installer einfach starten und per Change weitere Module nachinstallieren.

MySQL-Server installieren

Zu guter Letzt wird ein MySQL-Server installiert. Auch hier beschreibe ich nur die erklärungsbedürftigen Schritte.

Hier legt man das root-Passwort für den Datenbank-Administrator fest. Für eine nicht öffentliche Testumgebung sollte ein kurzes, leicht zu merkendes Passwort ausreichen. Falls man das Passwort einmal vergessen sollte, kann man das MySQL root-Passwort zurücksetzen.

Apache einrichten

Bis jetzt mussten wir im Groben und Ganzen fast nur auf weiter klicken. Kommen wir zu dem etwas anspruchsvollerem Teil, nämlich der Einrichtung. Öffne dazu zunächst die Datei <Apache-Verzeichnis>\conf\httpd.conf. Zuerst sollte man die Raute-Zeichen vor den folgenden Zeilen entfernen:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

Durch die erste Zeile wird die Rewrite-Engine aktiviert, welche für heutige Webapplikationen eigentlich unabdingbar ist. Die zweite Zeile erlaubt die Nutzung von virtuellen Hosts (vhosts). Die Nutzung von vhosts bringt einige Vorteile, dazu aber später mehr.

Passen wir nun die Zugriffsrechte an. Ändere dabei den <Directory />-Block wie folgt um:

<Directory />
  Options FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

Diese Konfiguration erlaubt den uneingeschränkten nutzen der .htaccess-Datei und es darf jeder auf den Webserver zugreifen.

Damit PHP-Applikationen auch richtig funktionieren, müssen wir dem Apache-Webserver mitteilen, dass neben der index.html auch die Datei index.php als Einstiegspunkt einer Webseite dient:

<IfModule dir_module>
  DirectoryIndex index.html index.php
</IfModule>

Zwar könnte man auch in dieser Konfigurationsdatei vhosts anlegen, es ist aber üblich, diese Konfiguration in eine separate Datei auszulagern. Deshalb entfernen wir das Raute-Zeichen vor folgender Zeile:

Include conf/extra/httpd-vhosts.conf

Bisher haben wir dem Apache Webserver noch nicht mitgeteilt, wie er denn überhaupt PHP-Scripte ausführen kann. Dazu fügen wir folgende Zeilen ganz an das Ende der Datei. Eventuell müssen die Pfade angepasst werden. Beachte hierbei, dass die Pfade durch einen Slash / und nicht durch einen Backslash \ getrennt werden.

# PHP als CGI
ScriptAlias /php/ "C:/Program Files/PHP/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php-cgi.exe"

PHP einrichten

Jetzt sind wir erst einmal soweit fertig mit der grundlegenden Apache-Konfiguration, widmen wir uns der Einrichtung von PHP. Öffne dazu die Datei <PHP-Verzeichnis>\php.ini mit einem Texteditor. Bei einer Entwicklungsumgebung ist es sinnvoll, dass man ausführliche Fehlermeldungen bei der Ausführung eines PHP-Scripts bekommt. Ändere dazu folgende Einstellung:

display_errors = On

Damit Datums-Funktionen korrekt funktionieren, muss die Zeitzone festgelegt werden. Ändere dazu folgende Zeile:

date.timezone = Europe/Berlin

Damit wäre auch die grundlegende Konfiguration von PHP abgeschlossen.

vhosts einrichten

Wie ich vorher bereits angesprochen habe, arbeite ich mit virtuellen Hosts (vhosts). Dadurch kann ich zum Beispiel im Browser statt http://localhost/phpprojekt einfach http://phpprojekt eingeben. Die Verwendung von vhosts hat aber nicht nur den Vorteil, dass die URL kürzer ist, sondern ermöglicht es, für jedes Projekt unterschiedliche Webserver-Konfigurationen einzurichten. Außerdem simuliert man so „echte Domains“ und arbeitet nicht in irgendwelchen Unterordnern des DocumentRoot.

Zum Anlegen von vhosts öffnen wir die Datei <Apache-Verzeichnis>\conf\extra\httpd-vhosts.conf. Dort sind bereits 2 vhosts definiert, die wir getrost löschen können. Für jedes Projekt wird ein eigener vhost angelegt. Die minimalste vhost-Angabe wäre folgende:

<VirtualHost *:80>
  ServerName <Domain>
  DocumentRoot "<Pfad>"
</VirtualHost>

Nehmen wir an, wir möchten ein Projekt über http://phpprojekt erreichen und das Projekt liegt im Verzeichnis d:\Projects\PHPProjekt, so müssen wir folgende Konfiguration eintragen:

<VirtualHost *:80>
  ServerName phprojekt
  DocumentRoot "d:/Projects/PHPProjekt"
</VirtualHost>

Achte darauf, dass Pfadangaben durch ein Slash / getrennt werden.

Nach einem Neustart des Webservers werden alle bisher getätigten Einstelllungen übernommen und der vhost ist auch aktiviert. Allerdings fehlt und noch eine kleine Anpassung, damit http://phpprojekt auch erreichbar wird. Öffne dazu die Datei c:\Windows\System32\drivers\etc\hosts mit einem Texteditor und füge folgende Zeile ein:

127.0.0.1     phpprojekt

Dieser Eintrag teilt dem System mit, dass die Domain phprojekt auf dem eigenen Rechner liegt. Für jeden neuen vhost muss hier auch ein entsprechender Eintrag hinzugefügt werden. Es wird hierbei eventuell ein Neustart des Browsers erforderlich.

Testen

Zum Schluss testen wir, ob alles auch soweit funktioniert. Wenn wir annehmen, dass das eben exemplarisch gezeigte Projekt wirklich existiert, dann legst du in den angegebenen Ordner eine Datei namens index.php und schreibst folgenden PHP-Code hinein:

<?php phpinfo(); ?>

Wenn du nun im Browser dir URL http://phpprojekt aufrufst, sollte folgende Seite erscheinen:

Wenn diese Seite erscheint, ist dein lokaler Webserver vollständig eingerichtet und einsatzbereit.

Kommentare

hey,
wamp muss ich mal aus probieren.Hatte immer so meine Probleme mit XAMPP auf Windows 7

Danke dir

Kommentar #1 von Leni am 21. Juli 2010


XAMPP, WAMP, KRAMP… wieso nicht einfach LAMP ? ;)
Von mir aus auch gern in ner kleinen VM, dürfte immer noch das einfachste sein.

Kommentar #2 von Marco am 21. Juli 2010


Klar ist ein LAMP-Server das einfachste. Unter Ubuntu müsste ein

aptitude install mod-php5-mysql

ausreichen, um den kompletten Server aufzusetzen :D

Kommentar #3 von Patrick am 21. Juli 2010


Danke für die Anleitung, hatte vor Jahren mal Apache manuell aufgesetzt. Sehr komplex :( Daher hatte ich immer XAMPP benutzt, welcher aber irgendwie total lahm ist bei mir, k.A. warum.

Vielleicht sollte ich mal WAMP ausprobieren. Weißt Du ob man XAMPP und WAMP gleichzeitig nutzen kann?

Kommentar #4 von Timo am 26. Juli 2010


Sofern die Ports nicht kollidieren, sollte das laufen.

Kommentar #5 von Patrick am 26. Juli 2010


Weißt Du aus dem Stehgreif wo ich den Port des Apache ändere? Muß das dann sicher (wenn ich es verwende) auch in den vhosts machen.

Sieht die Zeile
127.0.0.1 phpprojekt

für vhosts immer gleich aus? Also z.B.

127.0.0.1 phpprojekt1
127.0.0.1 phpprojekt2
127.0.0.1 phpprojekt3

Werde das evtl. heute Abend mal in einer XP-VM testen ;-)

Kommentar #6 von Timo am 26. Juli 2010


Jupp sieht immer gleich aus. Also den Port musst du in der httpd.conf ändern. Dort steht „Listen 80“. Das musst du einfach abändern auf z.B. „Listen 8080“ und dann den Apache neustarten.

Kommentar #7 von Patrick am 26. Juli 2010


OK, solange Apache weiß wohin die Projekte gehen.

Ist ja doch noch bissl „Handarbeit“ notwendig…hätte mich gewundert, wenn das im Gegensatz zu früher anders geworden wäre. Ist eben kein Out-of-the-box ;-)

Vielleicht eine blöde Frage:
in dem Ordner wie z.B. c:/projekt1 lege ich nur die Projektdaten, welche auch in http://www.projekt1.de liegen würden – und nicht wie bei XAMPP in ein spezielles http-Verzeichnis?

Kommentar #8 von Timo am 26. Juli 2010


Es gibt beim XAMPP wahrscheinlich genauso wie in meiner Installation einen Ordner namens „htdocs“. Das ist der so genannte DocumentRoot des Webservers. In den könnte man zwar auch alle Projekte klatschen, dann aber per http://localhost/projekt aufrufen. Das ist aber kein „best practise“, deshalb zeige ich, wie es richtig geht.

Kommentar #9 von Patrick am 26. Juli 2010


Hab eben mal die Einrichtung vorgenommen wie in Deiner Anleitung. Bei der Apache Installation hab ich bereits auf 8080 gestellt. MySQL so eingestellt, dass er nicht automatisch als Dienst startet. Merkwürdigerweise läuft dennoch ein Dienst. Wohl der von XAMPP.

Wenn ich nun http://localhost:8080 eingebe kommt „Die Verbindung zum Server konnte nicht hergestellt werden“ :(

Kommentar #10 von Timo am 26. Juli 2010


Ah sorry, da hab ich noch was vergessen zu schreiben. Du musst auch beim vhost den Eintrag anpassen:

Dort musst du statt der 80 das 8080 eintragen. Versuch mal bitte nur * einzutragen und gucken ob das klappt. Ich meine, dass das auch so geht, dann könnte ich das hier anpassen um solche „Fehler“ zu vermeiden.

Kommentar #11 von Patrick am 26. Juli 2010


Hm okay, ohne richtig konfigurierte vhosts kommt auch nicht die „It works!“ Seite von Apache?

Merkwürdig ist, wenn ich das Konfig-Menü von Apache aus dem Startmenü starte zeigt er mir die alte Version aus dem XAMPP Paket an. Wenn ich nur localhost eingebe lande ich immer bei XAMPP. Es muß doch zu machen sein, dass ich den XAMPP-Apache-Dienst beende und den „neuen“ manuell starte.

Probiere das mit der vhosts aber mal aus später.

Kommentar #12 von Timo am 27. Juli 2010


Mir scheint, als fehlen dir ein paar Netzwerk-Grundlagen ;)
Du musst im Browser dann auch localhost:8080 angeben, um auf den Webserver auf dem Port 8080 zugreifen zu können.

Kommentar #13 von Patrick am 27. Juli 2010


Bzw. wenn du vhosts einsetzt, musst du http://projekt:8080 eingeben. Deshalb lässt man auch in der Regel keine zwei Webserver auf einem Computer laufen ;)

Kommentar #14 von Patrick am 27. Juli 2010


Ne, die Netzwerkgrundlagen fehlen nicht ;-)

Habe ja oben geschrieben „Wenn ich nun http://localhost:8080 eingebe…“ ;-)

Vielleicht werfe ich den XAMPP auch runter, wobei dann meine alten Projekte wohl nimmer laufen oder ich schauen muß, dass die User-Daten auf der neuen SQL-DB identisch sind zu der alten. Könnte es auch in der VM testen und die Daten dann ins Live-XP ziehen.

Kommentar #15 von Timo am 27. Juli 2010


BTW: hab lange das Firmennetzwerk meines Ausbildungsbetriebs betreut…also Netzwerkwissen is schon da ;-)

Kommentar #16 von Timo am 27. Juli 2010


Ach verdammt habe oben das :8080 überlesen. Ich würde ganz einfach einmal die Datenbanken + Webprojekte sichern, dann den XAMPP deinstallieren und die Daten dann umziehen. Da sollte eigtl nichts schiefgehen. Könnte höchstens passieren, dass du noch bestimmte Apache- oder PHP-Erweiterungen aktivieren musst.

Kommentar #17 von Patrick am 27. Juli 2010


Denke auch, dass es durch kopieren der DB und des htdocs-Ordner gehen könnte. Werde das aber dennoch auf einer VM testen, bevor ich es deinstalliere und es nacher nicht läuft. So weiß ich dann, dass es klappt ;-)

Kommentar #18 von Timo am 27. Juli 2010


Hast du inzwischen den Umstieg gewagt, Timo?

Kommentar #19 von Patrick am 09. November 2010


Hinterlasse einen Kommentar