LAMP Installation: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Dirk (Diskussion | Beiträge) code → ic, synt, kat, veraltet, artikelstil |
||
Zeile 1: | Zeile 1: | ||
{{Veraltet}}{{Artikelstil}} | |||
===Apache, PHP, und MySQL=== | ===Apache, PHP, und MySQL=== | ||
Hinweis: Dieser Artikel wurde von wiki.archlinux.org aus dem Englischen ins Deutsche übersetzt. | Hinweis: Dieser Artikel wurde von wiki.archlinux.org aus dem Englischen ins Deutsche übersetzt. | ||
Zeile 5: | Zeile 6: | ||
====Pakete installieren==== | ====Pakete installieren==== | ||
# pacman -S apache php php-apache mysql | # pacman -S apache php php-apache mysql | ||
Zeile 11: | Zeile 11: | ||
====Apache einrichten==== | ====Apache einrichten==== | ||
* Füge diese Zeilen in | * Füge diese Zeilen in {{ic|/etc/hosts}} ein. (Falls die Datei nicht existieren sollte, anlegen): | ||
127.0.0.1 localhost.localdomain localhost | 127.0.0.1 localhost.localdomain localhost | ||
'''HINWEIS:''' Falls ein anderer Hostname gewünscht ist, füge den Namen ans Ende der Zeile: | '''HINWEIS:''' Falls ein anderer Hostname gewünscht ist, füge den Namen ans Ende der Zeile: | ||
127.0.0.1 localhost.localdomain localhost "myHostName" | 127.0.0.1 localhost.localdomain localhost "myHostName" | ||
* Editiere | * Editiere {{ic|/etc/rc.conf}}: Falls ein HostName im ersten Schritt gesetzt wurde, sollte die HOSTNAME Variable die gleiche sein; andernfalls benutze "localhost": | ||
# | # | ||
# Networking | # Networking | ||
Zeile 23: | Zeile 27: | ||
* '''Bearbeite nun die Apache Konfiguration''' | * '''Bearbeite nun die Apache Konfiguration''' | ||
nano /etc/httpd/conf/httpd.conf | |||
* Kommentiere das Modul in der Apache Konfiguration | * Kommentiere das Modul in der Apache Konfiguration | ||
LoadModule unique_id_module modules/mod_unique_id.so | LoadModule unique_id_module modules/mod_unique_id.so | ||
zu | zu | ||
#LoadModule unique_id_module modules/mod_unique_id.so | #LoadModule unique_id_module modules/mod_unique_id.so | ||
* Apache sollte nicht unter dem root-Account laufen. Dafür gibt es folgende Einträge | * Apache sollte nicht unter dem root-Account laufen. Dafür gibt es folgende Einträge | ||
User http | User http | ||
Group http | Group http | ||
Zeile 38: | Zeile 46: | ||
* Überprüfe die Einstellung von ''DocumentRoot'' | * Überprüfe die Einstellung von ''DocumentRoot'' | ||
DocumentRoot "/srv/http" | DocumentRoot "/srv/http" | ||
Falls erforderlich, ändere den Eintrag und stelle sicher, dass das Verzeichnis (hier: /srv/http) existiert. | Falls erforderlich, ändere den Eintrag und stelle sicher, dass das Verzeichnis (hier: /srv/http) existiert. | ||
# ls -l /srv | grep http | # ls -l /srv | grep http | ||
drwxr-xr-x 2 root http 4096 08. Dez 08:12 http | drwxr-xr-x 2 root http 4096 08. Dez 08:12 http | ||
Erstelle in diesem Verzeichnis eine Datei | Erstelle in diesem Verzeichnis eine Datei {{ic|index.html}} | ||
(Die Datei ist erforderlich, da sonst bei deaktiviertem ''Directory-Listing'' eine Fehlerseite angezeigt wird) | (Die Datei ist erforderlich, da sonst bei deaktiviertem ''Directory-Listing'' eine Fehlerseite angezeigt wird) | ||
* Als root in einem Terminal httpd starten:[[Bild:Lamp_apache.png|thumb|200px|Apache 2 Testseite]] | |||
/etc/rc.d/httpd start | |||
(Tipp: Auf einer Workstation ist es nicht empfehlenswert, den Server in Abhängigkeit zu X zu starten. Vorher also zu einem TTY wechseln.) | (Tipp: Auf einer Workstation ist es nicht empfehlenswert, den Server in Abhängigkeit zu X zu starten. Vorher also zu einem TTY wechseln.) | ||
* Apache sollte nun laufen und kann über folgende URL getestet werden | * Apache sollte nun laufen und kann über folgende URL getestet werden {{ic|http://localhost/}}. Es sollte eine einfache Apache Testseite zu sehen sein. | ||
* (optional)Editiere {{ic|/etc/rc.conf}}, um Apache bei jedem Systemstart (Init) zu starten: | |||
DAEMONS=(''... andere daemons ...'' httpd) | DAEMONS=(''... andere daemons ...'' httpd) | ||
'''Oder''' füge diese Zeilen zu | |||
'''Oder''' füge diese Zeilen zu {{ic|rc.local}} hinzu: | |||
/etc/rc.d/httpd start | /etc/rc.d/httpd start | ||
* (optional)Falls Benutzer Verzeichnisse benutzt werden sollen (z.B. | * (optional)Falls Benutzer Verzeichnisse benutzt werden sollen (z.B. {{ic|~/public_html}} wird auf {{ic|http://localhost/~user/}} zugegriffen) um die Benutzer Seite im Web verfügbar zu machen, entferne das Kommentar-Zeichen (Raute: # ) bei folgender Zeile in {{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}: | ||
UserDir public_html | UserDir public_html | ||
und | und | ||
<Directory /home/*/public_html> | <Directory /home/*/public_html> | ||
AllowOverride FileInfo AuthConfig Limit Indexes | AllowOverride FileInfo AuthConfig Limit Indexes | ||
Zeile 77: | Zeile 92: | ||
</Directory> | </Directory> | ||
Es muss sichergestellt werden, dass das Home Verzeichnis die richtigen Rechte hat, damit Apache darauf zugreifen kann. Dein Home Verzeichnis und | Es muss sichergestellt werden, dass das Home Verzeichnis die richtigen Rechte hat, damit Apache darauf zugreifen kann. Dein Home Verzeichnis und {{ic|~/public_html/}} müssen für andere ausführbar sein("Rest der Welt"). Dies sollte reichen: | ||
chmod o+x ~ | |||
chmod o+x ~/public_html | |||
Es gibt auch andere, sicherere Möglichkeiten um den Zugriff zu regeln. Z.B. eine neue Gruppe anlegen und nur Apache und dir den Zugriff zu erlauben... Nur du weißt, wie Paranoid du bist. (Wobei man bei Servern nie sicher genug sein kann ;-) ) | Es gibt auch andere, sicherere Möglichkeiten um den Zugriff zu regeln. Z.B. eine neue Gruppe anlegen und nur Apache und dir den Zugriff zu erlauben... Nur du weißt, wie Paranoid du bist. (Wobei man bei Servern nie sicher genug sein kann ;-) ) | ||
====PHP einrichten==== | ====PHP einrichten==== | ||
PHP läuft inzwischen sofort nach der Installation "out of the box". | |||
* Füge in der {{ic|/etc/httpd/conf/httpd.conf}} diese beiden | |||
Zeilen hinzu | |||
LoadModule php5_module modules/libphp5.so | LoadModule php5_module modules/libphp5.so | ||
Include conf/extra/php5_module.conf | Include conf/extra/php5_module.conf | ||
'''Wichtig:''' LoadModule... muss am Anfang der Modulliste stehen! | '''Wichtig:''' LoadModule... muss am Anfang der Modulliste stehen! | ||
* Falls das libGD Modul gebraucht wird, entkommentiere es in | * Falls das libGD Modul gebraucht wird, entkommentiere es in {{ic|/etc/php/php.ini}}: | ||
;extension=gd.so | ;extension=gd.so | ||
zu | zu | ||
extension=gd.so | extension=gd.so | ||
* Falls das | * Falls das {{ic|1=DocumentRoot(=Dokumenten Wurzel Verzeichnis)}} außerhalb des {{ic|/home/}} Verzeichnisses liegt, füge es zum {{ic|open_basedir}} hinzu in {{ic|/etc/php/php.ini}}hinzu ('''gilt nur für ältere Versionen, nicht für die aktuelle'''): | ||
open_basedir = /home/:/tmp/:/usr/share/pear/:/PFAD/ZUM/DOCUMENTROOT | open_basedir = /home/:/tmp/:/usr/share/pear/:/PFAD/ZUM/DOCUMENTROOT | ||
* Als root Apache neu starten, damit die Änderungen wirksam werden: | * Als root Apache neu starten, damit die Änderungen wirksam werden: | ||
/etc/rc.d/httpd restart | |||
* PHP kann mit folgender einfachen aber sehr informativen PHP Test Datei getestet werden:[[Bild:Lamp_php.png|thumb|200px|PHP Version 5.2.5 Testseite]] | * PHP kann mit folgender einfachen aber sehr informativen PHP Test Datei getestet werden:[[Bild:Lamp_php.png|thumb|200px|PHP Version 5.2.5 Testseite]] | ||
<html> | <html> | ||
<head> | <head> | ||
Zeile 120: | Zeile 143: | ||
</html> | </html> | ||
Speichere die Datei als | Speichere die Datei als {{ic|test.php}} ab und kopiere sie nach {{ic|/srv/html/}} oder nach {{ic|~/public_html}}, falls so eine Konfiguration zulässig ist. Vergiss nicht die Datei ausführbar zu machen. ({{ic|chmod o+x test.php}}). | ||
* Teste PHP: http://localhost/test.php oder http://localhost/~myname/test.php | * Teste PHP: http://localhost/test.php oder http://localhost/~myname/test.php | ||
Funktioniert der Test nicht, also du siehst nur die .php-Datei, füge das deiner | Funktioniert der Test nicht, also du siehst nur die .php-Datei, füge das deiner {{ic|/etc/httpd/conf/httpd.conf}} hinzu: | ||
AddType application/x-httpd-php .php | AddType application/x-httpd-php .php | ||
AddType application/x-httpd-php-source .phps | AddType application/x-httpd-php-source .phps | ||
====Konfiguriere MySQL Unterstützung==== | ====Konfiguriere MySQL Unterstützung==== | ||
Führe diese Schritte nur aus, falls MySQL Unterstützung gewünscht ist. Konfiguriere MySQL so wie es hier beschrieben wird: [[http://wiki.archlinux.org/index.php/MySQL_%28Deutsch%29]] | |||
* Editiere {{ic|/etc/php/php.ini}} (Bei älteren System {{ic|/usr/etc}}) und entkommentiere die folgende Zeile (<i>durch entfernen des {{ic|;}}</i>): | |||
;extension=mysql.so | |||
* Es ist möglich geringer privilegierte Benutzer für Web Skripte anzulegen durch Änderungen der Tabellen die man in der | * Es ist möglich geringer privilegierte Benutzer für Web Skripte anzulegen durch Änderungen der Tabellen die man in der {{ic|mysql}} Datenbank gefunden werden. MySQL muss neu gestartet werden damit die Änderungen wirksam werden. Vergiss nicht die {{ic|mysql/users}} Tabelle zu überprüfen. Falls dort ein zweiter Eintrag für root und den Hostnamen ist ohne das ein Passwort gesetzt ist. So kann jeder vollen Zugriff bekommen. | ||
* Starte nun den Daemon: | * Starte nun den Daemon: | ||
/etc/rc.d/mysqld start | |||
* Zur Sicherheit empfiehlt sich hier: | * Zur Sicherheit empfiehlt sich hier: | ||
mysqld_secure_installation | |||
um die Installation etwas abzusichern. | um die Installation etwas abzusichern. | ||
* Womöglich muss der Webserver neu gestartet werden: | * Womöglich muss der Webserver neu gestartet werden: | ||
* Soll MySQL beim Start des Rechners ebenfalls starten muss der Daemon in | /etc/rc.d/httpd restart | ||
* Soll MySQL beim Start des Rechners ebenfalls starten muss der Daemon in {{ic|/etc/rc.conf}} eingetragen werden: | |||
DAEMONS=(... mysqld ...) | |||
* Oder man trägt es in die {{ic|rc.local}} ein: | |||
/etc/rc.d/mysqld start | |||
* Es kann folgender Fehler auftreten " | * Es kann folgender Fehler auftreten "{{ic|error no. 2013: Lost Connection to mysql server during query (Fehler Nr. 2013: Verbindung während der Abfrage zum MySQL Server verloren)}}" Diese Nachricht erscheint sofort wenn versucht wird zum MySQL Daemon zu verbinden mithilfe von TCP/IP. Dies ist das TCP Wrapper System (TCP Hüllen System) tcpd, welches das {{ic|hosts_access(5)}} System benutzt um Verbindungen zu erlauben bzw zu verbieten. | ||
* Abhilfe für dieses Problem: Füge diese Zeilen zu /etc/hosts.allow hinzu: | * Abhilfe für dieses Problem: Füge diese Zeilen zu /etc/hosts.allow hinzu: | ||
# mysqld : ALL : ALLOW | |||
# mysqld-max : ALL : ALLOW | |||
# und ähnliches für die anderen MySQL daemons. | |||
* Hinweis: Diese Beispiele sind der einfachste Fall, tcpd beizubringen alle Verbindungen von Irgendwo zu erlauben. Es ist besser eine angemessenere Wahl für erlaubte Quellen zu benutzen anstatt ALL (Alle) zu benutzen. Sei sicher das localhost und die IP Adresse (numerisch oder DNS) von der Netzwerkschnittstelle festgelegt sind mit dem verbunden wird. | * Hinweis: Diese Beispiele sind der einfachste Fall, tcpd beizubringen alle Verbindungen von Irgendwo zu erlauben. Es ist besser eine angemessenere Wahl für erlaubte Quellen zu benutzen anstatt ALL (Alle) zu benutzen. Sei sicher das localhost und die IP Adresse (numerisch oder DNS) von der Netzwerkschnittstelle festgelegt sind mit dem verbunden wird. | ||
* Außerdem sollte | * Außerdem sollte {{ic|/etc/my.cnf}} editiert werden und die {{ic|skip-networking}} Zeile kommentiert werden: | ||
skip-networking | skip-networking | ||
Zeile 177: | Zeile 205: | ||
[[Kategorie:Internet]] | [[Kategorie:Internet]] | ||
[[ | [[Kategorie:Server]] | ||
[[en:LAMP]] | [[en:LAMP]] |
Version vom 27. Januar 2013, 20:34 Uhr
Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.
Dieser Artikel oder Artikelabschnitt bedarf einer stilistischen Überarbeitung laut Empfehlungen in Artikelstil.
Apache, PHP, und MySQL
Hinweis: Dieser Artikel wurde von wiki.archlinux.org aus dem Englischen ins Deutsche übersetzt.
Dieses Dokument beschreibt, wie man einen Apache Web Server auf einem Arch Linux System einrichtet. Es wird auch erklärt, wie man PHP und MySQL optional installieren kann und diese dann im Apache Server integriert
Pakete installieren
# pacman -S apache php php-apache mysql
Es gibt die Möglichkeiten, nur Apache zu installieren, Apache und PHP oder auch alle drei. In diesem Artikel wird beschrieben, wie man alle drei installiert.
Apache einrichten
- Füge diese Zeilen in
/etc/hosts
ein. (Falls die Datei nicht existieren sollte, anlegen):
127.0.0.1 localhost.localdomain localhost
HINWEIS: Falls ein anderer Hostname gewünscht ist, füge den Namen ans Ende der Zeile:
127.0.0.1 localhost.localdomain localhost "myHostName"
- Editiere
/etc/rc.conf
: Falls ein HostName im ersten Schritt gesetzt wurde, sollte die HOSTNAME Variable die gleiche sein; andernfalls benutze "localhost":
# # Networking # HOSTNAME="localhost"
- Bearbeite nun die Apache Konfiguration
nano /etc/httpd/conf/httpd.conf
- Kommentiere das Modul in der Apache Konfiguration
LoadModule unique_id_module modules/mod_unique_id.so
zu
#LoadModule unique_id_module modules/mod_unique_id.so
- Apache sollte nicht unter dem root-Account laufen. Dafür gibt es folgende Einträge
User http Group http
(Natürlich müssen der Benutzer und die Gruppe auf dem System existieren)
- Überprüfe die Einstellung von DocumentRoot
DocumentRoot "/srv/http"
Falls erforderlich, ändere den Eintrag und stelle sicher, dass das Verzeichnis (hier: /srv/http) existiert.
# ls -l /srv | grep http drwxr-xr-x 2 root http 4096 08. Dez 08:12 http
Erstelle in diesem Verzeichnis eine Datei index.html
(Die Datei ist erforderlich, da sonst bei deaktiviertem Directory-Listing eine Fehlerseite angezeigt wird)
- Als root in einem Terminal httpd starten:
/etc/rc.d/httpd start
(Tipp: Auf einer Workstation ist es nicht empfehlenswert, den Server in Abhängigkeit zu X zu starten. Vorher also zu einem TTY wechseln.)
- Apache sollte nun laufen und kann über folgende URL getestet werden
http://localhost/
. Es sollte eine einfache Apache Testseite zu sehen sein.
- (optional)Editiere
/etc/rc.conf
, um Apache bei jedem Systemstart (Init) zu starten:
DAEMONS=(... andere daemons ... httpd)
Oder füge diese Zeilen zu rc.local
hinzu:
/etc/rc.d/httpd start
- (optional)Falls Benutzer Verzeichnisse benutzt werden sollen (z.B.
~/public_html
wird aufhttp://localhost/~user/
zugegriffen) um die Benutzer Seite im Web verfügbar zu machen, entferne das Kommentar-Zeichen (Raute: # ) bei folgender Zeile in/etc/httpd/conf/extra/httpd-userdir.conf
:
UserDir public_html
und
<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory>
Es muss sichergestellt werden, dass das Home Verzeichnis die richtigen Rechte hat, damit Apache darauf zugreifen kann. Dein Home Verzeichnis und ~/public_html/
müssen für andere ausführbar sein("Rest der Welt"). Dies sollte reichen:
chmod o+x ~ chmod o+x ~/public_html
Es gibt auch andere, sicherere Möglichkeiten um den Zugriff zu regeln. Z.B. eine neue Gruppe anlegen und nur Apache und dir den Zugriff zu erlauben... Nur du weißt, wie Paranoid du bist. (Wobei man bei Servern nie sicher genug sein kann ;-) )
PHP einrichten
PHP läuft inzwischen sofort nach der Installation "out of the box".
- Füge in der
/etc/httpd/conf/httpd.conf
diese beiden
Zeilen hinzu
LoadModule php5_module modules/libphp5.so Include conf/extra/php5_module.conf
Wichtig: LoadModule... muss am Anfang der Modulliste stehen!
- Falls das libGD Modul gebraucht wird, entkommentiere es in
/etc/php/php.ini
:
;extension=gd.so
zu
extension=gd.so
- Falls das
DocumentRoot(=Dokumenten Wurzel Verzeichnis)
außerhalb des/home/
Verzeichnisses liegt, füge es zumopen_basedir
hinzu in/etc/php/php.ini
hinzu (gilt nur für ältere Versionen, nicht für die aktuelle):
open_basedir = /home/:/tmp/:/usr/share/pear/:/PFAD/ZUM/DOCUMENTROOT
- Als root Apache neu starten, damit die Änderungen wirksam werden:
/etc/rc.d/httpd restart
- PHP kann mit folgender einfachen aber sehr informativen PHP Test Datei getestet werden:
<html> <head> <title>PHP Test Page</title> </head> <body> This is Arch Linux, running PHP. <?php phpinfo(); ?>
</body> </html>
Speichere die Datei als test.php
ab und kopiere sie nach /srv/html/
oder nach ~/public_html
, falls so eine Konfiguration zulässig ist. Vergiss nicht die Datei ausführbar zu machen. (chmod o+x test.php
).
- Teste PHP: http://localhost/test.php oder http://localhost/~myname/test.php
Funktioniert der Test nicht, also du siehst nur die .php-Datei, füge das deiner /etc/httpd/conf/httpd.conf
hinzu:
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
Konfiguriere MySQL Unterstützung
Führe diese Schritte nur aus, falls MySQL Unterstützung gewünscht ist. Konfiguriere MySQL so wie es hier beschrieben wird: [[1]]
- Editiere
/etc/php/php.ini
(Bei älteren System/usr/etc
) und entkommentiere die folgende Zeile (durch entfernen des;
):
;extension=mysql.so
- Es ist möglich geringer privilegierte Benutzer für Web Skripte anzulegen durch Änderungen der Tabellen die man in der
mysql
Datenbank gefunden werden. MySQL muss neu gestartet werden damit die Änderungen wirksam werden. Vergiss nicht diemysql/users
Tabelle zu überprüfen. Falls dort ein zweiter Eintrag für root und den Hostnamen ist ohne das ein Passwort gesetzt ist. So kann jeder vollen Zugriff bekommen.
- Starte nun den Daemon:
/etc/rc.d/mysqld start
- Zur Sicherheit empfiehlt sich hier:
mysqld_secure_installation
um die Installation etwas abzusichern.
- Womöglich muss der Webserver neu gestartet werden:
/etc/rc.d/httpd restart
- Soll MySQL beim Start des Rechners ebenfalls starten muss der Daemon in
/etc/rc.conf
eingetragen werden:
DAEMONS=(... mysqld ...)
- Oder man trägt es in die
rc.local
ein:
/etc/rc.d/mysqld start
- Es kann folgender Fehler auftreten "
error no. 2013: Lost Connection to mysql server during query (Fehler Nr. 2013: Verbindung während der Abfrage zum MySQL Server verloren)
" Diese Nachricht erscheint sofort wenn versucht wird zum MySQL Daemon zu verbinden mithilfe von TCP/IP. Dies ist das TCP Wrapper System (TCP Hüllen System) tcpd, welches dashosts_access(5)
System benutzt um Verbindungen zu erlauben bzw zu verbieten.
- Abhilfe für dieses Problem: Füge diese Zeilen zu /etc/hosts.allow hinzu:
# mysqld : ALL : ALLOW # mysqld-max : ALL : ALLOW # und ähnliches für die anderen MySQL daemons.
- Hinweis: Diese Beispiele sind der einfachste Fall, tcpd beizubringen alle Verbindungen von Irgendwo zu erlauben. Es ist besser eine angemessenere Wahl für erlaubte Quellen zu benutzen anstatt ALL (Alle) zu benutzen. Sei sicher das localhost und die IP Adresse (numerisch oder DNS) von der Netzwerkschnittstelle festgelegt sind mit dem verbunden wird.
- Außerdem sollte
/etc/my.cnf
editiert werden und dieskip-networking
Zeile kommentiert werden:
skip-networking
zu
#skip-networking
Siehe auch
- lighttpd – Das Selbe mit lighttpd als HTTP-Server