Установка PHP FastCGI из исходников

Приведу пример установки PHP c FastCGI вручную из библиотек на CentOS 7 или PHP 7.4.12. Можно использовать установку как для Apache, так и для Nginx, но последующая конфигурация будет различаться.

Смотрим доступную версию на https://www.php.net/releases/

cd /opt
wget https://www.php.net/distributions/php-7.4.12.tar.gz 
tar xvf php-7.4.12.tar.gz
cd php-7.4.12
Переименуйте каталог в /opt/php74
Установка зависимостей:
yum install gcc make libxml2-devel openssl-devel curl-devel curl libjpeg-devel libpng-devel freetype-devel libmcrypt-devel \
postgresql-devel
Сборка:
./configure \
--prefix=/opt/php74 \
--with-config-file-path=/opt/php74 \
--with-pdo-pgsql \
--with-zlib-dir \
--with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable-calendar \
--with-curl=/usr/bin \
--with-mcrypt \
--with-zlib \
--with-gd \
--with-pgsql \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--with-mhash \
--enable-zip \
--with-pcre-regex \
--with-mysql \
--with-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--with-openssl \
--with-libdir=lib64 \
--enable-ftp \
--with-kerberos \
--with-gettext \
--enable-cli \
--enable-fastcgi \
--enable-discard-path \
--enable-force-cgi-redirect \
--enable-cgi
make
make install
Если хотите использовать FPM вместо CGI, то тогда вместо последней строки --enable-cgi, используйте 
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-fpm
Если вы хотите использовать эту версию PHP-FPM с Apache, то используйте переключатели --with-fpm-user=apache и --with-fpm-group=apache. Если вы хотите использовать эту версию PHP-FPM с nginx, --with-fpm-user=nginx и --with-fpm-group=nginx .
Значение после знака = должно соответствовать реальному пользователю, под которым запущен Apache или Nginx.
Обратите внимание, что make install не будет создавать INI-файл. Скопируйте php.ini и php-fpm.conf в правильный каталог из папки /opt, куда вы скачали исходники.
Если у apache не установлен модуль для работы с FastCGI установим его:
yum install mod_fcgid
Далее у нас два пути: создание обертки (wrapper),  через которую будет идти выполнение php скриптов или использование проксирования через FPM, в зависимости от того, что вы установили.

Создание обертки FastCGI

vi /usr/lib/cgi-bin/php74-cgi
#!/bin/sh
PHPRC="/opt/php74/"
export PHPRC
PHP_FCGI_CHILDREN=4
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /opt/php74/bin/php-cgi

chmod +x /usr/lib/cgi-bin/php74-cgi

Создадим конфигурационный файл для apache с настройками обработчика PHP скриптов, нужно сказать серверу, что скрипты должны обрабатываться CGI-приложением:

vi /etc/apache2/php74.conf

Добавим обработчик:

<FilesMatch "\.php">
   SetHandler application/x-httpd-php7
</FilesMatch>
ScriptAlias /php74-cgi /usr/lib/cgi-bin/php74-cgi
Action application/x-httpd-php7 /php74-cgi
AddHandler application/x-httpd-php7 .php

В настройках виртуального хоста осталось добавить импорт php74.conf файла и для этого хоста будет работать PHP 7.4 через FCGI.

<VirtualHost *.80>
...
   Include php74.conf
...
</VirtualHost>

Настройка PHP-FPM

FPM модуль PHP мы установили ранее. Для Nginx он устанавливается командой:

yum install php-fpm

а для Apache:

yum install mod_fcgid

Модули должны быть включены в конфигурации Apache (httpd.conf) и nginx (nginx.conf) соответственно.

Настройка пользователя и порта сокета выполняется с файле /opt/php74/etc/php-fpm.conf. По умолчанию используется порт 9000, то можете указать другой, если 9000 занят.

pid = run/php-fpm.pid
...
  user = nginx
  group = nginx
...
  listen = 127.0.0.1:9001

Далее осталось настроить виртуальный сервер, чтобы он проксировал запросы к php скриптам в FPM.

location ~ \.php$ {
      fastcgi_pass   127.0.0.1:9001;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include        fastcgi_params;
}

Был ли наш пост полезен?

Нажмите на звезду, чтобы оценить мои труды!

Средний рейтинг: 0 / 5. Количество голосов: 0

Пока голосов нет. Проголосуй первым!

Мне жаль, что пост вам не помог 🙁

Позвольте мне исправиться.

Поделитесь, что можно улучшить?

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в LiveJournal
Опубликовать в Мой Мир

Похожие посты