Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Общие вопросы
  • Search

PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)

Общие вопросы о панели управления Vesta
Post Reply
  • Print view
Advanced search
35 posts
  • 1
  • 2
  • 3
  • 4
  • Next
evgeny
Posts: 1
Joined: Thu Jun 19, 2014 5:19 am

PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by evgeny » Thu Jun 19, 2014 5:39 am

Вопрос такой: Будет ли работать PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2) на одном сервере Debian 7 (64 bit) панель VestaCP. Описание установки и настройки здесь http://wmasteru.org/threads/Настройка-php-5-2-через-fastcgi-и-php-5-4-как-модуль-apache2-на-одном-сервере.10692/
Top

demian
Posts: 543
Joined: Thu May 16, 2013 5:19 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by demian » Thu Jun 19, 2014 5:52 am

через phpcgi работает...

есть компилированный php5.2, 5.3, 5.5, с готовыми шаблонами, поз CentOs x86_64

ЗЫ: есть сервер для компиляции модулей под указанную платформу
Top

demian
Posts: 543
Joined: Thu May 16, 2013 5:19 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by demian » Thu Jun 19, 2014 6:12 am

по ссылке на указанный мануал.. некорректное название... реализация фактически не имеет fastcgi менеджера. это неполноценная попытка реализации fcgiwrap, непонятно зачем делать то что давно написано
Top

imperio
VestaCP Team
Posts: 7000
Joined: Sat Dec 01, 2012 12:37 pm
Contact:
Contact imperio
Website

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by imperio » Thu Jun 19, 2014 4:28 pm

Должен работать
Top

komred
Posts: 22
Joined: Fri Jul 25, 2014 7:00 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by komred » Thu Aug 14, 2014 12:49 pm

Добрый день, уважаемые разработчики

Совсем недавно устновил вашу панель, очень нравиться и все устраивает.
Вознкла необходимость установить php 5.2 для работы старых скриптов.
Насколько я понял это можно сделать через шаблон phpcgi для апача.
С компилирование мпакетов никогда дала не имел.
Можно ли как-то расписать по пунктам алгоритм дейтсвия на сервер, с учетом того что стоит vestaCP
Я так понимаю, там есть какие-то особенности с конфигурационными файлами, если делать так, как описано в первом сообщении.
Например, не возникнут ли проблемы с vestacp если делать следующие комманды:

Code: Select all

aptitude install apache2-suexec libapache2-mod-fcgid
a2enmod cgi fcgid actions
service apache2 restart
Применим ли такой вариант насройки?

Code: Select all

1) wget http://ru2.php.net/get/php-5.2.11.tar.bz2/from/ru.php.net/mirror

2) tar -xjvf php-5.2.11.tar.bz2

3) cd php-5.2.11

./configure --prefix=/storage/home/srvXXX/php --with-mysql=/usr/local --with-gd=/usr/local --enable-fastcgi
4) make

make install

6) cp /storage/home/srvXXX/php/bin/php-cgi /storage/home/srvXXX/cgi-bin/php

7) chmod 755 /storage/home/srvXXX/cgi-bin/php

8) скопировать из /storage/home/srvXXX/php/etc/ - дистрибутивный php.ini файл и разместить в директорию /storage/home/srvXXX/cgi-bin/php.ini

в файл .htaccess добавляете следующие директивы:

Action php-script /cgi-bin/php

AddHandler php-script .php 

Спасибо.
Top

demian
Posts: 543
Joined: Thu May 16, 2013 5:19 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by demian » Thu Aug 14, 2014 4:13 pm

все намного проще по настройкам

с компиляцией сложнее. но:
1. --prefix=/storage/home/srvXXX/php не стоит укладывать компиленный php папку пользователя
2. версию php взять новее 5.2.17

как это сделано у меня

--prefix=/opt

Code: Select all

