PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
Вопрос такой: Будет ли работать 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/
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
через phpcgi работает...
есть компилированный php5.2, 5.3, 5.5, с готовыми шаблонами, поз CentOs x86_64
ЗЫ: есть сервер для компиляции модулей под указанную платформу
есть компилированный php5.2, 5.3, 5.5, с готовыми шаблонами, поз CentOs x86_64
ЗЫ: есть сервер для компиляции модулей под указанную платформу
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
по ссылке на указанный мануал.. некорректное название... реализация фактически не имеет fastcgi менеджера. это неполноценная попытка реализации fcgiwrap, непонятно зачем делать то что давно написано
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
Должен работать
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
Добрый день, уважаемые разработчики
Совсем недавно устновил вашу панель, очень нравиться и все устраивает.
Вознкла необходимость установить php 5.2 для работы старых скриптов.
Насколько я понял это можно сделать через шаблон phpcgi для апача.
С компилирование мпакетов никогда дала не имел.
Можно ли как-то расписать по пунктам алгоритм дейтсвия на сервер, с учетом того что стоит vestaCP
Я так понимаю, там есть какие-то особенности с конфигурационными файлами, если делать так, как описано в первом сообщении.
Например, не возникнут ли проблемы с vestacp если делать следующие комманды:
Применим ли такой вариант насройки?
Спасибо.
Совсем недавно устновил вашу панель, очень нравиться и все устраивает.
Вознкла необходимость установить 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
Спасибо.
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
все намного проще по настройкам
с компиляцией сложнее. но:
1. --prefix=/storage/home/srvXXX/php не стоит укладывать компиленный php папку пользователя
2. версию php взять новее 5.2.17
как это сделано у меня
--prefix=/opt
остальное остальное разгуливается пакетами для пользователей или из под акаунта admin меняется шаблон http (обычный пользователь не может сменить шаблон назначенный ему в пакете, но он сможет менять настроки php.ini )
с компиляцией сложнее. но:
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
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
Спасибо за наводку по решению с шаблонами.
Хочу отметить для разработчиков, что у меня не работает шаблон phpcgi - он выдает ошибки при рестарте апача.
Может кому-то пригодится полная инстркция по устновке.
Хочу отметить для разработчиков, что у меня не работает шаблон 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
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
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/"
реально находится /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/"
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
Небольшое уточнение по компиляции php.
Для полноценной сборки с достаточным колчиеством расширений лучше использовать при компиляции следующую комманду (у меня скрипты потребовали расширения Freetype для GD и ZIP без которых они отказывались работать):
Еще хотел бы узнать можно ли повтороно пересобрать из исходников php но с другими ключам, при работающем уже 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
Re: PHP 5.2 (через fastcgi) и PHP 5.4 (как модуль Apache2)
повторно репере собрать можно...
также ./configure (сдругими параметрами), make && make install
по поволду отсутсвующих расширений как я уже писал = share,<путь>
используемые библиотеки включать/выключать можно будет в php.ini не пересобирая.
пути до расширений можно не указывать, если они поставлены из пакетов. конфигуратор их сам найдет.
также ./configure (сдругими параметрами), make && make install
по поволду отсутсвующих расширений как я уже писал = share,<путь>
используемые библиотеки включать/выключать можно будет в php.ini не пересобирая.
пути до расширений можно не указывать, если они поставлены из пакетов. конфигуратор их сам найдет.