Налаштування nginx для підтримки php за допомогою fastcgi

Nginx включає в себе підтримку технології FastCGI для роботи з зовнішніми серверами і утилітами. PHP теж підтримує FastCGI і може бути використаний для обробки FastCGI-запитів від nginx.

Отже, для початку нам необхідно встановити PHP з підтримкою технології fastcgi і запустити його на будь-якому tcp-порту, на який потім будуть переправлятися запити з nginx. Процес інсталяції може відрізнятися на різних системах, тому я опишу процес складання PHP з вихідного коду як один з найпоширеніших методів. Для того, щоб отримати версію інтерпретатора PHP з підтримкою FastCGI, Ви можете використовувати наступний набір команд:

# ./configure --prefix = / opt / php --enable-fastcgi

Коли ця послідовність команд буде успішно завершена, Ви зможете запустити свій fastcgi-сервер. Але існує два можливих варіанти, як це зробити:

  • Запуск вбудованого в PHP сервера FastCGI - метод, який не потребує ніяких додаткових утиліт.
  • Запуск PHP всередині будь-якого стороннього обробника запитів - цей варіант може бути більш зручним через більшої гнучкості в налаштуванні.

Якщо Ви вирішили не використовувати ніякого стороннього ПЗ, то можете запустити PHP з використанням його вбудованого менеджера FastCGI-запитів за допомогою наступного скрипта:

## ABSOLUTE path to the PHP binary

## tcp-port to bind on

## number of PHP children to spawn

## number of request before php-process will be restarted

# Allowed environment variables sperated by spaces

ALLOWED_ENV = "ORACLE_HOME PATH USER"

## if this script is run as root switch to the following user

################## no config below this line

if test x $ PHP_FCGI_CHILDREN = x; then

if test x $ UID = x0; then

EX = "/ bin / su -m -c" $ PHPFCGI -q -b $ FCGIADDR: $ FCGIPORT "$ USERID"

EX = "$ PHPFCGI -b $ FCGIADDR: $ FCGIPORT"

for i in $ ALLOWED_ENV; do

# Clean environment and set up a new one

nohup env - $ E sh -c "$ EX" > / Dev / null

Якщо ж Ви вирішили спробувати використовувати будь-яке стороннє програмне забезпечення для запуску PHP як FastCGI-сереру, можу порадити Вам поглянути на утиліту spawn-fcgi з пакета lighttpd.

Отже, Ваше сервер PHP запущений в режимі FastCGI і останнє, що Вам залишилося зробити, це змінити конфігурацію Вашого сервера nginx таким чином, щоб він переправляв всі запити до файлів php на певний tcp-порт, на якому слухає PHP. Для цього може бути використаний такий приклад секції location з конфігураційного файлу nginx (повна версія прикладу нвходітся тут):

# Pass the PHP scripts to FastCGI server listening on 127.0.0.1:8888

fastcgi_param SCRIPT_FILENAME / usr / local / nginx / html $ fastcgi_script_name;

fastcgi_param QUERY_STRING $ query_string;

fastcgi_param REQUEST_METHOD $ request_method;

fastcgi_param CONTENT_TYPE $ content_type;

fastcgi_param CONTENT_LENGTH $ content_length;

От і все! Тепер Ви можете використовувати Ваш сервер nginx для обслуговування будь-яких сайтів, написаних на PHP з продуктивністю, близькою до тієї, з якою працює модель mod_php в Apache, але при цьому у вас буде більше вільного місця, що дозволить Вам обробляти більше запитів від посетітесей Ваших сайтів .

Примітка: Скрипт запуску Fast CGI (який представлений в цій статті) - не повний, у нього відсутня нижня частина! Хоча ні, начебто працює.

Схожі статті