GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Verwendung von PHP-FPM mit Apache unter Ubuntu 16.04

Dieses Tutorial zeigt, wie Sie einen Apache-Webserver auf einem Ubuntu 16.04-Server mit PHP 7 (über PHP-FPM) und MySQL-Unterstützung installieren. PHP-FPM (FastCGI Process Manager) ist eine alternative PHP-FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe nützlich sind, insbesondere für stark frequentierte Websites.

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 abweichen, daher müssen Sie sie gegebenenfalls ersetzen.

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

sudo su

2 Installation von MySQL oder MariaDB

Ubuntu bietet sowohl MySQL- als auch MariaDB-Pakete an. MariaDB ist ein MySQL-Fork, der vom ursprünglichen MySQL-Entwickler Monty Widenius bereitgestellt wird. Folgen Sie entweder Kapitel 2.1 oder 2.2, um den Datenbankserver zu installieren.

2.1 Installieren Sie MySQL 5.7

Zuerst installieren wir MySQL 5.7 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 [email protected] als auch für [email protected], sodass 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

Führen Sie mysql_secure_installation aus um die MySQL-Datenbank zu sichern und den Zugriff auf die Testdatenbank zu deaktivieren.

mysql_secure_installation

Ihnen werden folgende Fragen gestellt:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

2.2 MariaDB installieren

Führen Sie den folgenden Befehl aus, um den MariaDB-Server und -Client zu installieren:

apt-get -y install mariadb-server mariadb-client

Jetzt setzen wir ein Root-Passwort für MariaDB.

mysql_secure_installation

Ihnen werden folgende Fragen gestellt:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

3 Apache installieren

Apache 2.4 ist als Ubuntu-Paket verfügbar. Wir brauchen das Apache2-Paket, das wir so installieren können:

apt-get -y install apache2

Richten Sie nun Ihren Browser auf http://192.168.1.100, und Sie sollten die Apache-Platzhalterseite sehen (It works!):

Das Standard-Dokumentenverzeichnis von Apache ist /var/www/html auf Ubuntu, und die Konfigurationsdatei ist /etc/apache2/apache2.conf. Zusätzliche Konfigurationen werden in Unterverzeichnissen des /etc/apache2-Verzeichnisses wie /etc/apache2/mods-enabled (für Apache-Module), /etc/apache2/sites-enabled (für virtuelle Hosts) und /etc/apache2/conf gespeichert .d.

4 Installation von PHP 7

Wir können PHP 7 in Apache2 durch PHP-FPM und Apaches mod_fastcgi-Modul zum Laufen bringen, das wir wie folgt installieren:

apt-get -y install libapache2-mod-fastcgi php7.0-fpm php7.0

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

ausführt

Als nächstes aktivieren Sie die folgenden Apache-Module...

a2enmod actions fastcgi alias

... und Apache neu starten:

systemctl restart apache2.service

5 Apache konfigurieren

Damit Apache mit PHP-FPM funktioniert, benötigen wir die folgende Konfiguration:

        <IfModule mod_fastcgi.c>
                AddHandler php7-fcgi .php
                Action php7-fcgi /php7-fcgi
                Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
                FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
        </IfModule>

Sie können es in die globale Apache-Konfiguration einfügen (so dass es für alle vhosts aktiviert ist), zum Beispiel in /etc/apache2/conf.d/php7.0-fpm.conf (diese Datei existiert nicht, also müssen Sie sie erstellen) , oder Sie können es in jedem vhost platzieren, der PHP-FPM verwenden soll. Ich möchte PHP-FPM mit dem Standard-vhost verwenden, also öffne ich seine vhost-Konfigurationsdatei /etc/apache2/sites-available/000-default.conf.

nano /etc/apache2/sites-available/000-default.conf

... und fügen Sie den folgenden Abschnitt irgendwo zwischen :

ein
        <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
<IfModule mod_fastcgi.c> SetHandler php7-fcgi .php Action php7-fcgi /php7-fcgi virtual Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization </IfModule>

Danach Apache neu starten:

systemctl restart apache2.service

