1607540

Apache-Webserver auf Linux installieren - so geht's

17.01.2018 | 10:10 Uhr |

Webserver sind ein wichtiger Bestandteil des Internets, leisten aber auch im eigenen Netzwerk nützliche Dienste. Wie Sie einen Webserver mit Apache oder Nginx konfigurieren, erfahren Sie in diesem Artikel.

Die Grundfunktion eines Webservers besteht in der Auslieferung von HTML- und Bildinhalten über die Protokolle HTTP oder HTTPS. Wenn Sie in Ihrem Browser eine Webadresse aufrufen, fordert der Browser beim Webserver auf Port 80 („http://“) oder Port 443 („https://“) die Auslieferung der Startseite an. Webserver und Browser sind Schlüsseltechnologien des Internets. Beide stellen eine Infrastruktur bereit, um Informationen abzurufen, Daten zu speichern, online einzukaufen und in sozialen Netzwerken zu kommunizieren. Grund genug, sich mit den zugrundeliegenden Technologien intensiver zu beschäftigen. Ein Webserver im eigenen lokalen Netzwerk kann nützliche Webanwendungen für den Eigenbedarf oder für kleine Teams anbieten.

Wir beziehen uns in diesem Artikel auf Ubuntu 16.04 . Die Konfigurations- und Installationsanleitungen gelten für verwandte Systeme wie Linux Mint 18 und ähnlich auch für andere Systeme. Alle Kommandozeilen und Beispielkonfigurationen können Sie als Textdatei herunterladen .

1. Das leisten Webserver

Der Apache HTTP-Server gehört zu den am meisten genutzten Webservern. Es gibt ihn schon seit gut 20 Jahren und viele Beispielkonfigurationen beziehen sich auf Apache. Eine Alternative ist der Nginx -Webserver, der sparsamer mit den PC-Ressourcen umgeht und sich oft besser für weniger leistungsfähigere Hardware und für Server mit sehr vielen Zugriffen eignet. In einigen Fällen kann auch die Kombination von Apache mit Nginx als Reverse-Proxy sinnvoll sein. Der Vorteil dabei: Die Last lässt sich zwischen beiden Servern verteilen und die Gesamtleistung steigern.

Es gibt noch einige weitere Webserver, die sich durch geringen Ressourcenverbrauch oder eine besonders einfache Konfiguration auszeichnen. Ein Beispiel dafür ist Lighttpd . Der leichtgewichtige Webserver erfüllt fast die gleichen Aufgaben wie Apache, jedoch fehlen einige Funktionen, sodass sich nicht jedes CMS (Content-Management-System) ohne Anpassungen mit Lighttpd nutzen lässt. Wir gehen deshalb in diesem Artikel nicht weiter auf Lighttpd ein.

Content-Management-Systeme wie Wordpress erzeugen die HTML-Inhalte dynamisch mit PHP-Scripts.
Vergrößern Content-Management-Systeme wie Wordpress erzeugen die HTML-Inhalte dynamisch mit PHP-Scripts.

Webseiten dynamisch erzeugen: Meist werden Sie auf einem Webserver nicht einfache, statische HTML-Dateien verwenden, sondern ein CMS oder eine andere Webanwendung nutzen. Wordpress , Joomla und Webanwendungen wie Nextcloud (Cloudserver) oder Piwigo (Bildergalerie) erstellen die Webseiten dynamisch. Der Webserver kann dafür mit zusätzlichen Modulen ausgestattet werden, die Scripts verarbeiten. Die Scripts produzieren HTML-Code auf der Basis von Vorlagen meist aus Datenbankinhalten. Als Script-Sprachen dienen meist PHP, Perl oder Python. Grundsätzlich kann der Webserver beliebige externe Programme unabhängig von der verwendeten Programmiersprache starten, deren HTML- oder Textausgabe er an den Client (Browser) weiterleitet.

Wordpress: So richten Sie Ihre Webseite mit Linux ein

2. Die Apache-Basiskonfiguration

Nach der Installation rufen Sie auf dem Server-PC die Adresse „http://localhost“ auf.
Vergrößern Nach der Installation rufen Sie auf dem Server-PC die Adresse „http://localhost“ auf.

Apache lässt sich bei fast allen Linux-Distributionen schnell über das Paket „apache2 „installieren. Nutzer von Ubuntu, Linux Mint und Debian verwenden dafür die jeweilige Paketverwaltung oder am einfachsten die Kommandozeile:

sudo apt update  sudo apt install apache2 

Danach rufen Sie am selben Rechner im Webbrowser die Adresse http://localhost auf. Sie sehen dann die Standard-Webseite mit einigen grundlegenden Informationen zur Konfiguration. Sie erfahren hier beispielsweise, dass alle Apache-Konfigurationsdateien unter „/etc/apache2“ liegen und die Webdokumente unter „/var/www/html“ („DocumentRoot“). In diesem Ordner liegt bisher nur die Datei „index.html“ mit der Standard-Webseite. Der Webserver liefert immer automatische die Datei „index.html“ an den Webbrowser aus, wenn diese in einem Ordner vorhanden ist. Andernfalls zeigt er standardmäßig den Verzeichnisinhalt an.

3. Webserver im lokalen Netzwerk

Webangebote sind auch über Subdomains erreichbar.
Vergrößern Webangebote sind auch über Subdomains erreichbar.

Auf anderen Geräten im Netzwerk erreichen Sie den Server über „http://[Hostname]“ oder „http://[IP-Nummer]“. Je nach Router funktionieren auch „http://[Hostname].local“, „http://[Hostname].lan“ oder „http://[Hostname].fritz.box“. Mit

nslookup [Hostname]  

ermitteln Sie im Terminalfenster, über welchen Namen und welche IP-Adresse der Server im Netzwerk erreichbar ist.

In einem lokalen Netzwerk ohne eigene Domain und Domain Name Service (DNS) sind die Möglichkeiten der Namensvergabe beschränkt.

Ein Server kann nur einen und nicht mehrere Hostnamen besitzen und deshalb ist ohne weitere Maßnahmen nur ein Webserver pro PC konfigurierbar. Es gibt jedoch mehrere Möglichkeiten, diese Einschränkung zu umgehen. Soll der PC mehrere Webdienste anbieten, etwa Wordpress und Nextcloud, kann die Installation in ein Unterverzeichnis erfolgen, beispielsweise „/var/www/html/wordpress“. Das CMS ist dann über „http://[Hostname]/wordpress“ erreichbar. Fast alle CMS oder Webanwendungen bieten diese Installationsart an. Mit Apache lassen sich aber auch virtuelle Server einrichten. Es ist dann möglich, unterschiedliche Webanwendungen auf einem Server über andere Ports oder Subdomains zu erreichen.

Subdomains oder alternative Hostnamen legen Sie im lokalen Netzwerk in der Datei „/etc/hosts“ fest. Öffnen Sie diese über das Terminalfenster in einem Editor, etwa mit:

sudo nano /etc/hosts 

In der Datei finden Sie beispielsweise diese Einträge:

127.0.0.1 localhost  127.0.1.1 zaurak 

„zaurak“ ist in unserem Beispiel der Hostname, den Sie bei der Installation festgelegt haben. Ergänzen Sie folgende Zeile

192.168.178.131 test.zaurak test.zaurak.fritz.box  

Verwenden Sie die IP-Adresse, die Sie zuvor über nslookup ermittelt haben. Die beiden Hostnamen passen Sie entsprechend Ihrer Konfiguration an. Tragen Sie die Zeile bei allen PCs im Netzwerk in die Datei „/etc/ hosts“ ein, die auf den Webserver zugreifen sollen. Speichern die Änderungen mit Strg-O und Eingabetaste.

Der Webserver ist jetzt auch über die beiden alternativen Namen erreichbar. Beide zeigen jedoch die identische Webseite an, weil bisher noch nichts anderes konfiguriert ist (siehe Punkt 4).

Hinweis: Befindet sich der Webserver in einer Internetgdomäne bei einem Webhoster, sind keine Änderungen in der „/etc/ hosts“ nötig. In der Regel leiten DNS-Server alle Anfragen an eine Domäne beziehungsweise Subdomäne an den Webserver oder andere Dienste weiter.

IP-Konfiguration und dynamische IP

Ein Server sollte im lokalen Netzwerk möglichst immer unter derselben IP-Adresse erreichbar sein. Fast alle Router bieten eine Einstellung dafür. Bei einer Fritzbox beispielsweise gehen Sie in der Weboberfläche auf „Heimnetz -> Heimnetzübersicht“. Klicken Sie bei Ihrem Server in der Spalte „Eigenschaften“ auf „Details“. Setzen Sie ein Häkchen vor „Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen“ und klicken Sie auf „OK“.

Wenn der Webserver auch aus dem Internet erreichbar sein soll, nutzen Sie einen Dienst für dynamische IP-Adressen. Sie erhalten einen Domainnamen, der den weltweiten Zugriff auf den Server ermöglicht. Besitzer einer Fritzbox können den Router über die Benutzeroberfläche kostenlos bei Myfritz anmelden. Weitere kostenlose Dienste sind https://twodns.de , www.selfhost.de sowie http://freedns.afraid.org . Damit der Zugriff auf einen Webserver hinter der Firewall des DSL-Routers klappt, müssen Sie zusätzlich eine Portweiterleitung einrichten. Wie das funktioniert, lesen Sie auf in einem Betrag .

Webgalerien mit Piwigo: Der eigene Fotoserver

4. Virtuellen Apache-Server erstellen

Für mehrere Webanwendungen konfigurieren Sie virtuelle Server.
Vergrößern Für mehrere Webanwendungen konfigurieren Sie virtuelle Server.

Unter „/etc/apache2/sites-available“ liegen die Konfigurationsdateien für virtuelle Webserver. „virtuell“ bedeutet, dass zwar nur ein Webserver läuft, dieser aber Dateien aus unterschiedlichen Ordnern und damit unterschiedliche Webseiten ausliefert. Sie können das selbst ausprobieren, indem Sie eine Kopie der Datei „000-default.conf“ erstellen und die Kopie bearbeiten:

cd /etc/apache2/sites-available sudo cp 000-default.conf test.conf  sudo nano test.conf  

Entfernen Sie das Kommentarzeichen „#“ vor „ServerName“ und tragen Sie dahinter eine Subdomain wie

ServerName test.zaurak  

ein, die Sie in Punkt 3 in die Datei „/etc/ hosts“ verwendet haben. Bei einem gehosteten Webserver setzen Sie den für Sie registrierten Domainnamen beziehungsweise eine Subdomain ein.

Zusätzlich können Sie mit der Zeile

ServerAlias test.zaurak.fritz.box  

noch eine zweite Domain festlegen.

Ändern Sie den Pfad hinter „Document Root“ auf „/var/www/test“ und hinter „ErrorLog“ und „CustomLog“ die Dateinamen für die Logdateien. Bauen Sie beispielsweise ein „test“ in die Dateinamen ein. Aktivieren Sie die Konfiguration mit den folgenden zwei Befehlszeilen:

a2ensite test  systemctl reload apache2  

Damit erstellen Sie die Verknüpfung „/etc/apache2/sites-enabled/test.conf“ mit „/etc/apache2/sites-available/test.conf“ und veranlassen den Webserver, die Konfiguration neu einzulesen.

Jetzt müssen Sie noch das gewählte „DocumentRoot“ mit Inhalt füllen (zwei Zeilen):

sudo mkdir /var/www/test  sudo echo Testserver >/var/www/ test/index.html  

Rufen Sie im Browser die Domänen auf, die Sie hinter „ServerName“ und „ServerAlias“ festgelegt haben. Beide zeigen den Inhalt der Datei „index.html“ aus dem Ordner „/var/www/test“.

Webserver über Ports ansteuern: In der ersten Zeile der Datei „/etc/apache2/sitesavailable/ test.conf“ steht „<VirtualHost *:80>“. Der Apache-Webserver antwortet daher auf alle Anfragen, die an den Standardport 80 gestellt werden und die zu den Angaben hinter „Servername“ und „Server Alias“ passen. Für eine alternative Konfiguration ändern Sie die erste Zeile:

<VirtualHost *:8080>  

Vor „Servername“ und „ServerAlias“ setzen Sie jeweils das Kommentarzeichen „#“. Öffnen Sie eine weitere Apache-Konfigurationsdatei im Editor:

sudo nano /etc/apache2/ports.conf  

Hier stehen hinter „Listen“ die Ports, auf die der Webserver hört. Das sind die Ports 80 und 443, letzterer aber nur, wenn das Apache-SSL-Modul geladen ist (siehe Punkt 5). Setzen Sie hinter „Listen 80“ die Zeile

Listen 8080  

ein. Die Portnummer ist frei wählbar, soweit sie nicht anderweitig belegt ist. Üblich ist der Bereich von 8000 bis 8139. Aktivieren Sie diese Änderungen:

systemctl reload apache2  

Den Inhalt von „/var/www/test“ rufen Sie jetzt auf dem Server im Browser über „http://localhost:8080“ ab. Auf anderen PCs hängen Sie „:8080“ an den Hostnamen an.

Der Vorteil der Portmethode: Hier müssen Sie die Datei „/etc/hosts“ nicht auf allen Rechnern ändern. Andererseits sind Portnummern schwerer merkbar als aussagekräftige Subdomainnamen. Aber auch das lässt sich mit einem einfachen Trick verbessern. Bauen Sie einfach in die Datei „/var/ www/html/index.html“ des Hauptservers eine Liste mit Links auf die virtuellen Server mit den passenden Ports ein.

Fritzbox-Tuning: Die besten Tipps für den Alltag

5. Zusätzliche Apache-Module aktivieren

Welche zusätzlichen Apache-Module aktiviert sind, sehen Sie an den Verknüpfungen im Verzeichnis „/etc/apache2/mods-enabled“.
Vergrößern Welche zusätzlichen Apache-Module aktiviert sind, sehen Sie an den Verknüpfungen im Verzeichnis „/etc/apache2/mods-enabled“.

Das Paketmanagement kopiert bei der Apache-Installation Start-Scripts zahlreicher Module in das Verzeichnis „/etc/apache2/mods-available“. Welche davon bereits aktiviert sind, sehen Sie an den symbolischen Links im Verzeichnis „/etc/apache2/mods-enabled“.

Wenn Sie Webseiten beispielsweise verschlüsselt per HTTPS übertragen wollen, müssen Sie das zugehörige Modul folgendermaßen aktivieren:

a2enmod ssl  

Ähnlich wie bei „a2ensite“ (siehe Punkt 4) erstellen Sie damit einen symbolischen Link für das SSL-Modul in „/etc/apache2/modsenabled“. Jetzt benötigen Sie noch einen privaten Schlüssel und ein SSL-Zertifikat. Beides erzeugen Sie in einem Terminalfenster mit diesen zwei Befehlszeilen:

sudo openssl genrsa -out /etc/ssl/private/apache.key 4096  sudo openssl req -new -x509 -key /etc/ssl/private/apache.key -days 365 -sha256 -out /etc/ssl/certs/apache.crt  

Nach der zweiten Zeile werden einige Informationen zum Zertifikat abgefragt, die für die Funktion jedoch keine Rolle spielen. Sie können daher eintragen, was Sie wollen. Bei „Common Name“ tragen Sie den Servernamen mit Domain ein, wie ihn nslookup anzeigt (siehe Punkt 3).

Öffnen Sie die SSL-Beispielkonfiguration in einem Editor:

sudo nano /etc/apache2/sites-available/default-ssl.conf  

Passen Sie die Pfade für die zuvor erzeugten Dateien an:

SSLCertificateFile /etc/ssl/certs/apache.crt  SSLCertificateKeyFile /etc/ssl/private/apache.key 

Speichern Sie die Datei und schließen Sie den Editor. Aktivieren Sie die SSL-Konfiguration und lassen Sie den Webserver die geänderte Konfiguration neu einlesen (zwei Zeilen):

sudo a2ensite default-ssl systemctl reload apache2  

Der Webserver ist danach weiterhin über „http://[Hostname]“ erreichbar, die SSL-verschlüsselte Website rufen Sie über „https://[Hostname]“ auf. Webbrowser stufen die Verbindung wegen des selbst signierten Zertifikats als „nicht sicher“ ein. In Firefox klicken Sie auf „Erweitert“, dann auf „Ausnahme hinzufügen...“ und auf „Sicherheits-Ausnahmeregel bestätigen“, damit die Website angezeigt wird.

Umleitung auf HTTPS: Soll eine Website nur noch SSL-verschlüsselt aufrufbar sein, definieren Sie eine Umleitungsregel. Erstellen Sie die Datei „.htaccess“ im Document-Root des Webservers:

sudo nano /var/www/html/.htaccess  

Tippen Sie die folgenden fünf Zeilen ein:

<IfModule mod_rewrite.c> RewriteEngine On  RewriteCond %{HTTPS} off  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule> 

Speichern Sie die Datei und beenden Sie den Editor. Damit Apache die Kommandos in der Datei „.htaccess“ berücksichtigt, müssen Sie noch eine Änderung in der Datei „/etc/apache2/sites-available/000-default.conf“ vornehmen. Ergänzen Sie folgende vier Zeilen unterhalb der Zeile, die mit „DocumentRoot“ beginnt:

<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews  AllowOverride FileInfo </Directory> 

Danach aktivieren Sie das Rewrite-Modul und starten Apache neu:

sudo a2enmod rewrite  sudo systemctl restart apache2  

Weitere Einsatzmöglichkeiten: Das Rewrite-Modul kommt auch bei vielen CMS zum Einsatz. Hier dient es dazu, komplexe URLs suchmaschinenfreundlich umzuschreiben. Aus Adressen wie „ www.meinblog.de/?p=123 “ wird dann beispielsweise „ www.meinblog.de/meine-reise-nach-panama “. Solche Inhaltsbeschreibung in der URL erhöht das Ranking bei Suchmaschinen.

6. Unterstützung für PHP aktivieren

Ob die PHP-Installation erfolgreich war, lässt sich über eine kleines Script ermitteln.
Vergrößern Ob die PHP-Installation erfolgreich war, lässt sich über eine kleines Script ermitteln.

Die am weitesten verbreitete Script-Sprache im Internet ist PHP. Zurzeit findet hier ein Versionssprung von PHP 5 auf PHP 7 statt. Bei Ubuntu 16.04 und 17.10 beispielsweise wird standardmäßig der PHP-Interpreter in der Version 7 ausgeliefert. PHP 7 bietet zwar mehr Leistung, ist aber nicht vollständig kompatibel zu älteren PHP-Versionen. Die meisten größeren Webprojekte wie Wordpress, Drupal, Piwik sind bereits fit für PHP 7, einige kleinere Projekte und Eigenentwicklungen können aber Probleme machen, wenn diese noch nicht für PHP 7 angepasst wurden. Sehen Sie daher bei den Systemvoraussetzungen des gewünschten CMS nach, ob PHP 5 oder 7 unterstützt werden.

PHP 7 installieren: Zur Installation verwenden Sie unter Ubuntu 16.04 im Terminalfenster die Befehlszeile

sudo apt install php php-cli php-mysql libapache2-mod-php  

Damit richten Sie PHP, das Kommandozeilentool php, die häufig genutzten Bibliotheken für die Verbindung zu My-SQL-Datenbanken und das PHP-Modul für Apache ein. Letzteres wird automatisch aktiviert. Für einige Webanwendungen sind zusätzliche PHP-Erweiterungen erforderlich, beispielsweise php-imagick und php-gd (Bilder generieren und manipulieren), phpsqlite3 (Zugriff auf Sqlite-Datenbanken) oder php-pgsql (Zugriff auf Postgre-SQLDatenbanken). Eine Liste der benötigten Module finden Sie in der jeweiligen Installationsanleitung.

PHP 5 installieren: Wenn Sie PHP 5 benötigen, kann die Installation über ein externes Repository (PPA) erfolgen. PHP 5 lässt sich parallel zu PHP 7 installieren, allerdings können Sie nicht beide Versionen gleichzeitig benutzen. Die PHP-Konfiguration ist für beide Versionen getrennt: Für PHP 5.6 liegt die Konfigurationsdatei unter „/etc/php/5.6/apache2/php.ini“ und für Version 7.0 unter „/etc/php/7.0/apache2/ php.ini“. Die Konfigurationsdatei für das Kommandozeilentool php liegt jeweils im Unterverzeichnis „cli“.

sudo add-apt-repository ppa:ondrej/php  sudo apt-get update sudo apt-get install php5.6 php5.6-mysql php-gettext php5.6-mbstring libapache2-mod-php5.6  

Mit diesen drei Befehlen wechseln Sie von PHP 7 zu PHP 5:

sudo a2dismod php7.0  sudo a2enmod php5.6  sudo service apache2 restart  

Und wieder zurück zu Version 7 geht es mit diesen drei Zeilen:

sudo a2dismod php5.6  sudo a2enmod php7.0  sudo service apache2 restart  

PHP-Installation ausprobieren: Erstellen Sie eine Testdatei mit

sudo nano /var/www/html/phpinfo.php  

und tippen Sie diese drei Zeilen ein:

<?php  phpinfo();  ?> 

Speichern Sie den Inhalt und beenden Sie den Editor. Rufen Sie im Webbrowser „ http://localhost/phpinfo.php “ auf. Die angezeigte Webseite informiert Sie über die PHP-Version, die aktuelle Konfiguration, die Konfigurationspfade und die installierten Zusatzmodule.

7. Die Nginx-Basis-Konfiguration

Im Ordner „/etc/nginx/“ liegen alle Konfigurationsdateien des Webservers.
Vergrößern Im Ordner „/etc/nginx/“ liegen alle Konfigurationsdateien des Webservers.

Wenn Sie den Webserver Nginx verwenden wollen und Apache bereits installiert ist, müssen Sie Apache zuerst beenden:

sudo service apache2 stop  

Soll nur noch Nginx zum Einsatz kommen, deinstallieren Sie Apache oder deaktivieren den Dienst mit dieser Befehlszeile:

sudo systemctl disable apache2 

Lesen Sie aber vorher die Ausführungen im Kasten „Nginx als Reverse-Proxy nutzen“, ob für Sie nicht die Kombination von Nginx mit Apache infrage kommt. Installieren Sie dann Nginx:

sudo apt install nginx

Rufen Sie im Browser „http://localhost“ auf. Nginx liefert in der Standardkonfiguration die Datei „index.html“ aus dem Ordner „/var/www/html“ aus, wenn sie bereits vorhanden ist.

Nginxder schnelle Webserver im Überblick

Andernfalls sehen Sie den Inhalt der Nginx-Beispieldatei „index.nginx-debian.html“. Die Nginx-Konfigurationsdateien befinden sich unter „/etc/nginx“. „/etc/nginx/nginx. conf“ enthält die Basiskonfiguration, die weitere Dateien einbindet. „/etc/nginx/sites- enabled/default“ ist eine Verknüpfung mit „/etc/nginx/sites-available/default“. Öffnen Sie die Konfigurationsdatei mit

sudo nano /etc/nginx/sites-enabled/default  

im Editor. Die Parameter für den Webserver stehen im Block hinter „server“ innerhalb der geschweiften Klammer („server {...}“). „listen 80“ legt den Port fest, auf dem der Webserver auf Anfragen horcht. „listen [::]:80“ aktiviert Nginx auch für die IPv6- Adresse des PCs. „root /var/www/html“ bestimmt das Verzeichnis, aus dem der Server Dateien ausliefert.

Für den HTTPS-Zugriff gibt es eine auskommentierte Beispielkonfiguration. Die Pfade zu den Schlüsseln sind in der Datei „/etc/nginx/snippets/snakeoil.conf“ zu finden. Bei Bedarf erzeugen Sie eigene Schlüssel, wie in Punkt 5 beschrieben. Wie bei Apache können Sie mehrere virtuelle Hosts verwenden, indem Sie weitere Konfigurationsdateien unter „/etc/nginx/sites-available“ anlegen und Symlinks dazu in „/etc/nginx/sites-enabled“ erstellen.

Verwenden Sie eine Kopie von „/etc/nginx/sites-available/default“ als Vorlage. Entfernen Sie „default_server“ hinter den „listen“- Zeilen, tragen Sie den gewünschten Ordner hinter „root“ ein und vergeben Sie einen Namen hinter „server_name“.

Für mehrere Server verwenden Sie unterschiedliche Ports oder tragen Namen in die Datei „/etc/hosts“ ein (siehe Punkt 3).

Nginx als Reverse-Proxy

Nginx liefert statische Inhalte schneller aus als Apache. Deshalb ist es oft von Vorteil, die Aufgaben zu verteilen, wobei Apache hauptsächlich für die dynamisch erzeugten Seiten zuständig ist. Dieses Reverse-Proxy genannte Verfahren ist auch nützlich, wenn das gewünschte CMS nicht mit Nginx zusammenarbeitet.

Im ersten Schritt ändern Sie die Apache-Konfiguration, damit der Server nur auf einem höheren lokalen Port erreichbar ist. In der Datei „/etc/apach2/ports.conf“ darf beispielsweise nur

listen 8000  

stehen. In der Datei „/etc/apache2/sites-enabled/000-default.conf“ ändern Sie die erste Zeile in

<VirtualHost 127.0.0.1:8000>  

In die Nginx-Site-Konfiguration „/etc/nginx/sites-enabled/ default“ bauen Sie folgenden Block ein:

location / {  proxy_pass http://127.0.0.1:8000;  include /etc/nginx/proxy_params;  }  location ~* .(js|css|jpg|jpeg|gif|png|svg|ico|pdf|html|htm)$ { expires 30d;  }  

Weitere „location“-Blöcke entfernen Sie aus der Datei. Die PHP-Konfiguration für Nginx ist nicht mehr erforderlich, weil Apache diese Aufgabe übernimmt. Starten Sie dann beide neu:

service apache2 restart  service nginx restart 

Über „http://localhost“ erreichen Sie jetzt den Nginx-Server, der die Anfragen an Apache weiterleitet.

8. Nginx für PHP konfigurieren

In der Nginx-Beispielkonfiguration ist ein auskommentierter Block für PHP enthalten.
Vergrößern In der Nginx-Beispielkonfiguration ist ein auskommentierter Block für PHP enthalten.

Nginx verwendet kein Modul für den Aufruf von PHP-Scripts. Stattdessen kommt ein Dienst zum Einsatz, an den Nginx die Scripts weiterleitet und dessen Ausgaben der Server als Webseiten zum Client sendet. Der Befehl

sudo apt install php-fpm  

installiert die nötige Software für PHP 7 unter Ubuntu 16.04. Wenn Sie PHP 5 verwenden (Installation siehe Punkt 6), geben Sie als Paketnamen „php5.6-fpm“ an. Sollte PHP noch nicht installiert sein, richtet Ubuntu die benötigten Pakete automatisch ein.

Öffnen Sie dann die Konfigurationsdatei:

sudo nano /etc/nginx/sites-enabled/default  

Ein Abschnitt für PHP ist in der Beispieldatei bereits auskommentiert vorhanden. Entfernen Sie die Kommentarzeichen, sodass folgende Zeilen aktiv sind:

location ~ \.php$ {  include snippets/fastcgi-php.conf;  fastcgi_pass unix:/run/php/php7.0-fpm.sock;  }  

Danach starten Sie die Dienste neu:

sudo service nginx restart  sudo service php7.0-fpm restart  

Nutzer von PHP 5 ersetzen „7.0“ jeweils durch „5.6“. Sollte für das Linux-System, beispielsweise Ubuntu 17.10, eine neuere PHP-Version verfügbar sein, passen Sie die Bezeichnungen entsprechend an („7.1“, „7.2“). Welche php-fpm-Dienste laufen, ermitteln Sie mit

sudo service --status-all | grep -i fpm  

Es können gleichzeitig mehrere aktiv sein, etwa php7.0-fpm und php5.6-fpm. Dadurch ist es möglich, für Nginx virtuelle Hosts zu erstellen, die unterschiedliche PHP-Versionen verwenden, wenn Webanwendungen dies erfordern.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
1607540