LAMP Installation: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Joel-schoene (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(22 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
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.


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
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====
====Pakete installieren====
# pacman -S apache php php-apache 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.
====Apache einrichten====
* Füge diese Zeilen in {{ic|/etc/hosts}} ein. (Falls die Datei nicht existieren sollte, anlegen):


====Apache einrichten====
* Füge diese Zeilen in <code>/etc/hosts</code> 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 <code>/etc/rc.conf</code>: Falls ein HostName im ersten Schritt gesetzt wurde, sollte die HOSTNAME Variable die gleiche sein; andernfalls benutze "localhost":
'''HINWEIS:'''  In {{ic|/etc/hostname}} sollte der Hostname des Rechners stehen, so wie es in der [https://wiki.archlinux.de/title/Anleitung_f%C3%BCr_Einsteiger Anleitung für Einsteiger] erklärt wurde.
#
 
# Networking
 
#
* '''Bearbeite nun die Apache Konfiguration'''
  HOSTNAME="localhost"
 
  nano /etc/httpd/conf/httpd.conf


* Kommentiere das Modul in der Apache Konfiguration
* Kommentiere das Modul in der Apache Konfiguration
  # nano /etc/httpd/conf/httpd.conf
   
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
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 {{ic|index.html}}
(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]]
* Als root in einem Terminal httpd starten:[[Bild:Lamp_apache.png|thumb|200px|Apache 2 Testseite]]
  # /etc/rc.d/httpd start
 
  systemctl start httpd  
 
(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 <code>http://localhost/</code>. Es sollte eine einfache Apache Testseite zu sehen sein.
* Apache sollte nun laufen und kann über folgende URL getestet werden {{ic|http://localhost/}}. Es sollte eine einfache Apache Testseite zu sehen sein.
 
* (optional) um Apache bei jedem Systemstart zu starten:
 
systemctl enable httpd
 


* (optional)Editiere <code>/etc/rc.conf</code>, um Apache bei jedem Systemstart (Init) zu starten:
* (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}}:
DAEMONS=(''... andere deamons ...'' httpd)
'''Oder''' füge diese Zeilen zu <code>rc.local</code> hinzu:
/etc/rc.d/httpd start


* (optional)Falls Benutzer Verzeichnisse benutzt werden sollen (z.B. <code>~/public_html</code> wird auf <code>http://localhost/~user/</code> zugegriffen) um die Benutzer Seite im Web verfügbar zu machen, entferne das Kommentar-Zeichen (Raute: # ) bei folgender Zeile in <code>/etc/httpd/conf/extra/httpd-userdir.conf</code>:
  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 56: Zeile 85:
  </Directory>
  </Directory>


Es muss sichergestellt werden, dass das Home Verzeichnis die richtigen Rechte hat, damit Apache darauf zugreifen kann. Dein Home Verzeichnis und <code>~/public_html/</code> müssen für andere ausführbar sein("Rest der Welt"). Dies sollte reichen:
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
  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 fast sofort nach der Installation "out of the box".
* Füge in der {{ic|/etc/httpd/conf/httpd.conf}} diese beiden Zeilen hinzu


<code>'''Beachtet:''' PHP läuft inzwischen sofort nach der Installation "out of the box".</code>
LoadModule php7_module modules/libphp7.so
Include conf/extra/php7_module.conf


* Füge in der <code>/etc/httpd/conf/httpd.conf</code> diese beiden
Zeilen hinzu
LoadModule php5_module modules/libphp5.so
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 <code>/etc/php/php.ini</code>:
Apache lädt ein Modul (threaded MPM), aber das  PHP Module ist nicht threadsafe kompiliert.
Es muss also  {{ic|mpm_event_module}} durch {{ic|mpm_prefork_module}} ersetzt werden :
 
* Ändere in der {{ic|/etc/httpd/conf/httpd.conf}} diese beiden Zeilen
 
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
 
Füge nachfolgendes in die Datei {{ic|/etc/httpd/conf/httpd.conf}} ein
 
AddHandler php7-script php
 
* 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 <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'''):
* 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
 
  systemctl restart httpd  


* 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 99: Zeile 147:
  </html>
  </html>


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>).
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 <code>/etc/httpd/conf/httpd.conf</code> hinzu:
Funktioniert der Test nicht, also du siehst nur die .php-Datei, füge das deiner {{ic|/etc/httpd/conf/httpd.conf}} hinzu:
<code>
 
  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
</code>


====Konfiguriere MySQL Unterstützung====
====Konfiguriere MariaDB / MySQL Unterstützung====
Führe diese Schritte nur aus, falls MySQL Unterstützung gewünscht ist. Konfiguriere MySQL so wie es hier beschrieben wird: [[https://wiki.archlinux.de/title/MySQL Mysql]]
 
Vorweg: beide APIs (mysql, mysqli) können parallel betrieben werden. mysql.so ist die ältere, langsamere und unsicherer API. Ein Wechsel zu mysqli.so (i steht für improved) ist als sicher eine gute Idee. Bevor mysql.so nicht merh aktiviert wird, ist zu beachten, ob es alte php/mysql Scripte gibt, die zwar noch genutzt, aber nicht mehr gewartet werden. Einfach abschalten ist alsio keine Lösung. Immer alles Einschalten auch nicht.
 
* Editiere {{ic|/etc/php/php.ini}} (Bei älteren System {{ic|/usr/etc}}) und ändere die folgende Zeile von:
 
;extension=mysqli.so
;extension=mysql.so


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]]
in


* Editiere <code>/etc/php/php.ini</code> (Bei älteren System <code>/usr/etc</code>) und entkommentiere die folgende Zeile (<i>durch entfernen des <code>;</code></i>):
extension=mysqli.so
  <code>;extension=mysql.so</code>
  extension=mysql.so


* Es ist möglich geringer privilegierte Benutzer für Web Skripte anzulegen durch Änderungen der Tabellen die man in der <code>mysql</code> Datenbank gefunden werden. MySQL muss neu gestartet werden damit die Änderungen wirksam werden. Vergiss nicht die <code>mysql/users</code> 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 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:
<code># /etc/rc.d/mysqld start</code>


* Zur Sicherheit empfielt sich hier:  
systemctl start mysqld
<code># mysqld_secure_installation</code>
 
* 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:
<code># /etc/rc.d/httpd restart</code>


* Soll MySQL beim Start des Rechners ebenfalls starten muss der Daemon in <code>/etc/rc.conf</code> eingetragen werden:
systemctl restart httpd
<code>DAEMONS=(... mysqld ...)</code>
 
* Soll MySQL beim Start des Rechners ebenfalls starten muss der Daemon in {{ic|/etc/rc.conf}} eingetragen werden:


* Oder man trägt es in die <code>rc.local</code> ein:
  systemctl enable mysqld
  <code>/etc/rc.d/mysqld start</code>


* Es kann folgender Fehler auftreten "<code>error no. 2013: Lost Connection to mysql server during query (Fehler Nr. 2013: Verbindung während der Abfrage zum MySQL Server verloren)</code>" 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  <code>hosts_access(5)</code> System benutzt um Verbindungen zu erlauben bzw zu verbieten.
* 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 : ALL : ALLOW
  # mysqld-max : ALL : ALLOW
# mysqld-max : ALL : ALLOW
  # und ähnliches für die anderen MySQL daemons.
# 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 <code>/etc/my.cnf</code> editiert werden und  die <code>skip-networking</code> Zeile kommentiert werden:
* Außerdem sollte {{ic|/etc/my.cnf}} editiert werden und  die {{ic|skip-networking}} Zeile kommentiert werden:


  skip-networking
  skip-networking
Zeile 151: Zeile 209:


  #skip-networking
  #skip-networking
== Webapps ==
Um auf deinem Lamp-Server Owncloud, Wordpress oder anderes zu installieren musst du es erst einmal installieren (Bsp hier an WordPress)
pacman -S wordpress
Alle Webapps werden nach der Installation in {{ic|/usr/share/webapps}} verfügbar sein.
Kopier die Webapp, welche du installiert hast nach {{ic|/srv/http/}}.
cp /usr/share/webapps/wordpress /srv/http/
Der Rest muss nun über den Browser gemacht werden. [http://localhost/wordpress/ localhost/wordpress]
Bei WordPress und anderem ist zu beachten, dass ein Datenbankbenutzer und eine Datenbank angelegt werden muss. Dass Setup, welches über den Webbrowser gemacht wird, fragt diese Dinge dann ab. Falls du dich mit MariaDB oder anderem nicht so gut auskennst kannst du die Webapp phpMyAdmin installieren und nutzen. In dieser musst du dich mit root einloggen.


== Siehe auch ==
== Siehe auch ==
*[[lighttpd]] – Das Selbe mit lighttpd als HTTP-Server
*[[lighttpd]] – Das Selbe mit lighttpd als HTTP-Server
[[Kategorie:Internet]]
[[Kategorie:Internet]]
[[Kategorie:Server]]
[[en:LAMP]]
[[en:LAMP]]

Aktuelle Version vom 14. Januar 2017, 15:23 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"

HINWEIS: In /etc/hostname sollte der Hostname des Rechners stehen, so wie es in der Anleitung für Einsteiger erklärt wurde.


  • 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:
    Apache 2 Testseite
systemctl start httpd 

(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) um Apache bei jedem Systemstart zu starten:
systemctl enable httpd


  • (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

PHP läuft inzwischen fast sofort nach der Installation "out of the box".

  • Füge in der /etc/httpd/conf/httpd.conf diese beiden Zeilen hinzu
LoadModule php7_module modules/libphp7.so
Include conf/extra/php7_module.conf

Wichtig: LoadModule... muss am Anfang der Modulliste stehen!

Apache lädt ein Modul (threaded MPM), aber das PHP Module ist nicht threadsafe kompiliert. Es muss also mpm_event_module durch mpm_prefork_module ersetzt werden :

  • Ändere in der /etc/httpd/conf/httpd.conf diese beiden Zeilen
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Füge nachfolgendes in die Datei /etc/httpd/conf/httpd.conf ein

AddHandler php7-script php
  • 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:
systemctl restart httpd 
  • 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 MariaDB / MySQL Unterstützung

Führe diese Schritte nur aus, falls MySQL Unterstützung gewünscht ist. Konfiguriere MySQL so wie es hier beschrieben wird: [Mysql]

Vorweg: beide APIs (mysql, mysqli) können parallel betrieben werden. mysql.so ist die ältere, langsamere und unsicherer API. Ein Wechsel zu mysqli.so (i steht für improved) ist als sicher eine gute Idee. Bevor mysql.so nicht merh aktiviert wird, ist zu beachten, ob es alte php/mysql Scripte gibt, die zwar noch genutzt, aber nicht mehr gewartet werden. Einfach abschalten ist alsio keine Lösung. Immer alles Einschalten auch nicht.

  • Editiere /etc/php/php.ini (Bei älteren System /usr/etc) und ändere die folgende Zeile von:
;extension=mysqli.so
;extension=mysql.so

in

extension=mysqli.so
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.
  • Starte nun den Daemon:
systemctl start mysqld 
  • Zur Sicherheit empfiehlt sich hier:
mysqld_secure_installation

um die Installation etwas abzusichern.

  • Womöglich muss der Webserver neu gestartet werden:
systemctl restart httpd 
  • Soll MySQL beim Start des Rechners ebenfalls starten muss der Daemon in /etc/rc.conf eingetragen werden:
systemctl enable mysqld
  • 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 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


Webapps

Um auf deinem Lamp-Server Owncloud, Wordpress oder anderes zu installieren musst du es erst einmal installieren (Bsp hier an WordPress)

pacman -S wordpress

Alle Webapps werden nach der Installation in /usr/share/webapps verfügbar sein. Kopier die Webapp, welche du installiert hast nach /srv/http/.

cp /usr/share/webapps/wordpress /srv/http/

Der Rest muss nun über den Browser gemacht werden. localhost/wordpress Bei WordPress und anderem ist zu beachten, dass ein Datenbankbenutzer und eine Datenbank angelegt werden muss. Dass Setup, welches über den Webbrowser gemacht wird, fragt diese Dinge dann ab. Falls du dich mit MariaDB oder anderem nicht so gut auskennst kannst du die Webapp phpMyAdmin installieren und nutzen. In dieser musst du dich mit root einloggen.

Siehe auch

  • lighttpd – Das Selbe mit lighttpd als HTTP-Server