# ls -l /opt/
итого 12
drwxr-xr-x  7 root root 4096 Апр  4 10:51 php-5.2
drwxr-xr-x 10 root root 4096 Апр  4 10:51 php-5.3
drwxr-xr-x  9 root root 4096 Апр  4 10:51 php-5.5

Code: Select all

# ls -l /usr/local/vesta/data/templates/web/httpd/
итого 92
-rwxr-xr-x 1 admin admin 1249 Окт  6  2013 basedir.stpl
-rwxr-xr-x 1 admin admin 1060 Окт  6  2013 basedir.tpl
-rwxr-xr-x 1 admin admin 1202 Окт  6  2013 default.stpl
-rwxr-xr-x 1 admin admin 1013 Окт  6  2013 default.tpl
-rwxr-xr-x 1 admin admin 1872 Ноя 21  2013 hosting.stpl
-rwxr-xr-x 1 admin admin 1873 Апр  3 17:33 hosting_sumteh.stpl
-rwxr-xr-x 1 admin admin 1683 Апр 16 18:46 hosting_sumteh.tpl
-rwxr-xr-x 1 admin admin 1683 Ноя 21  2013 hosting.tpl
-rwxr-xr-x 1 root  root  1810 Апр  8 10:31 phpcgi5_2.sh
-rwxr-xr-x 1 root  root  1099 Апр  4 14:30 phpcgi5_2.stpl
-rwxr-xr-x 1 root  root   909 Апр  4 14:30 phpcgi5_2.tpl
-rwxr-xr-x 1 root  root  1808 Апр  8 12:23 phpcgi5_3.sh
-rwxr-xr-x 1 root  root  1099 Июн  6  2013 phpcgi5_3.stpl
-rwxr-xr-x 1 root  root   909 Июн  6  2013 phpcgi5_3.tpl
-rwxr-xr-x 1 root  root  1692 Апр  8 12:23 phpcgi5_5.sh
-rwxr-xr-x 1 root  root  1099 Июн  6  2013 phpcgi5_5.stpl
-rwxr-xr-x 1 root  root   909 Июн  6  2013 phpcgi5_5.tpl
-rwxr-xr-x 1 admin admin  304 Апр  4  2013 phpcgi.sh
-rwxr-xr-x 1 admin admin 1099 Июн  5  2013 phpcgi.stpl
-rwxr-xr-x 1 admin admin  909 Июн  5  2013 phpcgi.tpl
-rwxr-xr-x 1 admin admin  409 Сен 29  2013 phpfcgid.sh
-rwxr-xr-x 1 admin admin 1165 Июн  5  2013 phpfcgid.stpl
-rwxr-xr-x 1 admin admin  937 Июн  5  2013 phpfcgid.tpl

Code: Select all

# cat /usr/local/vesta/data/templates/web/httpd/phpcgi5_2.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/httpd/domains/%domain%.bytes bytes
    CustomLog /var/log/httpd/domains/%domain%.log combined
    ErrorLog /var/log/httpd/domains/%domain%.error.log
    <Directory %docroot%>
        AllowOverride All
        Options +Includes -Indexes +ExecCGI
        Action phpcgi-script /cgi-bin/php
        <Files *.php>
            SetHandler phpcgi-script
        </Files>
    </Directory>
    <Directory %home%/%user%/web/%domain%/stats>
        AllowOverride All
    </Directory>
    Include %home%/%user%/conf/web/httpd.%domain%.conf*

</VirtualHost>

Code: Select all

# cat /usr/local/vesta/data/templates/web/httpd/phpcgi5_2.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/httpd/domains/%domain%.bytes bytes
    CustomLog /var/log/httpd/domains/%domain%.log combined
    ErrorLog /var/log/httpd/domains/%domain%.error.log
    <Directory %sdocroot%>
        SSLRequireSSL
        AllowOverride All
        Options +Includes -Indexes +ExecCGI
        Action phpcgi-script /cgi-bin/php
        <Files *.php>
            SetHandler phpcgi-script
        </Files>
    </Directory>
    <Directory %home%/%user%/web/%domain%/stats>
        AllowOverride All
    </Directory>
    SSLEngine on
    SSLVerifyClient none
    SSLCertificateFile %ssl_crt%
    SSLCertificateKeyFile %ssl_key%
    %ssl_ca_str%SSLCertificateChainFile %ssl_ca%

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

