Installation von Lighttpd mit PHP 7 (PHP-FPM) und MySQL 5.7 auf Ubuntu 16.04 LTS

Lighttpd ist ein sicherer, schneller, standardkonformer Webserver, der für geschwindigkeitskritische Umgebungen entwickelt wurde. Dieses Tutorial zeigt, wie Sie Lighttpd auf einem Ubuntu 16.04 Server mit PHP 7 Unterstützung (über PHP-FPM) und MySQL 5.7 installieren können. PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe, insbesondere für geschäftigere Websites, nützlich sind. Ich verwende in diesem Tutorial PHP-FPM anstelle von Lighttpds spawn-fcgi.

1 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100. Diese Einstellungen können für Sie unterschiedlich sein, so dass Sie sie gegebenenfalls ersetzen müssen.

Ich führe alle Schritte in diesem Tutorial mit root-Rechten aus, also stellen Sie sicher, dass Sie als root angemeldet sind:

sudo -s

2 Installation von MySQL 5.7

Zuerst installieren wir MySQL wie folgt:

apt-get -y install mysql-server mysql-client

Sie werden aufgefordert, ein Passwort für den MySQL-Root-Benutzer anzugeben – dieses Passwort gilt sowohl für den Benutzer root@localhost als auch für root@server1.example.com, so dass wir später kein MySQL-Root-Passwort manuell angeben müssen:

Neues Passwort für den MySQL „root“-Benutzer: <– yourrootsqlpassword
Wiederholen Sie das Passwort für den MySQL „root“-Benutzer: <– yourrootsqlpassword

Geben Sie das MySQL-Passwort ein.

Der Installer hat ein MySQL-Root-Passwort festgelegt, aber es gibt noch einige weitere Einstellungen, die für eine sichere MySQL-Installation geändert werden sollten. Dies kann mit dem Befehl mysql_secure_installation geschehen.

mysql_secure_installation

Der Befehl ist interaktiv:

root@server1:~# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root password
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: <-- Press y if you want this function or press Enter otherwise.
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Press enter
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <-- y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y
Success.
All done!

3 Installation von Lighttpd

Lighttpd ist als Ubuntu-Paket erhältlich. Daher können wir es direkt mit apt aus dem Ubuntu Xenial Xerus Package Repository installieren:

apt-get -y install lighttpd

Richten Sie nun Ihren Browser auf http://192.168.1.100/, und Sie sollten die Lighttpd-Platzhalterseite sehen:

Die Ubuntu Lighttpd Standardseite.

Lighttpds Standard-Dokumentenstamm ist /var/wwww/html auf Ubuntu, und die Konfigurationsdatei ist /etc/lighttpd/lighttpd/lighttpd.conf. Weitere Konfigurationen werden in Dateien im Verzeichnis /etc/lighttpd/conf-available gespeichert – diese Konfigurationen können mit dem Befehl lighttpd-enable-mod aktiviert werden, der einen Symlink aus dem Verzeichnis /etc/lighttpd/conf-enabled zur entsprechenden Konfigurationsdatei in /etc/lighttpd/conf-available erstellt. Sie können Konfigurationen mit dem Befehl lighttpd-disable-mod deaktivieren.

4 Installation von PHP 7.0

Wir können PHP in Lighttpd durch PHP-FPM funktionieren lassen, das wir so installieren:

apt-get -y install php7.0-fpm php7.0

PHP-FPM ist ein Daemon-Prozess (mit dem Initskript php5-fpm), der einen FastCGI-Server auf dem Socket /var/run/php/php/php7.0-fpm.sock betreibt.

5 Lighttpd und PHP 7.0 konfigurieren

Um PHP in Lighttpd zu aktivieren, müssen wir /etc/php/7.0/fpm/php.ini ändern und die Zeile cgi.fix_pathinfo=1 auskommentieren:

nano /etc/php/7.0/fpm/php.ini
[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]

Die Lighttpd-Konfigurationsdatei für PHP /etc/lighttpd/conf-available/15-fastcgi-php.conf ist für die Verwendung mit spawn-fcgi geeignet, wir wollen jedoch PHP-FPM verwenden, daher erstellen wir ein Backup der Datei (genannt 15-fastcgi-php.conf.bak) und ändern 15-fastcgi-php.conf wie folgt:

cd /etc/lighttpd/conf-available/
cp 15-fastcgi-php.conf 15-fastcgi-php.conf.bak
nano 15-fastcgi-php.conf
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php7.0-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php/php7.0-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)

Um die Fastcgi-Konfiguration zu aktivieren, führen Sie die folgenden Befehle aus:

lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php

Dadurch werden die symbolischen Links /etc/lighttpd/conf-enabled/10-fastcgi.conf erstellt, die auf /etc/lighttpd/conf-available/10-fastcgi.conf und /etc/lighttpd/conf-enabled/15-fastcgi-php.conf verweisen, die auf /etc/lighttpd/conf-available/15-fastcgi-php.conf zeigen:

