GNU/Linux >> Znalost Linux >  >> Ubuntu

Použití PHP-FPM s Apache na Ubuntu 16.04

Tento tutoriál ukazuje, jak nainstalovat webový server Apache na server Ubuntu 16.04 s PHP 7 (prostřednictvím PHP-FPM) a podporou MySQL. PHP-FPM (FastCGI Process Manager) je alternativní implementace PHP FastCGI s některými dalšími funkcemi užitečnými pro weby jakékoli velikosti, zejména pro rušnější weby.

1 předběžná poznámka

V tomto tutoriálu budu používat název hostitele server1.example.com s IP adresou 192.168.1.100. Tato nastavení se pro vás mohou lišit, takže je v případě potřeby musíte nahradit.

Všechny kroky v tomto tutoriálu provádím s právy root, takže se ujistěte, že jste přihlášeni jako root:

sudo su

2 Instalace MySQL nebo MariaDB

Ubuntu poskytuje MySQL a také balíčky MariaDB. MariaDB je MySQL fork poskytovaný původním vývojářem MySQL Monty Widenius. Při instalaci databázového serveru postupujte podle kapitoly 2.1 nebo 2.2.

2.1 Instalace MySQL 5.7

Nejprve nainstalujeme MySQL 5.7 takto:

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

Budete požádáni o zadání hesla pro uživatele root MySQL – toto heslo je platné pro uživatele [chráněno e-mailem] i [chráněno e-mailem], takže později nemusíme heslo root MySQL zadávat ručně:

Nové heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword
Opakujte heslo pro uživatele "root" MySQL:<-- yourrootsqlpassword

Spusťte mysql_secure_installation k zabezpečení databáze MySQL a zakázání přístupu k testovací databázi.

mysql_secure_installation

Budou vám položeny tyto otázky:

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 Instalace MariaDB

Spusťte následující příkaz k instalaci serveru MariaDB a klienta:

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

Nyní nastavíme heslo root pro MariaDB.

mysql_secure_installation

Budou vám položeny tyto otázky:

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 Instalace Apache

Apache 2.4 je k dispozici jako balíček Ubuntu. Potřebujeme balíček apache2, který můžeme nainstalovat takto:

apt-get -y install apache2

Nyní nasměrujte svůj prohlížeč na http://192.168.1.100 a měli byste vidět zástupnou stránku Apache (funguje to!):

Výchozí kořen dokumentu Apache je /var/www/html na Ubuntu a konfigurační soubor je /etc/apache2/apache2.conf. Další konfigurace jsou uloženy v podadresářích adresáře /etc/apache2, jako je /etc/apache2/mods-enabled (pro moduly Apache), /etc/apache2/sites-enabled (pro virtuální hostitele) a /etc/apache2/conf .d.

4 Instalace PHP 7

Můžeme zajistit fungování PHP 7 v Apache2 pomocí PHP-FPM a modulu Apache mod_fastcgi, který nainstalujeme následovně:

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

PHP-FPM je proces démona (s jednotkou systemd php7.0-fpm.service), který spouští server FastCGI na soketu /var/run/php/php7.0-fpm.sock.

Dále povolte následující moduly Apache...

a2enmod actions fastcgi alias

... a restartujte Apache:

systemctl restart apache2.service

5 Konfigurace Apache

Aby Apache fungoval s PHP-FPM, potřebujeme následující konfiguraci:

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

Můžete jej vložit do globální konfigurace Apache (takže je povolena pro všechny vhosty), například do /etc/apache2/conf.d/php7.0-fpm.conf (tento soubor neexistuje, takže jej musíte vytvořit) , nebo jej můžete umístit do každého vhostu, který by měl používat PHP-FPM. Chci používat PHP-FPM s výchozím vhostem, takže otevřu jeho konfigurační soubor vhost /etc/apache2/sites-available/000-default.conf.

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

... a vložte následující sekci někam mezi :

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

Poté restartujte Apache:

systemctl restart apache2.service

Nyní vytvořte následující soubor PHP v kořenovém adresáři dokumentu /var/www:

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

Nyní tento soubor nazýváme v prohlížeči (např. http://192.168.1.100/info.php):

Jak vidíte, PHP 7 funguje a funguje přes FPM/FastCGI, jak je znázorněno na řádku Server API. Pokud se posunete dále dolů, uvidíte všechny moduly, které jsou již v PHP povoleny. MySQL zde není uveden, což znamená, že zatím nemáme podporu MySQL v PHP.

Poznámka: Pokud máte nainstalovaný modul PHP 7 apache (mod_php), může se to stát např. když začnete s nastavením serveru LAMP vašeho ISP a ne s prázdným serverem, jako jsem to udělal v tomto tutoriálu, možná budete muset vypnout mod_php, jak je uvedeno níže.

a2dismod php7.0

a restartujte Apache:

systemctl restart apache2.service

6 Získání podpory MySQL / MariaDB v PHP 7

Abychom získali podporu MySQL v PHP, můžeme nainstalovat balíček php7.0-mysql. Je dobré nainstalovat některé další moduly PHP, stejně jako je můžete potřebovat pro své aplikace. Dostupné moduly PHP můžete vyhledat takto:

apt-cache search php7.0

Vyberte ty, které potřebujete, a nainstalujte je takto:

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

Nyní znovu načtěte PHP-FPM:

systemctl reload php7.0-fpm.service

Nyní znovu načtěte http://192.168.1.100/info.php ve svém prohlížeči a znovu přejděte dolů do sekce moduly. Nyní byste tam měli najít spoustu nových modulů, včetně modulu MySQLi:

7 phpMyAdmin

phpMyAdmin je webové rozhraní, přes které můžete spravovat své databáze MySQL. Je to dobrý nápad nainstalovat:

apt-get -y install phpmyadmin

Uvidíte následující otázky:

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

Poté můžete přistupovat k phpMyAdmin pod http://192.168.1.100/phpmyadmin/

8 Nastavení PHP-FPM pomocí připojení TCP (volitelné)

POZNÁMKA: Tato kapitola ukazuje konfiguraci PHP-FPM přes TCP. Ukážu to jako příklad konfigurace a mohou existovat nastavení, kde to budete potřebovat, např. když proces fastcgi běží na druhém serveru, ale obecně je rychlejší používat sokety. Takže možná budete chtít tuto kapitolu přeskočit.

Ve výchozím nastavení PHP-FPM naslouchá na soketu /var/run/php/php7.0-fpm.sock. Je také možné, aby PHP-FPM používal TCP spojení. Chcete-li to provést, otevřete /etc/php5/fpm/pool.d/www.conf...

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

... a řádek pro poslech nastavte následovně:

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

Díky tomu bude PHP-FPM naslouchat na portu 9000 na IP 127.0.0.1 (localhost). Ujistěte se, že používáte port, který se ve vašem systému nepoužívá.

Poté znovu načtěte PHP-FPM:

systemctl reload php7.0-fpm.service

Dále projděte konfiguraci Apache a všechny své vhosty a změňte řádek FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization na FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -host 127.0.0.1:9000 -pass-header Autorizace, např. takhle:

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> [...]

Nakonec znovu načtěte Apache:

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. Instalace mod_pagespeed s Apache na Ubuntu/CentOS

  2. Jak obnovit heslo Ubuntu?

  3. Zakázat root účet v Ubuntu?

  1. Jak změnit Sudo nebo Root heslo v Ubuntu

  2. Jak nainstalovat PHP-FPM s Apache na Ubuntu 20.04

  3. Jak nainstalovat PHP-FPM s Apache na Ubuntu 22.04

  1. Ubuntu 20.04 resetuje heslo root

  2. Ubuntu 20.04 WordPress s instalací Apache

  3. Zapomněli jste heslo serveru ubuntu?