</VirtualHost>

Code: Select all

# cat /usr/local/vesta/data/templates/web/httpd/phpcgi5_2.sh 
#!/bin/bash
# Adding php wrapper
user="$1"
domain="$2"
ip="$3"
home_dir="$4"
docroot="$5"

wrapper_script='#!/opt/php-5.2/bin/php-cgi -cphp.ini'
wrapper_file="$home_dir/$user/web/$domain/cgi-bin/php"
wrapper_conf="$home_dir/$user/web/$domain/cgi-bin/php.ini"


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

echo ';Location configure' > $wrapper_conf
echo 'date.timezone = "Asia/MSK"' >> $wrapper_conf
echo '' >> $wrapper_conf
echo ';Directory confifure' > $wrapper_conf
echo "upload_tmp_dir = $home_dir/$user/tmp" >> $wrapper_conf
echo "session.save_path = $home_dir/$user/tmp" >> $wrapper_conf
echo "open_basedir = $home_dir/$user/web:$home_dir/$user/tmp:/bin:/usr/bin:/usr/local/bin:/var/www/html:/tmp:/usr/share:/etc/phpMyAdmin:/etc/phpmyadmin:/etc/roundcubemail:/etc/roundcube:/var/lib/roundcube" >> $wrapper_conf
echo '' >> $wrapper_conf
echo ';Configure limites' >> $wrapper_conf
echo 'upload_max_filesize = 16M' >> $wrapper_conf
echo 'post_max_size = 16M' >> $wrapper_conf
echo 'memory_limit = 32M' >> $wrapper_conf
echo 'max_execution_time = 30' >> $wrapper_conf
echo 'mysql.allow_persistent = off' >> $wrapper_conf
echo 'safe_mode = off' >> $wrapper_conf
echo '' >> $wrapper_conf
echo ';Error reportiong' >> $wrapper_conf
echo 'error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT' >> $wrapper_conf
echo 'display_errors = Off' >> $wrapper_conf
echo 'display_startup_errors = Off' >> $wrapper_conf
echo 'log_errors = On' >> $wrapper_conf
echo 'log_errors_max_len = 1024' >> $wrapper_conf
echo "error_log = $home_dir/$user/php_errors.log" >> $wrapper_conf
echo '' >> $wrapper_conf
echo ';Extension settings' >> $wrapper_conf
echo 'extension = imagick.so' >> $wrapper_conf
chown $user:$user $wrapper_conf
chmod -f 751 $wrapper_conf
exit 0
остальное остальное разгуливается пакетами для пользователей или из под акаунта admin меняется шаблон http (обычный пользователь не может сменить шаблон назначенный ему в пакете, но он сможет менять настроки php.ini )
Top

komred
Posts: 22
Joined: Fri Jul 25, 2014 7:00 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by komred » Fri Aug 15, 2014 8:47 am

Спасибо за наводку по решению с шаблонами.

Хочу отметить для разработчиков, что у меня не работает шаблон phpcgi - он выдает ошибки при рестарте апача.

Может кому-то пригодится полная инстркция по устновке.

Code: Select all

mkdir /opt/php-5.2.17
mkdir -p /usr/src/iserver/ && cd /usr/src/iserver/
wget -c -t0 http://museum.php.net/php5/php-5.2.17.tar.gz
tar zxf php-5.2*tar.gz
cd /usr/src/iserver/php-5.2.17/

wget http://php52-backports.googlecode.com/files/php52-backports-20130717.patch
patch -p1 < php52-backports-20130717.patch

aptitude install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev make