Erstellen Sie nun die folgende PHP-Datei im Document Root /var/www:

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

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

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

Bitte beachten: Wenn Sie das PHP 7-Apache-Modul installiert haben (mod_php), kann dies z. Wenn Sie mit einem LAMP-Server-Setup Ihres ISPs beginnen und nicht mit einem leeren Server, wie ich es in diesem Tutorial getan habe, müssen Sie möglicherweise mod_php wie unten gezeigt deaktivieren.

a2dismod php7.0

und Apache neu starten:

systemctl restart apache2.service

6 MySQL-/MariaDB-Unterstützung in PHP 7 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, die Sie möglicherweise für Ihre Anwendungen benötigen. Sie können wie folgt nach verfügbaren PHP-Modulen suchen:

apt-cache search php7.0

Wählen Sie die benötigten aus und installieren Sie sie wie folgt:

apt-get install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php7.0-imap php7.0-mcrypt php7.0-ps php7.0-pspell php7.0-recode php7.0-snmp php7.0-sqlite php7.0-tidy php7.0-xmlrpc php7.0-xsl

Laden Sie nun PHP-FPM neu:

systemctl reload php7.0-fpm.service

Laden Sie nun http://192.168.1.100/info.php in Ihrem Browser neu und scrollen Sie erneut nach unten zum Modulbereich. Dort sollten Sie jetzt viele neue Module finden, einschließlich des MySQLi-Moduls:

7 phpMyAdmin

phpMyAdmin ist eine Webschnittstelle, über die Sie Ihre MySQL-Datenbanken verwalten können. Es ist eine gute Idee, es zu installieren:

apt-get -y install phpmyadmin

Sie sehen die folgenden Fragen:

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

Danach erreichen Sie phpMyAdmin unter http://192.168.1.100/phpmyadmin/

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

HINWEIS: Dieses Kapitel zeigt die Konfiguration von PHP-FPM über TCP. Ich werde dies als Konfigurationsbeispiel zeigen und es könnte Setups geben, in denen Sie dies benötigen, z. wenn der fastcgi-Prozess auf einem zweiten Server läuft, aber im Allgemeinen ist es schneller, Sockets zu verwenden. Vielleicht möchten Sie dieses Kapitel überspringen.

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

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

... und lass die Listen-Zeile wie folgt aussehen:

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

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

Laden Sie dann PHP-FPM neu:

systemctl reload php7.0-fpm.service

Gehen Sie als Nächstes Ihre Apache-Konfiguration und alle Ihre vhosts durch und ändern Sie die Zeile FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization in FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Autorisierung, z. B. so:

nano /etc/apache2/sites-available/000-default.conf
[...]
 <Directory /usr/lib/cgi-bin>
Require all granted
</Directory>

<IfModule mod_fastcgi.c>
AddHandler php7-fcgi .php
Action php7-fcgi /php7-fcgi virtual
Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Authorization
</IfModule> [...]

Zum Schluss Apache neu laden:

systemctl reload apache2.service

  • Apache:http://httpd.apache.org/
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MySQL:http://www.mysql.com/
  • Ubuntu:http://www.ubuntu.com/
  • phpMyAdmin:http://www.phpmyadmin.net/

Ubuntu
  1. Installieren von mod_pagespeed mit Apache auf Ubuntu/CentOS

  2. Wie setzt man das Ubuntu-Passwort zurück?

  3. Root-Konto in Ubuntu deaktivieren?

  4. So installieren Sie PHP-FPM mit Apache unter Ubuntu 20.04

  5. So installieren Sie PHP-FPM mit Apache unter Ubuntu 22.04

So setzen Sie das Root-Passwort in Ubuntu 17.10 zurück

Installieren Sie phpMyAdmin mit Apache auf Ubuntu 20.04

So ändern Sie das Root-Passwort unter Ubuntu 20.04

So ändern Sie das sudo-Passwort in Ubuntu

So setzen Sie das vergessene Root-Passwort in Ubuntu 20.04 zurück

So richten Sie die Passwortauthentifizierung mit Apache unter Ubuntu 18.04 ein