LAMP Installation: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Mucki (Diskussion | Beiträge)
Die Sektion über PHP wurde geändert, die Anleitung funktionierte nicht mehr. Ich habe mich an dem Englischen-Wiki orientiert, da deren Anleitung aktueller ist.
Zeile 6: Zeile 6:
====Pakete installieren====
====Pakete installieren====


  # pacman -Sy apache php mysql
  # pacman -Sy 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.
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.
Zeile 64: Zeile 64:
====PHP einrichten====
====PHP einrichten====


PHP läuft inzwischen sofort nach der Installation.
<code>'''Beachtet:''' PHP läuft inzwischen sofort nach der Installation "out of the box".</code>


* Füge in der <code>/etc/httpd/conf/httpd.conf</code> diese beiden  
* Füge in der <code>/etc/httpd/conf/httpd.conf</code> diese beiden  
Zeile 70: Zeile 70:
  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!
* Für PHP5 sind die Datei-Handler bereits eingerichtet:
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    <IfModule mod_php5.c>
        DirectoryIndex index.php index.html
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
    </IfModule>
    DirectoryIndex index.html
</IfModule>
 
* Vergiss nicht einen Datei-Handler für .phtml hinzuzufügen falls er gebraucht wird:
DirectoryIndex index.php index.phtml index.html


* Falls das libGD Modul gebraucht wird, entkommentiere es in <code>/etc/php/php.ini</code>:
* Falls das libGD Modul gebraucht wird, entkommentiere es in <code>/etc/php/php.ini</code>:
Zeile 93: Zeile 77:
  extension=gd.so
  extension=gd.so


* Falls das <code>DocumentRoot(=Dokumenten Wurzel Verzeichnis)</code> außerhalb des <code>/home/</code> Verzeichnisses liegt, füge es zum <code>open_basedir</code> hinzu in <code>/etc/php/php.ini</code>hinzu:
* Falls das <code>DocumentRoot(=Dokumenten Wurzel Verzeichnis)</code> außerhalb des <code>/home/</code> Verzeichnisses liegt, füge es zum <code>open_basedir</code> hinzu in <code>/etc/php/php.ini</code>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


Zeile 115: Zeile 99:
  </html>
  </html>


Speichere die Datei als <code>test.php</code> ab und kopiere sie nach <code>/home/httpd/html/</code> oder nach <code>~/public_html</code>, falls so eine Konfiguration zulässig ist. Vergiss nicht die Datei ausführbar zu machen. (<code>chmod o+x test.php</code>).
Speichere die Datei als <code>test.php</code> ab und kopiere sie nach <code>/srv/html/</code> oder nach <code>~/public_html</code>, falls so eine Konfiguration zulässig ist. Vergiss nicht die Datei ausführbar zu machen. (<code>chmod o+x test.php</code>).


* 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 <code>/etc/httpd/conf/httpd.conf</code> hinzu:
<code>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</code>


====Konfiguriere MySQL Unterstützung====
====Konfiguriere MySQL Unterstützung====

Version vom 13. Januar 2010, 13:43 Uhr

Apache, PHP, und MySQL

Hinweis: Dieser Artikel wurde von wiki.archlinux.org aus dem Englischen ins Deutsche übersetzt.

Dies 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 -Sy 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"
  • Kommentiere das Modul in der Apache Konfiguration
# nano /etc/httpd/conf/httpd.conf
LoadModule unique_id_module        modules/mod_unique_id.so

zu

#LoadModule unique_id_module        modules/mod_unique_id.so
  • Als root in einem Terminal httpd starten:
    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.)

  • 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 deamons ... 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 auf http://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

Beachtet: 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 zum open_basedir hinzu in /etc/php/php.inihinzu (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:
    PHP Version 5.2.5 Testseite
<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).

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 die 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.
  • 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 Deamon zu verbinden mithilfe von TCP/IP. Dies ist das TCP Wrapper System (TCP Hüllen System) tcpd, welches das 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:
 # 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 die skip-networking Zeile kommentiert werden:
skip-networking

zu

#skip-networking

Siehe auch

  • lighttpd – Das Selbe mit lighttpd als HTTP-Server