Установка PHP 5.2.17 на VestaCP (Centos 6 x86_64)

Пункт 1 необязателен, если у вас уже установлены необходимые инструменты для компилирования php

Этим же способом можно установить на сервер и другие версии php. В ниже приведенной инструкции просто меняете 5.2.17 на номер нужной Вам версии.

Предварительно устанавливаем набор пакетов для разработки
yum groupinstall ‘Development Tools’

И
yum install \
libxml2-dev* \
libmhash-dev* \
libcurl-dev* \
libpng* \
libjpeg* \
libtidy-dev* \
libxslt-dev* \
libtool-ltdl-dev* \
mcrypt \
libmcrypt-dev* \
libXpm-dev* \
libsqlite* \
mysql-dev* \
mysql-libs \
sqlite-dev* \
freetype-dev* \
openssl-dev* \
bzip2-dev* \
unzip* \
patch \
make \
gcc*

Если возникает ошибка вида
Error: Package: mysql-devel-5.1.73-3.el6_5.x86_64 (base)
Requires: mysql = 5.1.73-3.el6_5
Installed: mysql-5.5.43-1.el6.remi.x86_64 (@remi)
mysql = 5.5.43-1.el6.remi
Available: mysql-5.1.73-3.el6_5.x86_64 (base)
mysql = 5.1.73-3.el6_5

Выполните установку пакета mysql-devel из репозитория remi
yum —enablerepo=remi,remi-test install mysql-devel

Создаем папку где будут находиться бинарные файлы
mkdir /opt/php-5.2.17

Создаем папку для загрузки исходников и переходим в нее
mkdir -p /usr/src/php/ && cd /usr/src/php/

Скачиваем архив с исходниками php 5.2.17
wget -c -t0 http://museum.php.net/php5/php-5.2.17.tar.gz

Распаковываем архив
tar zxf php-5.2.17.tar.gz

Переходим в папку с исходниками
cd /usr/src/php/php-5.2.17/

Скачиваем
wget http://php52-backports.googlecode.com/files/php52-backports-20130717.patch
и применяем патч безопасности
patch -p1 < php52-backports-20130717.patch

Кофигурируем
./configure \
—prefix=/opt/php-5.2.17 \
—with-config-file-path=/opt/php-5.2.17 \
—with-libdir=lib64 \
—with-mysql \
—with-mysqli \
—with-sqlite=shared \
—with-curl \
—with-gd \
—with-openssl \
—with-pdo-mysql=shared —with-pdo-sqlite=shared \
—with-mcrypt \
—with-pear \
—with-pic \
—with-jpeg-dir \
—with-png-dir \
—with-ttf \
—with-freetype-dir \
—with-xmlrpc \
—with-xpm-dir \
—with-zlib \
—enable-bcmath \
—enable-calendar \
—enable-cli \
—enable-discard-path \
—enable-fastcgi \
—enable-ftp \
—enable-force-cgi-redirect \
—enable-gd-native-ttf \
—enable-libxml \
—enable-mbstring \
—enable-pdo=shared \
—enable-soap \
—enable-sockets \
—enable-session \
—enable-zip \
—enable-zend-multibyte

для х86 —with-libdir=lib \

параметр =shared указывает на необходимость компилирования отдельного .so для расширения (прим., pdo_mysql.so), который потом при необходимости можно подключить в php.ini

Компилируем и устанавливаем
make && make install

Копируем php.ini
cp /usr/src/php/php-5.2.17/php.ini-recommended /opt/php-5.2.17/lib/php.ini

Делаем пробный запуск свежеустановленной версии
/opt/php-5.2.17/bin/php-cgi -v

Создаем файлы шаблонов

Создаем файл
vi /usr/local/vesta/data/templates/web/httpd/phpfcgid_52.sh

Вставляем содержимое
#!/bin/bash
# Adding php wrapper
user="$1"
domain="$2"
ip="$3"
home_dir="$4"
docroot="$5"