ls -l /etc/lighttpd/conf-enabled
root@server1:/etc/lighttpd/conf-available# ls -l /etc/lighttpd/conf-enabled
total 0
lrwxrwxrwx 1 root root 33 Apr 27 11:26 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
lrwxrwxrwx 1 root root 37 Apr 27 11:26 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf
lrwxrwxrwx 1 root root 42 Apr 21 11:10 90-javascript-alias.conf -> ../conf-available/90-javascript-alias.conf
root@server1:/etc/lighttpd/conf-available#

Dann laden wir Lighttpd nach:

service lighttpd force-reload

Hinweis: Wenn Sie Gebietsschemafehler erhalten, können Sie den Fehler beheben, indem Sie die Option

apt-get -y install language-pack-en-base  
dpkg-reconfigure locales

6 Testen von PHP 7.0 / Details über Ihre PHP-Installation erhalten

Das Dokumentenverzeichnis der Standardwebsite ist /var/wwww/html. Wir werden nun eine kleine PHP-Datei (info.php) in diesem Verzeichnis erstellen und sie in einem Browser aufrufen. Die Datei zeigt viele nützliche Details über unsere PHP-Installation, wie z.B. die installierte PHP-Version.

nano /var/www/html/info.php
<?php
phpinfo();
?>

Nun rufen wir diese Datei in einem Browser (z.B. http://192.168.1.100/info.php) auf:

PHP-Info auf lighttpd.

Wie Sie sehen, funktioniert PHP 7.0, und es arbeitet mit FPM/FastCGI, wie in der Server-API-Zeile dargestellt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die in PHP5 bereits aktiviert sind. MySQL ist dort nicht aufgeführt, was bedeutet, dass wir noch keine MySQL-Unterstützung in PHP haben.

7 MySQL-Unterstützung in PHP erhalten

Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php7.0-mysql installieren. Es ist eine gute Idee, einige andere PHP-Module zu installieren, da Sie diese für Ihre Anwendungen benötigen könnten. Sie können auf diese Weise nach verfügbaren PHP-Modulen suchen:

apt-cache search php7.0

Wählen Sie die gewünschten aus und installieren Sie sie so:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

APCu ist eine Erweiterung für das PHP Opcache Modul, das mit PHP 7 ausgeliefert wird, es erweitert einige Kompatibilitätsfunktionen für Software, die den APC-Cache unterstützt (z.B. WordPress Cache Plugins).

APCu kann wie folgt installiert werden:

apt-get -y install php-apcu

Laden Sie nun PHP-FPM neu:

service php7.0-fpm reload

Laden Sie nun http://192.168.1.100/info.php in Ihrem Browser neu und scrollen Sie erneut nach unten zum Modulbereich. Sie sollten dort nun viele neue Module finden, darunter das mysqli- und mysqlnd-Modul:

8 phpMyAdmin

phpMyAdmin ist eine Weboberfläche, mit der Sie Ihre MySQL-Datenbanken verwalten können. Es ist eine gute Idee, es zu installieren:

apt-get -y install phpmyadmin

Sie werden die folgenden Fragen sehen:

Web server to reconfigure automatically: <-- lighttpd
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press Enter

Wenn Sie den folgenden Fehler erhalten:

Run /etc/init.d/lighttpd force-reload to enable changes
dpkg: error processing package phpmyadmin (--configure):
subprocess installed post-installation script returned error exit status 2
E: Sub-process /usr/bin/dpkg returned an error code (1)

Führen Sie dann diese Befehle aus:

/etc/init.d/lighttpd force-reload
apt-get -y install phpmyadmin

Danach können Sie phpMyAdmin unter http://192.168.1.100/phpmyadmin/: erreichen:

9 PHP-FPM dazu bringen, eine TCP-Verbindung zu verwenden (optional)

Standardmäßig lauscht PHP-FPM auf dem Socket /var/run/php/php/php7.0-fpm.sock. Es ist auch möglich, dass PHP-FPM eine TCP-Verbindung verwendet. Öffnen Sie dazu /etc/php/7.0/fpm/pool.d/www.conf…

nano /etc/php/7.0/fpm/pool.d/www.conf

…. und lassen Sie die Hörleitung wie folgt aussehen:

[...]
;listen = /var/run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000
[...]

Dadurch wird PHP-FPM auf Port 9000 auf der IP 127.0.0.0.0.1 (localhost) lauschen. Stellen Sie sicher, dass Sie einen Port verwenden, der auf Ihrem System nicht verwendet wird.

Laden Sie dann PHP-FPM neu:

service php7.0-fpm reload

Öffnen Sie als nächstes die PHP-Konfigurationsdatei von Lighttpd /etc/lighttpd/conf-available/15-fastcgi-php.conf und ersetzen Sie die Socket-Leitung durch Host- und Portleitungen:

nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php7.0-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "host" => "127.0.0.1",
                "port" => "9000",
                "broken-scriptfilename" => "enable"
        ))
)

Laden Sie schließlich Lighttpd neu:

service lighttpd force-reload

10 Links

Das könnte dich auch interessieren …