Xampp Multidomain: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Die Seite wurde neu angelegt: „Category:Admin_HOWTOS Category:Installation_und_Updates Category:Sonstiges Dieses Tutorial beschreibt die Einrichtung einer lokalen Entwicklungsumbebu…“)
 
K (Sendmail & externer Mailserver: Aufbereitung)
 
(10 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
 
[[Category:Installation_und_Updates]]
 
[[Category:Installation_und_Updates]]
 
[[Category:Sonstiges]]
 
[[Category:Sonstiges]]
Dieses Tutorial beschreibt die Einrichtung einer lokalen Entwicklungsumbebung mit XAMPP für mehrere parallele oder mehrsprachige Contao Installationen.
+
Dieses Tutorial beschreibt die Einrichtung einer lokalen Entwicklungsumgebung mit XAMPP für mehrere parallele oder mehrsprachige Contao Installationen.
  
 
=Einrichtung=
 
=Einrichtung=
Zeile 20: Zeile 20:
 
Nach erfolgter Konfiguration wird das Setup-Script mit Eingabe eines ''x'' beendet.  
 
Nach erfolgter Konfiguration wird das Setup-Script mit Eingabe eines ''x'' beendet.  
  
Anschliessend ruft man die Datei ''C:\webdev\xampp\xampp-contol.exe'' auf und startet die Module ''Apache'', ''MySQL'' und ''Mercury''.
+
Anschließend ruft man die Datei ''C:\webdev\xampp\xampp-contol.exe'' auf und startet die Module ''Apache'', ''MySQL'' und ''Mercury''.
  
 
[[Datei:xampp-controlpanel.png|Controlpanel]]
 
[[Datei:xampp-controlpanel.png|Controlpanel]]
  
Wenn alle Module gestartet sind, wird dieser Status im Controlpanel angezeigt.
+
Wenn alle Module gestartet sind, wird dieser Status im Control Panel angezeigt.
  
 
[[Datei:xampp-controlpanelstarted.png|Controlpanel mit gestarteten Modulen]]
 
[[Datei:xampp-controlpanelstarted.png|Controlpanel mit gestarteten Modulen]]
Zeile 64: Zeile 64:
 
[[Datei:xampp-hosts.png|Datei hosts bearbeiten]]
 
[[Datei:xampp-hosts.png|Datei hosts bearbeiten]]
  
Öffnet man nun eine der neu angelegten Hostnamen im Browser, z.B. ''<nowiki>http://xampp</nowiki>'', dann sollte die gleiche Ausgabe wie bei Aufruf von ''<nowiki>http://localhost</nowiki>'' erscheinen. Bei der Wahl der Hostnamen sollte man darauf achten, dass keine Überschneidung mit reell existierenden Domains entstehen. Trägt man beispielweise
+
Öffnet man nun eine der neu angelegten Hostnamen im Browser, z.B. ''<nowiki>http://xampp</nowiki>'', dann sollte die gleiche Ausgabe wie bei Aufruf von ''<nowiki>http://localhost</nowiki>'' erscheinen. Bei der Wahl der Hostnamen sollte man darauf achten, dass keine Überschneidung mit reell existierenden Domains entstehen. Trägt man beispielsweise
<pre>127.0.0.1 www.contao.org</pre>
+
 
 +
<source lang="text">
 +
127.0.0.1 www.contao.org
 +
</source>
 +
 
 
in die hosts-Datei ein, wird man von nun ab den lokalen Webserver unter der Adresse www.contao.org erreichen, und nicht mehr die Contao-Website.<br />
 
in die hosts-Datei ein, wird man von nun ab den lokalen Webserver unter der Adresse www.contao.org erreichen, und nicht mehr die Contao-Website.<br />
 
Es gibt einige spezielle hosts-Editoren, die das Editieren erleichtern sollen. Google weiß mehr darüber.
 
Es gibt einige spezielle hosts-Editoren, die das Editieren erleichtern sollen. Google weiß mehr darüber.
Zeile 76: Zeile 80:
  
 
Zuerst muss man den Apache anweisen, virtuelle Hosts über die Hostnamen aufzulösen. Dazu wird das Kommentarzeichen vor ''NameVirtualHost'' entfernt.
 
Zuerst muss man den Apache anweisen, virtuelle Hosts über die Hostnamen aufzulösen. Dazu wird das Kommentarzeichen vor ''NameVirtualHost'' entfernt.
<pre>
+
 
 +
<source lang="text">
 
#
 
#
 
# Use name-based virtual hosting.
 
# Use name-based virtual hosting.
 
#
 
#
 
NameVirtualHost *:80
 
NameVirtualHost *:80
</pre>
+
</source>
Die Zugriffsrechte für das Web-Verzeichniss schränken wir entsprechend ein:
+
 
<pre>
+
Die Zugriffsrechte für das Web-Verzeichnis schränken wir entsprechend ein:
 +
 
 +
<source lang="text">
 
# Zugriff auf das webfiles-Verzeichnis nur vom lokalen Rechner zulassen
 
# Zugriff auf das webfiles-Verzeichnis nur vom lokalen Rechner zulassen
 
<Directory C:/webdev/webfiles>
 
<Directory C:/webdev/webfiles>
Zeile 90: Zeile 97:
 
     AllowOverride All
 
     AllowOverride All
 
</Directory>
 
</Directory>
</pre>
+
</source>
 +
 
 
Jetzt erstellt man den ersten vHost-Eintrag. Diesen benutzt man für das normale ''localhost''-Verhalten. Es sollen also einfach alle Dateien aufgelistet werden. Da dies der erste vHost-Eintrag ist, erhält er auch eine Sonderstellung. Passt kein anderer vHost-Eintrag auf die Anfrage, wird dieser stellvertretend benutzt.
 
Jetzt erstellt man den ersten vHost-Eintrag. Diesen benutzt man für das normale ''localhost''-Verhalten. Es sollen also einfach alle Dateien aufgelistet werden. Da dies der erste vHost-Eintrag ist, erhält er auch eine Sonderstellung. Passt kein anderer vHost-Eintrag auf die Anfrage, wird dieser stellvertretend benutzt.
  
 
Ein weiteres Gimmik ist das Rewrite-Script. Es dient dazu, Subdomains auf Verzeichnisse abzubilden. Beispielweise wird die Anfrage ''<nowiki>http://verzeichnis.local/index.php</nowiki>'' auf die Datei ''C:\webdev\webfiles\*verzeichnis*\index.php'' abgebildet. Dies hat den großen Vorteil, dass ein neuer Subdomain-vHost ohne Anpassung der Serverkonfiguration erstellt werden kann. Es muss lediglich das Verzeichnis erstellt werden.
 
Ein weiteres Gimmik ist das Rewrite-Script. Es dient dazu, Subdomains auf Verzeichnisse abzubilden. Beispielweise wird die Anfrage ''<nowiki>http://verzeichnis.local/index.php</nowiki>'' auf die Datei ''C:\webdev\webfiles\*verzeichnis*\index.php'' abgebildet. Dies hat den großen Vorteil, dass ein neuer Subdomain-vHost ohne Anpassung der Serverkonfiguration erstellt werden kann. Es muss lediglich das Verzeichnis erstellt werden.
<pre>
+
 
 +
<source lang="text">
 
### Default vHost
 
### Default vHost
 
<VirtualHost *:80>
 
<VirtualHost *:80>
Zeile 116: Zeile 125:
 
     RewriteRule ^([^.]+)\.local(.*)    C:/webdev/webfiles/$1$2
 
     RewriteRule ^([^.]+)\.local(.*)    C:/webdev/webfiles/$1$2
 
</VirtualHost>
 
</VirtualHost>
</pre>
+
</source>
 +
 
 
Nun wird ein vHost zum Zugriff auf die XAMPP-Weboberfläche erstellt:
 
Nun wird ein vHost zum Zugriff auf die XAMPP-Weboberfläche erstellt:
<pre>
+
 
 +
<source lang="text">
 
### XAMPP vHost
 
### XAMPP vHost
 
<VirtualHost *:80>
 
<VirtualHost *:80>
Zeile 124: Zeile 135:
 
     ServerName xampp
 
     ServerName xampp
 
</VirtualHost>
 
</VirtualHost>
</pre>
+
</source>
 +
 
 
Ein vHost zum Zugriff auf eine Contao-Umgebung:
 
Ein vHost zum Zugriff auf eine Contao-Umgebung:
<pre>
+
 
 +
<source lang="text">
 
### contao vHost
 
### contao vHost
 
<VirtualHost *:80>
 
<VirtualHost *:80>
Zeile 132: Zeile 145:
 
     ServerName contao
 
     ServerName contao
 
</VirtualHost>
 
</VirtualHost>
</pre>
+
</source>
 +
 
 
Diese vHost dient zum Zugriff auf das Verzeichnis multilang. Man achte auf den ServerAlias, welcher es ermöglicht, beliebige Subdomain-Hostnamen der Form xxx.multilang anzulagen (de.multilang, en.multilang,...).
 
Diese vHost dient zum Zugriff auf das Verzeichnis multilang. Man achte auf den ServerAlias, welcher es ermöglicht, beliebige Subdomain-Hostnamen der Form xxx.multilang anzulagen (de.multilang, en.multilang,...).
<pre>
+
 
 +
<source lang="text">
 
### multilang vHost
 
### multilang vHost
 
<VirtualHost *:80>
 
<VirtualHost *:80>
Zeile 141: Zeile 156:
 
     ServerAlias *.multilang
 
     ServerAlias *.multilang
 
</VirtualHost>
 
</VirtualHost>
</pre>
+
</source>
 +
 
 
Zusammenfassung der Syntax:
 
Zusammenfassung der Syntax:
 
*Ein &lt;VirtualHost *:80&gt;-Block pro vHost
 
*Ein &lt;VirtualHost *:80&gt;-Block pro vHost
Zeile 148: Zeile 164:
 
*''DocumentRoot'' steht für das physische Verzeichnis der Dateien
 
*''DocumentRoot'' steht für das physische Verzeichnis der Dateien
  
Natürlich gibts noch eine Vielzahl weiterer Konfigurationsoptionen, diese können in der [http://httpd.apache.org/docs/ Apache-Dokumentation] nachgelesen werden.
+
Natürlich gibt es noch eine Vielzahl weiterer Konfigurationsoptionen, diese können in der [http://httpd.apache.org/docs/ Apache-Dokumentation] nachgelesen werden.
  
Nachdem die Datei angepasst wurde, wird der Syntax in der Eingabeaufforderung mit ''httpd.exe -S'' überprüft (unter C:\webdev\xampp\apache\bin). Sind keine Fehler aufgetreten, kann der Webserver über das XAMPP Control Panel neugestartet werden.
+
Nachdem die Datei angepasst wurde, wird der Syntax in der Eingabeaufforderung mit ''httpd.exe -S'' überprüft (unter C:\webdev\xampp\apache\bin). Sind keine Fehler aufgetreten, kann der Webserver über das XAMPP Control Panel neu gestartet werden.
  
 
Jetzt sollten folgende vHost aktiv sein:
 
Jetzt sollten folgende vHost aktiv sein:
 
*''<nowiki>http://localhost</nowiki>'' -> ''C:\webdev\webfiles'' - Mit Auflistung des Inhalts. Praktisch, wenn man für etwas Kleines keinen extra vHost anlegen möchte.
 
*''<nowiki>http://localhost</nowiki>'' -> ''C:\webdev\webfiles'' - Mit Auflistung des Inhalts. Praktisch, wenn man für etwas Kleines keinen extra vHost anlegen möchte.
 
*''<nowiki>http://contao</nowiki>'' -> ''C:\webdev\webfiles\contao''
 
*''<nowiki>http://contao</nowiki>'' -> ''C:\webdev\webfiles\contao''
*''<nowiki>http://[ordner].local</nowiki>'' -> C:\webdev\webfiles\[ordner] - wobei [ordner] belieb sein kann, es darf nur kein Punkt oder Sonderzeichen enthalten sein. Damit hat man praktisch einen Wildcard-vHost ohne wirklich die Serverkonfiguration ändern zu müssen. '''Wichtig:''' ''[ordner].local'' muss auch in der hosts-Datei notiert werden.
+
*''<nowiki>http://[ordner].local</nowiki>'' -> C:\webdev\webfiles\[ordner] - wobei [ordner] beliebig sein kann, es darf nur kein Punkt oder Sonderzeichen enthalten sein. Damit hat man praktisch einen Wildcard-vHost ohne wirklich die Serverkonfiguration ändern zu müssen. '''Wichtig:''' ''[ordner].local'' muss auch in der hosts-Datei notiert werden.
 
*''<nowiki>http://xampp</nowiki>'' -> ''C:\webdev\xampp\htdocs'' - Über diesen vHost kann man auf die XAMPP-Weboberfläche zugreifen.
 
*''<nowiki>http://xampp</nowiki>'' -> ''C:\webdev\xampp\htdocs'' - Über diesen vHost kann man auf die XAMPP-Weboberfläche zugreifen.
*''<nowiki>http://*.multilang</nowiki>'' -> ''C:\webdev\webfiles\mutlilang'', auch hier kann man als Subdomain alles angeben, was man in der Hosts-Datei notiert hat. Besonderheit zum oberen Beispiel: Es wird immer das selbe Verzeichnis und damit die selbe Contao-Umgebung referenziert. Damit kann man also mehrspracheige oder mehrseitige Auftritte erstellen.
+
*''<nowiki>http://*.multilang</nowiki>'' -> ''C:\webdev\webfiles\mutlilang'', auch hier kann man als Subdomain alles angeben, was man in der Hosts-Datei notiert hat. Besonderheit zum oberen Beispiel: Es wird immer das selbe Verzeichnis und damit die selbe Contao-Umgebung referenziert. Damit kann man also mehrsprachige oder mehrseitige Auftritte erstellen.
  
 
=Sicherheitseinstellungen - Apache=
 
=Sicherheitseinstellungen - Apache=
Zeile 164: Zeile 180:
 
==Zugriff von außen sperren==
 
==Zugriff von außen sperren==
 
In der Datei ''C:\webdev\xampp\apache\conf\httpd.conf'' befindet sich ab der Zeile 42:
 
In der Datei ''C:\webdev\xampp\apache\conf\httpd.conf'' befindet sich ab der Zeile 42:
<pre>
+
 
 +
<source lang="text">
 
# Change this to Listen on specific IP addresses as shown below to  
 
# Change this to Listen on specific IP addresses as shown below to  
 
# prevent Apache from glomming onto all bound IP addresses.
 
# prevent Apache from glomming onto all bound IP addresses.
Zeile 171: Zeile 188:
 
#Listen [::]:80
 
#Listen [::]:80
 
Listen 80
 
Listen 80
</pre>
+
</source>
 +
 
 
Hier ändert man den ''Listen''-Wert auf:
 
Hier ändert man den ''Listen''-Wert auf:
Listen 127.0.0.1:80
+
 
 +
<source lang="text">
 +
Listen 127.0.0.1:80
 +
</source>
 +
 
 
Das veranlasst den Apache nur noch Verbindungen über das ''localhost''-Interface anzunehmen und keine Verbindungen, die über das Netzwerk von anderen Computer kommen.
 
Das veranlasst den Apache nur noch Verbindungen über das ''localhost''-Interface anzunehmen und keine Verbindungen, die über das Netzwerk von anderen Computer kommen.
  
 
In der Datei ''C:\webdev\xampp\apache\conf\extra\httpd-ssl.conf'' steht die Einstellung für HTTPS, also verschlüsselte Seiten. Hier muss in Zeile 41
 
In der Datei ''C:\webdev\xampp\apache\conf\extra\httpd-ssl.conf'' steht die Einstellung für HTTPS, also verschlüsselte Seiten. Hier muss in Zeile 41
Listen 443
+
 
 +
<source lang="text">
 +
Listen 443
 +
</source>
 +
 
 
in
 
in
Listen 127.0.0.1:443
+
 
 +
<source lang="text">
 +
Listen 127.0.0.1:443
 +
</source>
 +
 
 
geändert werden.
 
geändert werden.
  
 
=Sicherheitseinstellungen - MySQL=
 
=Sicherheitseinstellungen - MySQL=
 
Auch dem MySQL-Server verbietet man den Zugriff von außen. In die Datei ''C:\webdev\xampp\mysql\bin\my.ini'' fügt man folgenden Zeile unter der Sektion ''[mysqld]'' ein:
 
Auch dem MySQL-Server verbietet man den Zugriff von außen. In die Datei ''C:\webdev\xampp\mysql\bin\my.ini'' fügt man folgenden Zeile unter der Sektion ''[mysqld]'' ein:
 +
 +
<source lang="text">
 
  bind-address = 127.0.0.1
 
  bind-address = 127.0.0.1
 +
</source>
 +
 
Damit sieht die Konfigurationsdatei ab Zeile 27 so aus:
 
Damit sieht die Konfigurationsdatei ab Zeile 27 so aus:
<pre>
+
 
 +
<source lang="text">
 
# The MySQL server
 
# The MySQL server
 
[mysqld]
 
[mysqld]
Zeile 205: Zeile 240:
  
 
default-time-zone      = "Europe/Paris"
 
default-time-zone      = "Europe/Paris"
</pre>
+
</source>
 +
 
 
Ein Neustart des MySQL-Servers macht die Konfiguration aktiv.
 
Ein Neustart des MySQL-Servers macht die Konfiguration aktiv.
  
 
=.htaccess=
 
=.htaccess=
 
Standardmässig ist die Datei ''.htaccess'' nicht in der Contao-Installation aktiv. Es liegt jedoch eine vorbereitete Datei bereit; sie lautet ''.htaccess.default''. Diese muss in ''.htaccess'' umbenannt werden. Die Datei ''.htaccess'' aus dem Basisverzeichnis der Contao-Installation dient hauptsächlich dazu, schönere URLs zu erzeugen. Damit das Rewriting von Webserver entsprechend ausgeführt werden kann, muss die Option ''RewriteBase'' angepasst werden. Sie besagt, in welchem Unterverzeichnis die Installation bezüglich der Domain liegt. Hat man das System in einem Unterverzeichnis installiert (''<nowiki>http://localhost/contao/</nowiki>''), dann muss die ''RewriteBase'' auf ''/contao/'' geändert werden. Die veränderte ''.htaccess'' sieht dann ab Zeile 39 wie folgt aus:
 
Standardmässig ist die Datei ''.htaccess'' nicht in der Contao-Installation aktiv. Es liegt jedoch eine vorbereitete Datei bereit; sie lautet ''.htaccess.default''. Diese muss in ''.htaccess'' umbenannt werden. Die Datei ''.htaccess'' aus dem Basisverzeichnis der Contao-Installation dient hauptsächlich dazu, schönere URLs zu erzeugen. Damit das Rewriting von Webserver entsprechend ausgeführt werden kann, muss die Option ''RewriteBase'' angepasst werden. Sie besagt, in welchem Unterverzeichnis die Installation bezüglich der Domain liegt. Hat man das System in einem Unterverzeichnis installiert (''<nowiki>http://localhost/contao/</nowiki>''), dann muss die ''RewriteBase'' auf ''/contao/'' geändert werden. Die veränderte ''.htaccess'' sieht dann ab Zeile 39 wie folgt aus:
<pre>
+
 
 +
<source lang="text">
 
   # Uncomment the following line to set the RewriteBase.
 
   # Uncomment the following line to set the RewriteBase.
 
   ##
 
   ##
 
   RewriteBase /contao/
 
   RewriteBase /contao/
</pre>
+
</source>
  
 
=Mercury - Mailserver=
 
=Mercury - Mailserver=
Zeile 243: Zeile 280:
  
 
Die XAMPP-Weboberfläche (<nowiki>http://xampp</nowiki>) bietet den Menüpunkt Mercury Mail, hier kann man sich über PHP eine E-Mail zustellen, um die Konfiguration zu testen.
 
Die XAMPP-Weboberfläche (<nowiki>http://xampp</nowiki>) bietet den Menüpunkt Mercury Mail, hier kann man sich über PHP eine E-Mail zustellen, um die Konfiguration zu testen.
 +
 +
=Sendmail & externer Mailserver=
 +
Alternativ zu einem eigenen lokalen Mailserver, kann ein bestehender Mailserver (z.B. von google mail) verwendet werden. Man erspart sich damit das Einrichten eines eigenen Mailservers und Mail-Accounts. Allerdings ist man dann von einer Verbindung zum Mailserver abhängig, das heisst also man braucht Internet, um Mails zu senden / empfangen.
 +
 +
==Verwenden von gmail als Mail-Server==
 +
Die hier beschriebenen Schritte sind angelehnt an http://www.projectpier.org/node/817.
 +
 +
* sendmail in der php.ini aktivieren (xampp/php/php.ini). Der Abschnitt [mail function] sieht so aus:
 +
<source lang="ini">
 +
[mail function]
 +
; For Win32 only.
 +
; Eventuell Pfad zu sendmail.exe anpassen
 +
sendmail_path = "\"D:\Programme\xampp\sendmail\sendmail.exe\" -t"
 +
SMTP = localhost
 +
smtp_port = 25
 +
</source>
 +
 +
* sendmail.ini (im gleichen Verzeichnis wie sendmail.exe) anpassen. Dafür überschreibt man den Inhalt mit:
 +
<source lang="ini">
 +
[sendmail]
 +
smtp_server=localhost
 +
smtp_port=25
 +
default_domain=gmail.com
 +
error_logfile=error.log
 +
auth_username=[deingmailname]@gmail.com
 +
auth_password=[deingmailpasswort]
 +
pop3_server=
 +
pop3_username=
 +
pop3_password=
 +
</source>
 +
 +
* Installation von stunnel
 +
stunnel muss von der Projekthomepage [http://www.stunnel.org/?page=downloads gedownloaded] und installiert werden.<br />
 +
Anschliessend muss die Konfigurationsdatei von stunnel angepasst werden. Diese findet man über ''Start->stunnel->edit stunnel.conf'' oder man öffnet die Datei direkt im Verzeichnis ''C:\Program Files\stunnel\stunnel.conf''.<br />
 +
Nun überschreibt man den Inhalt der config mit:
 +
<source lang="ini">
 +
cert = stunnel.pem
 +
socket = l:TCP_NODELAY=1
 +
socket = r:TCP_NODELAY=1
 +
debug = 7
 +
output = stunnel.log
 +
client = yes
 +
[smtpg]
 +
accept = 127.0.0.1:25
 +
connect = smtp.gmail.com:465
 +
;or connect = 72.14.215.109:465 so there's no DNS lookup
 +
</source>
 +
 +
* XAMPP neu starten
 +
* stunnel starten (Startmenü)
 +
 +
Es ist nun von Contao aus möglich, welches auf XAMPP läuft, Mails zu versenden, sofern eine Verbindung zum gmail Server besteht.
  
 
=Umzug auf ein Live-System=
 
=Umzug auf ein Live-System=
Zeile 257: Zeile 346:
  
 
=Credits=
 
=Credits=
Die Orginal-Anleitung wurde erstellt von Psi ([http://www.psitrax.de/ Psitrax Websolutions])<br />
+
Die Orginal-Anleitung wurde erstellt von [[Benutzer:Psi|Psi]] ([http://www.4wardmedia.de 4ward.media])<br />
 
Div. Modifikationen und Anpassungen an die aktuelle XAMPP-Version / Contao-Version durch manitougs
 
Div. Modifikationen und Anpassungen an die aktuelle XAMPP-Version / Contao-Version durch manitougs
 +
 +
[[Datei:4ward signature.png|link=http://www.4wardmedia.de|4ward.media]]

Aktuelle Version vom 31. Mai 2011, 00:59 Uhr

Dieses Tutorial beschreibt die Einrichtung einer lokalen Entwicklungsumgebung mit XAMPP für mehrere parallele oder mehrsprachige Contao Installationen.

Einrichtung

Bei dieser Anleitung wird mit einem portablen XAMPP Zip-Paket in Windows gearbeitet (aktuelle Version: 1.7.3). XAMPP steht für Apache, MySQL, PHP und Pearl und stellt somit ein vorkonfiguriertes Webserver-Paket bereit. Neben den eigentlichen Servern bringt XAMPP auch ein paar nette Konfigurationstools wie den PhpMyAdmin oder einen Mailserver mit. Die Pakete gibt es für Windows, Linux sowie für den Mac.

Das Zip-Paket wird in C:\webdev entpackt, was auch ausdrücklich empfohlen wird. Gerade bei Verzeichnissen mit Leer- oder Sonderzeichen (z. B. C:\Program Files\xampp) könnte es später zu Problemen kommen. Nach dem Entpacken ruft man die Datei C:\webdev\xampp\setup_xampp.bat, welche die Konfiguration von XAMPP übernimmt.

Nach erfolgter Konfiguration wird das Setup-Script mit Eingabe eines x beendet.

Anschließend ruft man die Datei C:\webdev\xampp\xampp-contol.exe auf und startet die Module Apache, MySQL und Mercury.

Controlpanel

Wenn alle Module gestartet sind, wird dieser Status im Control Panel angezeigt.

Controlpanel mit gestarteten Modulen

Ruft man jetzt die Adresse http://localhost im Browser auf, sollte man das XAMPP-Logo mit einer Sprachauswahl sehen. Nach Auswahl der entsprechenden Sprache erscheint die eigentliche XAMPP-Seite, bei der unter dem Menüpunkt Status Informationen über einzelne Module ausgegeben werden.

XAMPP Status

Wichtig ist hier nur, dass MySQL und PHP AKTIVIERT ist. Der Menüpunkt phpinfo() zeigt viele Informationen über die installierte PHP-Version und deren Module an; hier sollte eine Version ab 5.2 zu sehen sein.

Zum Schluss sollte man noch über die Seite http://localhost/security/xamppsecurity.php das ROOT-Passwort für den MySQL-Server setzen. Nebenbei kann man auch das XAMPP-Verzeichnis mit einem Passwortschutz versehen. Diese Aktionen sind zwar für die Funktionalität nicht zwingend nötig, aber aus Sicherheitsgründen zu empfehlen. "Paranoia is applied security" … Nach dem Ändern des Passwortes muss über das XAMPP Control Panel der MySQL-Server neu gestartet werden, damit die Passwortänderung wirksam wird.

Installation einer Contao Umgebung

Um Contao installieren zu können, muss zuerst ein Contao-Paket von der Projekt-Homepage heruntergeladen und in das Verzeichnis C:\webdev\xampp\htdocs\contao entpackt werden.
Anschließend wird über die Adresse http://localhost/phpmyadmin/ eine neue Datenbank inkl. neuen Datenbank-Benutzer angelegt. Aus Sicherheitsgründen sollte man für die Datenbank den ROOT-Benutzer nicht verwenden.
Über den Reiter Rechte kommt man zur Benutzerübersicht. In dieser Übersicht findet man einen Button Neuen Benutzer hinzufügen. Hier kann man sehr bequem einen Benutzer samt Datenbank anlegen. Als Host wählt man immer Lokal, da Webserver und Datenbanksystem auf dem selben Rechner laufen.

Neuen Datenbank Benutzer inkl. Datenbank erstellen

Jetzt kann mit der Installation von Contao begonnen werden.

Im Grunde könnte man auf diese Art beliebig viele Contao-Umgebungen parallel betreiben, natürlich in jeweils verschiedenen Verzeichnissen. Hier bestehen aber zwei grundsätzliche Probleme:

  • Contao ist in einem Unterverzeichnis installiert, was an einigen Stellen zu Problemen führen kann. Contao ist hier aber sehr kulant.
  • Auf diese Art ist pro Contao-Umgebung nur eine Seite realisierbar.

Ausbau auf verschiedene Hostnamen

Um die oben genannten Probleme zu beheben, kann für jede Contao Umgebung ein eigener Hostnamen angelegt werden, also ein Alias zu localhost. Hostnamen sind für den Menschen da und werden vom Betriebssystem automatisch zu einer IP-Adresse aufgelöst. Der localhost ist dabei voreingestellt und zeigt immer auf 127.0.0.1, was per Definition immer der Computer ist, auf dem die Auflösung statt findet. Diese Zuordnung macht sich der Webserver zu nutze und unterscheidet damit die verschiedenen Websites.

hosts-Datei

Es gibt verschieden Instanzen der Namensauflösung, der erste Schritt hierbei ist in jedem Fall die sogenannte hosts-Datei, welche in jedem System existiert und erst wenn hier keine Entsprechung gefunden werden konnten, werden weitere DNS-Server befragt.

Um nun eigene Hostnamen für die IP 127.0.0.1 einzurichten, öffnet man mit einem Editor die Datei hosts (ohne Endung), welche bei

  • Windows unter C:\WINDOWS\system32\drivers\etc\
  • Linux und Mac unter /etc/

zu finden ist. Um die Datei zu ändern, sind Administrator bzw. ROOT Rechte notwendig.

Für jede Hostnamen<->IP-Adresse-Kombination steht eine Zeile, wobei die Hostnamen eindeutig sein müssen. Es dürfen also keine zwei identische Hostnamen auf eine IP-Adresse zeigen.

Datei hosts bearbeiten

Öffnet man nun eine der neu angelegten Hostnamen im Browser, z.B. http://xampp, dann sollte die gleiche Ausgabe wie bei Aufruf von http://localhost erscheinen. Bei der Wahl der Hostnamen sollte man darauf achten, dass keine Überschneidung mit reell existierenden Domains entstehen. Trägt man beispielsweise

127.0.0.1		www.contao.org

in die hosts-Datei ein, wird man von nun ab den lokalen Webserver unter der Adresse www.contao.org erreichen, und nicht mehr die Contao-Website.
Es gibt einige spezielle hosts-Editoren, die das Editieren erleichtern sollen. Google weiß mehr darüber.

vHost-Konfiguration

Um die verschiedenen Hostnamen den unterschiedlichen Contao-Umgebungen zuzuweisen, muss der Webserver entsprechend konfiguriert werden. Über die sogenannten virtuellen Hosts pflegt der Apache die Unterscheidung zwischen den einzelnen Umgebungen.

Hierzu stellt XAMPP die Konfigurationsdatei C:\webdev\xampp\apache\conf\extra\httpd-vhosts.conf bereit, die ebenfalls per Editor bearbeitet wird. Man kann hier die Gelegenheit nutzen, um das htdocs-Verzeichnis mit den Contao-Dateien an einen anderen Ort zu legen, z.B. C:\webdev\webfiles. Die restlichen XAMPP-htdocs sollte man unberührt lassen.

Zuerst muss man den Apache anweisen, virtuelle Hosts über die Hostnamen aufzulösen. Dazu wird das Kommentarzeichen vor NameVirtualHost entfernt.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

Die Zugriffsrechte für das Web-Verzeichnis schränken wir entsprechend ein:

# Zugriff auf das webfiles-Verzeichnis nur vom lokalen Rechner zulassen
<Directory C:/webdev/webfiles>
    Order deny,allow
    Allow from 127.0.0.1
    AllowOverride All
</Directory>

Jetzt erstellt man den ersten vHost-Eintrag. Diesen benutzt man für das normale localhost-Verhalten. Es sollen also einfach alle Dateien aufgelistet werden. Da dies der erste vHost-Eintrag ist, erhält er auch eine Sonderstellung. Passt kein anderer vHost-Eintrag auf die Anfrage, wird dieser stellvertretend benutzt.

Ein weiteres Gimmik ist das Rewrite-Script. Es dient dazu, Subdomains auf Verzeichnisse abzubilden. Beispielweise wird die Anfrage http://verzeichnis.local/index.php auf die Datei C:\webdev\webfiles\*verzeichnis*\index.php abgebildet. Dies hat den großen Vorteil, dass ein neuer Subdomain-vHost ohne Anpassung der Serverkonfiguration erstellt werden kann. Es muss lediglich das Verzeichnis erstellt werden.

### Default vHost
<VirtualHost *:80>
    DocumentRoot C:/webdev/webfiles
    ServerName localhost
 
    <Directory C:/webdev/webfiles>
        Options +Indexes
    </Directory>
 
    # Der vHost soll auch alle Anfragen annehmen, die mit ".local" enden.
    ServerAlias *.local  
 
    # Script zur Umleitung in das Verzeichnis, welches über dem Präfix von ".local" referenziert wird
    # Bsp.: neu.local nutzt als DocumentRoot C:/webdev/webfiles/neu
    UseCanonicalName Off
    RewriteEngine On
    RewriteCond %{HTTP_HOST}            ^[^.]+\.local$
    RewriteCond %{REQUEST_URI}          !^/icons
    RewriteRule ^(.+)                   %{HTTP_HOST}$1      [C]
    RewriteRule ^([^.]+)\.local(.*)     C:/webdev/webfiles/$1$2
</VirtualHost>

Nun wird ein vHost zum Zugriff auf die XAMPP-Weboberfläche erstellt:

### XAMPP vHost
<VirtualHost *:80>
    DocumentRoot c:/webdev/xampp/htdocs
    ServerName xampp
</VirtualHost>

Ein vHost zum Zugriff auf eine Contao-Umgebung:

### contao vHost
<VirtualHost *:80>
    DocumentRoot c:/webdev/webfiles/contao
    ServerName contao
</VirtualHost>

Diese vHost dient zum Zugriff auf das Verzeichnis multilang. Man achte auf den ServerAlias, welcher es ermöglicht, beliebige Subdomain-Hostnamen der Form xxx.multilang anzulagen (de.multilang, en.multilang,...).

### multilang vHost
<VirtualHost *:80>
    DocumentRoot c:/webdev/webfiles/multilang
    ServerName multilang
    ServerAlias *.multilang
</VirtualHost>

Zusammenfassung der Syntax:

  • Ein <VirtualHost *:80>-Block pro vHost
  • ServerName gibt den verwendeten Hostnamen an
  • ServerAlias gibt weitere Hostnamen an, für die dieser vHost gilt. Hier sind Wildcards erlaubt
  • DocumentRoot steht für das physische Verzeichnis der Dateien

Natürlich gibt es noch eine Vielzahl weiterer Konfigurationsoptionen, diese können in der Apache-Dokumentation nachgelesen werden.

Nachdem die Datei angepasst wurde, wird der Syntax in der Eingabeaufforderung mit httpd.exe -S überprüft (unter C:\webdev\xampp\apache\bin). Sind keine Fehler aufgetreten, kann der Webserver über das XAMPP Control Panel neu gestartet werden.

Jetzt sollten folgende vHost aktiv sein:

  • http://localhost -> C:\webdev\webfiles - Mit Auflistung des Inhalts. Praktisch, wenn man für etwas Kleines keinen extra vHost anlegen möchte.
  • http://contao -> C:\webdev\webfiles\contao
  • http://[ordner].local -> C:\webdev\webfiles\[ordner] - wobei [ordner] beliebig sein kann, es darf nur kein Punkt oder Sonderzeichen enthalten sein. Damit hat man praktisch einen Wildcard-vHost ohne wirklich die Serverkonfiguration ändern zu müssen. Wichtig: [ordner].local muss auch in der hosts-Datei notiert werden.
  • http://xampp -> C:\webdev\xampp\htdocs - Über diesen vHost kann man auf die XAMPP-Weboberfläche zugreifen.
  • http://*.multilang -> C:\webdev\webfiles\mutlilang, auch hier kann man als Subdomain alles angeben, was man in der Hosts-Datei notiert hat. Besonderheit zum oberen Beispiel: Es wird immer das selbe Verzeichnis und damit die selbe Contao-Umgebung referenziert. Damit kann man also mehrsprachige oder mehrseitige Auftritte erstellen.

Sicherheitseinstellungen - Apache

Abschließend werden noch ein paar Einstellungen zur Sicherheit vorgenommen.

Zugriff von außen sperren

In der Datei C:\webdev\xampp\apache\conf\httpd.conf befindet sich ab der Zeile 42:

# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 0.0.0.0:80
#Listen [::]:80
Listen 80

Hier ändert man den Listen-Wert auf:

Listen 127.0.0.1:80

Das veranlasst den Apache nur noch Verbindungen über das localhost-Interface anzunehmen und keine Verbindungen, die über das Netzwerk von anderen Computer kommen.

In der Datei C:\webdev\xampp\apache\conf\extra\httpd-ssl.conf steht die Einstellung für HTTPS, also verschlüsselte Seiten. Hier muss in Zeile 41

Listen 443

in

Listen 127.0.0.1:443

geändert werden.

Sicherheitseinstellungen - MySQL

Auch dem MySQL-Server verbietet man den Zugriff von außen. In die Datei C:\webdev\xampp\mysql\bin\my.ini fügt man folgenden Zeile unter der Sektion [mysqld] ein:

 bind-address = 127.0.0.1

Damit sieht die Konfigurationsdatei ab Zeile 27 so aus:

# The MySQL server
[mysqld]
basedir                 = "/webdev/xampp/mysql/"
datadir                 = "/webdev/xampp/mysql/data/"
port		            = 3306
socket		            = "MySQL"
skip-locking
key_buffer              = 16M
max_allowed_packet      = 1M
table_cache             = 64
sort_buffer_size        = 512K
net_buffer_length       = 8K
read_buffer_size        = 256K
read_rnd_buffer_size    = 512K
myisam_sort_buffer_size = 8M
bind-address = 127.0.0.1
 
default-time-zone       = "Europe/Paris"

Ein Neustart des MySQL-Servers macht die Konfiguration aktiv.

.htaccess

Standardmässig ist die Datei .htaccess nicht in der Contao-Installation aktiv. Es liegt jedoch eine vorbereitete Datei bereit; sie lautet .htaccess.default. Diese muss in .htaccess umbenannt werden. Die Datei .htaccess aus dem Basisverzeichnis der Contao-Installation dient hauptsächlich dazu, schönere URLs zu erzeugen. Damit das Rewriting von Webserver entsprechend ausgeführt werden kann, muss die Option RewriteBase angepasst werden. Sie besagt, in welchem Unterverzeichnis die Installation bezüglich der Domain liegt. Hat man das System in einem Unterverzeichnis installiert (http://localhost/contao/), dann muss die RewriteBase auf /contao/ geändert werden. Die veränderte .htaccess sieht dann ab Zeile 39 wie folgt aus:

  # Uncomment the following line to set the RewriteBase.
  ##
  RewriteBase /contao/

Mercury - Mailserver

Damit man auch die Mailfunktionalität von Contao lokal testen kann, bedarf es einem Mailserver. Diesen bringt XAMPP in Form von Mercury-Mail mit.

Über das XAMPP Control Panel wird dei Mailserver gestartet und per klick auf Admin öffnet sich die Mercury-Verwaltungsoberfläche. Da nur ein SMTP-Server (für den Mailversand) und ein POP3-Server (für den Mailempfang) benötigt werden, deaktiviert man alle anderen Dienste von Mercury. Das wird über den Button Configuration - Protocol modules erledigt, wo alle Haken bis auf SMTP und POP3 entfernt werden:

Nun den Mercury-Server über das XAMPP Control Panel neustarten.

Ähnlich wie für den Apache veranlasst man auch Mercury nur Verbindungen vom localhost anzunehmen. Über Configuration - Mercury SMTP Server erreicht man die Einstellungen und unter anderem das Feld IP Interface to use, was auf 127.0.0.1 zu setzen ist:

Mercury SMTP Server

Analog für den POP3-Server unter Configuration - Mercury POP3 Server:

Mercury PPOP3 Server

Um nun Mails empfangen zu können muss noch ein Mailbenutzer in Mercury angelegt werden. Unter Configuration - Manage local users kann man beliebige Mailkonten anlegen, an welche man dann per Contao Mails schicken kann. Am besten ändert man hierfür den schon angelegten newuser ab.

Damit die E-Mails auch abgeholt werden, richtet man sich das neue E-Mail Konto in einem Mailclient ein, beispielsweise Outlook Express. Die Logindaten hierfür sind:

  • POP3-Server: localhost
  • SMTP-Server: localhost
  • Benutzer: user@localhost

Die XAMPP-Weboberfläche (http://xampp) bietet den Menüpunkt Mercury Mail, hier kann man sich über PHP eine E-Mail zustellen, um die Konfiguration zu testen.

Sendmail & externer Mailserver

Alternativ zu einem eigenen lokalen Mailserver, kann ein bestehender Mailserver (z.B. von google mail) verwendet werden. Man erspart sich damit das Einrichten eines eigenen Mailservers und Mail-Accounts. Allerdings ist man dann von einer Verbindung zum Mailserver abhängig, das heisst also man braucht Internet, um Mails zu senden / empfangen.

Verwenden von gmail als Mail-Server

Die hier beschriebenen Schritte sind angelehnt an http://www.projectpier.org/node/817.

  • sendmail in der php.ini aktivieren (xampp/php/php.ini). Der Abschnitt [mail function] sieht so aus:
[mail function]
; For Win32 only.
; Eventuell Pfad zu sendmail.exe anpassen
sendmail_path = "\"D:\Programme\xampp\sendmail\sendmail.exe\" -t"
SMTP = localhost
smtp_port = 25
  • sendmail.ini (im gleichen Verzeichnis wie sendmail.exe) anpassen. Dafür überschreibt man den Inhalt mit:
[sendmail]
smtp_server=localhost
smtp_port=25
default_domain=gmail.com
error_logfile=error.log
auth_username=[deingmailname]@gmail.com
auth_password=[deingmailpasswort]
pop3_server=
pop3_username=
pop3_password=
  • Installation von stunnel

stunnel muss von der Projekthomepage gedownloaded und installiert werden.
Anschliessend muss die Konfigurationsdatei von stunnel angepasst werden. Diese findet man über Start->stunnel->edit stunnel.conf oder man öffnet die Datei direkt im Verzeichnis C:\Program Files\stunnel\stunnel.conf.
Nun überschreibt man den Inhalt der config mit:

cert = stunnel.pem
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
debug = 7
output = stunnel.log
client = yes
[smtpg]
accept = 127.0.0.1:25
connect = smtp.gmail.com:465
;or connect = 72.14.215.109:465 so there's no DNS lookup
  • XAMPP neu starten
  • stunnel starten (Startmenü)

Es ist nun von Contao aus möglich, welches auf XAMPP läuft, Mails zu versenden, sofern eine Verbindung zum gmail Server besteht.

Umzug auf ein Live-System

Der Umzug von Contao auf ein Livesystem gestaltet sich normalerweise sehr angenehm und ist nur mit wenigen Handgriffen zu bewerkstelligen:

  1. Unter Systemwartung den Cache löschen.
  2. Mit Hilfe der Backup-DB Erweiterung ein Website-Template erstellen
  3. Die ganze Website auf den Server laden (z.B. per FTP)
  4. Die .htaccess-Datei anpassen. Falls die Contao-Installation lokal in einem Unterverzeichnis lag, muss die RewriteBase wieder auf "/" gestellt werden.
  5. Nun über das Install-Tool die Contao-Seite installieren und am Ende das mit BackupDB erstellte Template in die Datenbank einfügen.

Das sollte es schon gewesen sein.

Da diese Anleitung auf einem portablen XAMPP-Server aufgebaut ist, ist es möglich, das komplette Verzeichnis (C:\webdev) auf einen USB-Stick zu betreiben. Dies erleichtert z.B. die Presentation bei Kunden. Es befindet sich alles in diesem Verzeichnis und bedarf keiner Installation. Lediglich die angepasste hosts-Datei kann nicht übernommen werden.

Credits

Die Orginal-Anleitung wurde erstellt von Psi (4ward.media)
Div. Modifikationen und Anpassungen an die aktuelle XAMPP-Version / Contao-Version durch manitougs

4ward.media

Ansichten
Meine Werkzeuge

Contao Community Documentation

Marc plant CFC für CCACSSCSR.

C-C-A
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge