Інтерпретатор мови програмування php може працювати в декількох режимах. Він може бути інтегрований у веб-сервер у вигляді спеціального модуля або використовуватися як окремий сервіс php-fpm. Абревіатура fpm розшифровується як fastcgi process manager. Це сервіс, який запускає кілька процесів, які можуть виконувати php скрипти.

Php-fpm може отримувати скрипти, які треба виконати, за допомогою tcp або unix сокетів. Саме такий спосіб виконання скриптів використовується в nginx. У цій статті ми розглянемо як виконується установка nginx з php-fpm в ubuntu.

Установка nginx на ubuntu 20.04

Встановити nginx можна двома способами. Перший спосіб полягає в установки пакета з офіційного репозиторію ubuntu. На момент написання статті (1 серпня 2021 року) актуальною версією nginx присутньою в репозиторії ubuntu була версія 1.18.0. Дана версія вважається застарілою. Актуальною ж версією вважається 1.20.1 (станом на 1 серпня 2021 року).

1. Офіційні репозиторії ubuntu

Якщо ви хочете встановити версію nginx з репозиторіїв ubuntu необхідно виконати наступні дії. Для початку оновлюємо списки пакетів за допомогою команди:

Для того, щоб встановити nginx, досить виконати команду:

Sudo apt-y install nginx

Після цього програму можна використовувати. Перевірка і настройка програми буде описана в розділах нижче.

2. Офіційні репозиторії nginx

Другий спосіб полягає в установці останньої версії nginx з офіційних репозиторіїв, які надають розробники nginx. Якщо ви хочете використовувати даний метод установки, для початку необхідно оновити списки пакетів за допомогою команди:

Sudo apt update

Встановіть необхідні пакети:

Sudo apt-y install curl gnupg2 ca-certificates lsb-release

Далі у вас на вибір є два шляхи-підключити репозиторій зі стабільною версією nginx або підключити репозиторій з основною версією. Стабільна версія є більш перевіреною і працездатною. Цю версію можна використовувати, як і в тестових середовищах так і на виробничих. Основна версія не така стабільна і може містити помилки. Дану версію не рекомендується використовувати у виробничих середовищах.

Для підключення сховища зі стабільною версією nginx, виконайте наступну команду:

Echo ” deb http://nginx.org/packages/ubuntu `lsb_release-cs` nginx | / sudo tee / etc/apt / sources.list.d/nginx.list

Для підключення сховища з основною версією nginx, виконайте наступну команду:

Echo ” deb http://nginx.org/packages/mainline/ubuntu `lsb_release-cs` nginx | / sudo tee / etc/apt / sources.list.d/nginx.list

Наступні кроки необхідно виконувати незалежно від обраного репозиторію. Імпортуйте офіційний ключ, який використовується пакетним менеджером для перевірки автентичності пакетів:

Перевірте, чи вірний ключ був завантажений:

Gpg –dry-run –quiet –import –import-options import-show / tmp / nginx_signing.key

Висновок команди повинен містити повний відбиток ключа 573bfd6b3d8fbc641079a6ababf5bd827bd9bf62 :

Перемістіть ключ до каталогу довірених ключів apt:

Sudo mv /tmp/nginx_signing.key /etc/apt/trusted.gpg.d/nginx_signing.asc

Щоб встановити nginx, виконайте наступні команди:

Sudo apt update

Sudo apt-y install nginx

Версія nginx від розробників трохи відрізняється від версії з офіційних репозиторіїв. Всі додаткові конфігураційні файли тут знаходяться в папці / etc/nginx / conf.d. Якщо ви хочете використовувати папки sites-available і sites-enabled, то необхідно їх створити:

Sudo mkdir / etc/nginx /sites-availablesudo mkdir/etc/nginx /sites-enabled

Потім додайте наступний рядок в кінець секції http файлу /etc / nginx.conf для того щоб з папки /etc/nginx/sites-enabled завантажувалася конфігурація сайтів:

Sudo vi /etc/nginx/nginx.conf

Потім перезапустіть nginx:

Sudo nginx-s reload

3. Запуск nginx

Після установки пакета, перевіряємо що nginx успішно запустився за допомогою команди:

Sudo systemctl status nginx

Якщо в статусі замість active буде inactive (dead) , то сервіс необхідно запустити вручну за допомогою команди:

Sudo systemctl start nginx

Так само зверніть увагу, що ви не можете запускати apache і nginx на одному порту. У такому випадку ви отримаєте помилку nginx address already in use 80. для коректної роботи nginx, необхідно буде відключити веб-сервер apache (якщо він у вас використовується) або змінити його порт з 80 (який використовується за замовчуванням) на інший вільний порт.

4. Налаштування брандмауера

За замовчуванням брандмауер закриває всі невирішені вхідні підключення. Тому, щоб до вашого веб-сервера можна було отримати доступ ззовні, необхідно додати його порт до винятків:

Sudo ufw allow in 80 / tcp

5. Перевірка роботи nginx

Після того, як nginx буде запущений, він буде доступний за адресою сервера, на який він встановлювався. Ви можете перевірити, чи все працює, просто перейшовши за адресою сервера, ввівши його в браузері. Для прикладу nginx був встановлений на localhost:

Якщо ви побачите вітальне повідомлення як на скріншоті вище це означає що nginx успішно встановлений і запущений.

Установка php-fpm в ubuntu

Наступним кроком буде установка інтерпретатора мови програмування php і всіх необхідних модулів для роботи з php-fpm. Для установки всіх необхідних модулів виконайте команду:

Sudo apt -y install php7.4 php7.4-cli php7.4-fpm php7.4-json php7.4-pdo php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml, php-pear php7.4-bcmath

На момент написання статті (1 серпня 2021) актуальною версією php в офіційних репозиторіях ubuntu вважалася версія 7.4. Сама ж остання офіційна версія php від розробників 8.0.9 (станом на 29 липня 2021 року). Після установки всіх необхідних пакетів перевіряємо статус php-fpm:

Systemctl status php7.4-fpm.service

Якщо в статусі замість active буде inactive (dead) , то сервіс необхідно запустити вручну за допомогою команди:

Sudo systemctl start php7.4-fpm.service

Після того, як сервіс запустився, установка буде вважатися виконаною.

Підключення nginx до php-fpm

Щоб приймати запити fastcgi від nginx, php-fpm може прослуховувати сокет tcp / ip або unix сокет. Сокети unix є засобом міжпроцесної взаємодії, яка забезпечує ефективний обмін даними між процесами, що працюють в одній і тій же операційній системі, в той час як сокети tcp/ip дозволяють процесам обмінюватися даними по мережі.

На відміну від сокета tcp / ip, який ідентифікує сервер за ip-адресою і порту (наприклад, 127.0.0.1:9000), ви можете прив’язати сервер до сокету unix, використовуючи шлях до файлу (наприклад, /run/php-fpm/www.sock ), який видно у файловій системі.

Сокет unix-це особливий тип файлу-до нього застосовуються дозволи на доступ до файлів і каталогів (як у випадку з будь-яким іншим типом файлу unix), і його можна використовувати для обмеження того, які процеси на хості можуть читати і записувати в файл, (і, таким чином, спілкуватися з внутрішнім сервером).

Таким чином, сокет unix є безпечним, оскільки його можуть використовувати тільки процеси на локальному хості. Сокет tcp / ip може бути доступний з інтернету, і це може становити загрозу безпеці, якщо не будуть вжиті додаткові заходи безпеки, такі як налаштування брандмауера.

Налаштування php-fpm для прослуховування на сокеті unix

Щоб налаштувати php-fpm на прослуховування сокета unix, відкрийте файл конфігурації пулу php-fpm за замовчуванням, використовуючи свій улюблений текстовий редактор за допомогою команди:

Sudo nano /etc/php/7.4/fpm/pool.d/www.conf

Потім знайдіть директиву listen і задайте для неї шлях до файлу сокета unix наступним чином – listen = /run/php/php7.4-fpm.sock

Якщо ви використовуєте сокет unix, вам також необхідно встановити відповідні дозволи на читання / запис для файлу, щоб дозволити підключення з веб-сервера nginx. За замовчуванням nginx працює як користувач www-data в ubuntu.

Знайдіть параметри listen.owner і listen.group і задайте їм значення www-data . Також встановіть режим на 0660 , для параметра listen.mode .

Налаштування php-fpm для прослуховування через сокет tcp / ip

Хоча сокет unix швидше сокета tcp / ip, він меншМасштабований, оскільки він може підтримувати міжпроцесну взаємодію тільки в одній і тій же ос. Якщо nginx і внутрішній сервер додатків (php-fpm) працюють в різних системах, вам доведеться налаштувати php-fpm для прослуховування сокетів tcp/ip для віддаленого підключення.

У файлі конфігурації пулу php-fpm встановіть адресу прослуховування, наприклад: 127.0.0.1:9000 . Переконайтеся, що вибраний вами порт не використовується іншим процесом або службою в тій же системі.

Знайдіть параметр listen і пропишіть адресу – 127.0.0.1:9000 :

Збережіть зміни та закрийте файл. Установка nginx php fpm практично завершена.

Налаштування nginx для роботи php-fpm

Після того, як ви налаштували адресу, яку прослуховує php-fpm, вам потрібно налаштувати nginx для запиту проксі до нього через цю адресу, використовуючи параметр конфігурації fastcgi_pass , який розташовується у файлі конфігурації блоку віртуального хоста.

Для прикладу, візьмемо файл конфігурації стандартної сторінки сайту nginx яка відкривається при першому запуску nginx, розташований за наступним шляхом – /etc/nginx/conf.d/default.conf , відкриємо його для редагування:

Якщо ви налаштували php-fpm для прослуховування на сокеті unix, знайдіть блок розташування для обробки файлів .php і встановіть наступні параметри для fastcgi:

Location ~ .php$ {fastcgi_pass unix:/run/php-fpm/www.sock;fastcgi_index index.php; fastcgi_param script_filename / scripts$fastcgi_script_name; include / etc / nginx / fastcgi_params;}

Якщо використовується tcp/ip сокет, замініть значення в параметрі fastcgi_pass на ip-адресу і порт сервера, на якому працює php-fpm fastcgi:

Location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param script_filename /scripts$fastcgi_script_name;include /etc/nginx/fastcgi_params;}

Після внесення змін в конфігурації nginx перевірте правильність синтаксису за допомогою команди:

Sudo nginx -t

Далі вам необхідно перезапустити служби, щоб застосувати зміни, використовуючи для цього команди:

Sudo systemctl restart nginxsudo systemctl restart php7.4-fpm

Після перезапуску служб, підключення вважається виконаним успішно. Для подальшого налаштування php-fpm скористайтеся статтею налаштування php-fpm на ubuntu 20.04 – настройка php-fpm

Видалення nginx і php-fpm з ubuntu

Щоб повністю видалити nginx і php-fpm з системи, достатньо видалити всі пакети, які ви встановили раніше:

Sudo apt -y purge nginx php7.4 php7.4-cli php7.4-fpm php7.4-json php7.4-pdo php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml, php-pear php7.4-bcmath

Команда purge дозволяє видалити не тільки пакети, але і їх конфігураційні файли. Якщо ви хочете залишити конфігураційні файли, використовуйте команду remove.

Висновки

У цій статті ми розібрали, як виконується установка nginx php-fpm в ubuntu 20.04. Як бачите, це не дуже складно і з таким завданням може впоратися навіть новачок. Якщо у вас залишилися питання, залишайте їх в коментарях!

( 1 оцінок, середнє: 5,00