wrapper_script="#!/bin/sh
export PHPRC=/opt/php-5.2.17/lib/
export PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_CHILDREN=20
exec /opt/php-5.2.17/bin/php-cgi
"
wrapper_file="$home_dir/$user/web/$domain/cgi-bin/fcgi-starter"

echo "$wrapper_script" > $wrapper_file
chown $user:$user $wrapper_file
chmod -f 751 $wrapper_file

exit 0

Создаем файл
vi /usr/local/vesta/data/templates/web/httpd/phpfcgid_52.tpl

Вставляем содержимое
<VirtualHost %ip%:%web_port%>

ServerName %domain_idn%
%alias_string%
ServerAdmin %email%
DocumentRoot %docroot%
ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
SuexecUserGroup %user% %group%
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %docroot%>
AllowOverride All
Options +Includes -Indexes +ExecCGI
<Files *.php>
SetHandler fcgid-script
</Files>
FCGIWrapper %home%/%user%/web/%domain%/cgi-bin/fcgi-starter .php
</Directory>
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>

IncludeOptional %home%/%user%/conf/web/%web_system%.%domain%.conf*

</VirtualHost>

Создаем файл
vi /usr/local/vesta/data/templates/web/httpd/phpfcgid_52.stpl

Вставляем содержимое
<VirtualHost %ip%:%web_ssl_port%>

ServerName %domain_idn%
%alias_string%
ServerAdmin %email%
DocumentRoot %sdocroot%
ScriptAlias /cgi-bin/ %home%/%user%/web/%domain%/cgi-bin/
Alias /vstats/ %home%/%user%/web/%domain%/stats/
Alias /error/ %home%/%user%/web/%domain%/document_errors/
SuexecUserGroup %user% %group%
CustomLog /var/log/%web_system%/domains/%domain%.bytes bytes
CustomLog /var/log/%web_system%/domains/%domain%.log combined
ErrorLog /var/log/%web_system%/domains/%domain%.error.log
<Directory %sdocroot%>
SSLRequireSSL
AllowOverride All
Options +Includes -Indexes +ExecCGI
<Files *.php>
SetHandler fcgid-script
</Files>
FCGIWrapper %home%/%user%/web/%domain%/cgi-bin/fcgi-starter .php
</Directory>
<Directory %home%/%user%/web/%domain%/stats>
AllowOverride All
</Directory>
php_admin_value open_basedir none
SSLEngine on
SSLVerifyClient none
SSLCertificateFile %ssl_crt%
SSLCertificateKeyFile %ssl_key%
%ssl_ca_str%SSLCertificateChainFile %ssl_ca%

IncludeOptional %home%/%user%/conf/web/s%web_system%.%domain%.conf*

</VirtualHost>

Делаем файлы исполняемыми
chmod +x /usr/local/vesta/data/templates/web/httpd/phpfcgid_52.sh && \
chmod +x /usr/local/vesta/data/templates/web/httpd/phpfcgid_52.tpl && \
chmod +x /usr/local/vesta/data/templates/web/httpd/phpfcgid_52.stpl

И напоследок перезапускаем Apache
service httpd restart

Основная работа сделана, остается:

Войти в VestaCP
прим. URL, https://xxx.xxx.xxx.xxx:8083 или https://test.YOURDOMAIN.TLD:8083
используйте в качестве имени пользователя admin и пароль

Перейти к списку Пакетов (Packages)
прим. URL, https://xxx.xxx.xxx.xxx:8083/list/package/ или https://test.YOURDOMAIN.TLD:8083/list/package/

Добавить новый пакет с Шаблоном Apache (Apache Template) phpfcgid_52

Создать нового пользователя или отредактировать существующего, присвоив ему созданный Пакет (Package)

Тэги: ,

Вы должны залогиниттся ,чтобы оставить комментарий.