Как установить php 5.2.17 на VestaCP?

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

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

  1. Предварительно устанавливаем набор пакетов для разработки
    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

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

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

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

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

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

  7. Скачиваем
    wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/php52-backports/php52-backports-20130717.patch
    и применяем патч безопасности
    patch -p1 < php52-backports-20130717.patch

  8. Кофигурируем
    ./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

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

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

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

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

    1. Создаем файл
      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

    2. Создаем файл
      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>

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

      </VirtualHost>

    3. Создаем файл
      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%

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

      </VirtualHost>

  13. Делаем файлы исполняемыми 
    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

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


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

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

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

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

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

  • 5 Пользователи нашли это полезным
Помог ли вам данный ответ?

Связанные статьи

Как установить VestaCP на Centos 6?

Установка VestaCP на Centos 6.5 (x86_64) Пункты 1 и 2 необязательны Обновляем пакеты yum...