./configure --prefix=/opt/php5.2.17 --with-config-file-path=/opt/php5.2.17 --with-mysqli --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-curl --with-gd --with-jpeg-dir --enable-cli --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect

make
make install
	
cp /usr/src/iserver/php-5.2.17/php.ini-recommended /opt/php5.2.17/lib/php.ini

/opt/php5.2.17/bin/php -v

nano /usr/local/vesta/data/templates/web/apache2/phpfcgi5_2.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>


nano /usr/local/vesta/data/templates/web/apache2/phpfcgi5_2.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>


nano /usr/local/vesta/data/templates/web/apache2/phpfcgi5_2.sh

#!/bin/bash
# Adding php wrapper
user="$1"
domain="$2"
ip="$3"
home_dir="$4"
docroot="$5"

wrapper_script="#!/bin/sh
PHPRC=/opt/php5.2.17/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=1000
export PHP_FCGI_CHILDREN=20
exec  /opt/php5.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
Top

demian
Posts: 543
Joined: Thu May 16, 2013 5:19 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by demian » Fri Aug 15, 2014 9:44 am

1. у вас файл php.ini файл не подключится

реально находится /opt/php5.2.17/lib/php.ini
ищется в PHPRC=/opt/php5.2.17/ - рекурсия может не отработать
PHPRC=/opt/php5.2.17/ --> PHPRC=/opt/php5.2.17/lib/

2. при конфигурации расширений я бы указал =shared во всех подключаемых библиотеках, т.е. --with-mysqli=shared
расширению компильнутся .so, т.е. mysql.so и т.п. но в php.ini надо будет указывать путь где хранятся библиотеки.

3. если вы делаете через exec
exec /opt/php5.2.17/bin/php-cgi --> exec /opt/php5.2.17/bin/php-cgi -- "$@"

PHPRC=/opt/php5.2.17/ и export PHPRC --> export PHPRC=/opt/php5.2.17/

4. конструкции export PHP_FCGI_MAX_REQUESTS=1000 и export PHP_FCGI_CHILDREN=20 во врапере могут давать ошибку. вынести из врапера в php.ini или шаблон апача.

это на первый взгляд

зы для упрощения настройки php.ini я бы положил в папку с сайтом.... тогда путь изменить на export PHPRC="$home_dir/$user/web/$domain/cgi-bin/"
Top

komred
Posts: 22
Joined: Fri Jul 25, 2014 7:00 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by komred » Fri Aug 15, 2014 9:53 am

Небольшое уточнение по компиляции php.
Для полноценной сборки с достаточным колчиеством расширений лучше использовать при компиляции следующую комманду (у меня скрипты потребовали расширения Freetype для GD и ZIP без которых они отказывались работать):

Еще хотел бы узнать можно ли повтороно пересобрать из исходников php но с другими ключам, при работающем уже php?

Code: Select all

./configure \
--prefix=/opt/php5.2.17 \
--with-config-file-path=/opt/php5.2.17 \
--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-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-pdo-mysql \
--with-mysqli \
--with-jpeg-dir=/usr/lib/x86_64-linux-gnu \
--with-png-dir=/usr \
--enable-gd-native-ttf \
--with-openssl \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with-gettext \
--enable-cli \
--enable-fastcgi \
--enable-discard-path \
--enable-force-cgi-redirect \
--enable-cgi \
--enable-bcmath
Top

demian
Posts: 543
Joined: Thu May 16, 2013 5:19 am

Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
  • Quote

Post by demian » Fri Aug 15, 2014 10:15 am

повторно репере собрать можно...
также ./configure (сдругими параметрами), make && make install

по поволду отсутсвующих расширений как я уже писал = share,<путь>
используемые библиотеки включать/выключать можно будет в php.ini не пересобирая.

пути до расширений можно не указывать, если они поставлены из пакетов. конфигуратор их сам найдет.
Top


Post Reply
  • Print view

35 posts
  • 1
  • 2
  • 3
  • 4
  • Next

Return to “Общие вопросы”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password