Статьи

Статьи->FreeBSD->PHP 4.4.x и PHP 5.2.x на одном сервере [ Поиск ]

PHP 4.4.x и PHP 5.2.x на одном сервере
Заголовок PHP 4.4.x и PHP 5.2.x на одном сервере
Описание PHP 4.4.x и PHP 5.2.x на одном сервере
Отправил sergey
В этой статье описываеться процес установки и запуска PHP 4.4.9 и PHP 5.2.6 на одном сервере. PHP будет собран как модуль.

Из описаний которые удалось найти в инете на одном сервере apache 2-е версии PHP как модули одновремено работать не смогут (таки да проверил сам Смех)

Итак скачиваем нужную версию apache
http://httpd.apache.org/download.cgi
Распаковываем apache, заходим в папку с исходниками Apache и выполняем там:

./configure --prefix=/usr/local/apache2-4 --enable-so --enable-rewrite --enable-log_config --enable-dir --enable-mime --enable-alias --enable-autoindex --enable-cgi --enable-include --enable-status --enable-deflate --enable-ssl --enable-setenvif

make && make install


в результате получаем apache установленный в каталог /usr/local/apache2-4 (я его буду использовать для PHP 4.4.9), теперь в папке с исходниками apache делаем:

make clean

./configure --prefix=/usr/local/apache2-5 --enable-so --enable-rewrite --enable-log_config --enable-dir --enable-mime --enable-alias --enable-autoindex --enable-cgi --enable-include --enable-status --enable-deflate --enable-ssl --enable-setenvif

make && make install


теперь у нас есть вторая копия apache установленная в каталог /usr/local/apache2-5 (я его буду использовать для PHP 5.2.6).

Перед сборкой PHP оговорюсь, ято я его собираю с более-менее стандартным набором опций, подходящим для большинства случаев.

Сначала из портов собираем:
/usr/ports/graphics/jpeg
/usr/ports/graphics/png
/usr/ports/print/freetype2
/usr/ports/security/mcrypt
/usr/ports/graphics/gd
/usr/ports/textproc/libxml
/usr/ports/textproc/libxml2
/usr/ports/converters/recode
/usr/ports/www/tidy-lib

Если нужен MySQL, то его лучше поставить из портов.
По-этому идем в /usr/ports/databases выбираем, собираем и устанавливаем версию которая нам нужна ..
Если
MySQL не нужен то из строчки ./configure...... в обоих версиях PHP убираем параметр --with-mysql=/usr/local/

Теперь скачиваем PHP 4.4.9 и 5.2.6 с http://www.php.net/downloads.php , распаковвываем и выполняем в папке с его исходниками:
Для PHP4
./configure --prefix=/usr/local/php4 --with-pear --enable-ftp --enable-mailparse --enable-sessions --enable-mbstring  --enable-bcmath --with-gd --with-apxs2=/usr/local/apache2-4/bin/apxs --with-mysql=/usr/local/ --with-ttf --with-freetype-dir=/usr/lib --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/local --with-gettext --with-iconv --with-mod_charset --with-xml --with-calendar --with-mcrypt --with-recode --with-openssl

make && make install


Для PHP5
./configure --prefix=/usr/local/php5 --with-pear --enable-ftp --enable-mbstring --enable-bcmath --with-gd --with-apxs2=/usr/local/apache2-5/bin/apxs --with-mysql=/usr/local/ --with-ttf --with-freetype-dir=/usr/lib --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/local --with-gettext --with-iconv --enable-mod-charset --with-mcrypt --enable-mod-charset --with-dom --enable-mbregex --with-mime-magic --with-openssl --with-tidy

make && make install


теперь у нас есть PHP 4.4.9 установленный в  /usr/local/php4 и PHP 5.2.6 установленный /usr/local/php5 и модули для апача.

Как frontend для выбора какую связку apache+PHP использовать для сайта установим nginx из портов /usr/ports/www/nginx

Для корректного отображения IP-адресса клиента в логе apache нам понадобиться модуль mod_rpaf с сайта http://stderr.net/apache/rpaf/download/ скачиваем последнюю версию, распаковываем, далее копируем в папку с распакованными исходниками модуля файл /usr/local/apache2-5/bin/apsx и выполняем комманду ./apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c теперь у нас модуль rpaf установлен в /usr/local/apache2-5/modules/ после этого дописываем в конец конфига апача /usr/local/apache2-5/conf/httpd.conf перед инклудом файла с описанием виртуалхостов:

RPAFenable On
# Enable reverse proxy add forward
RPAFproxy_ips 127.0.0.1
# which ips are forwarding requests to us
RPAFsethostname On
# let rpaf update vhost settings
# allows to have the same hostnames as in the "real"
# configuration for the forwarding Apache
RPAFheader X-Forwarded-For

Теперь проделываем туже процудеру для другого apache: копируем в папку с распакованными исходниками модуля файл /usr/local/apache2-4/bin/apsx и выполняем комманду ./apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c теперь у нас модуль rpaf установлен в /usr/local/apache2-4/modules/ после этого дописываем в конец конфига апача /usr/local/apache2-4/conf/httpd.conf перед инклудом файла с описанием виртуалхостов:

RPAFenable On
# Enable reverse proxy add forward
RPAFproxy_ips 127.0.0.1
# which ips are forwarding requests to us
RPAFsethostname On
# let rpaf update vhost settings
# allows to have the same hostnames as in the "real"
# configuration for the forwarding Apache
RPAFheader X-Forwarded-For

Конфигурируем apache2-4 чтоб он слушал запросы на локалхосте 81 порту, добавляя/изменяя файл /usr/local/apache2-4/conf/httpd.conf:

Listen 127.0.0.1:81

Конфигурируем apache2-5 чтоб он слушал запросы на локалхосте 82 порту, добавляя/изменяя файл /usr/local/apache2-5/conf/httpd.conf:

Listen 127.0.0.1:82

Соответственно все виртуал хосты описаваем как:
для apache2-4 (PHP 4.4.9)
NameVirtualHost 127.0.0.1:81


        ServerName test1.yourdomain.com
        ServerAlias www.test1.yourdomain.com
        ServerAdmin admin@yourdomain.com
        DocumentRoot /var/www/test1.yourdomain.com/www
        ErrorLog /var/log/httpd4/test1-error_log
        CustomLog /var/log/httpd4/test1-access_log common
php_flag engine on
php_admin_value upload_max_filesize 5120K
php_admin_value max_execution_time 30
php_admin_value max_input_time 30



    Options All
    AllowOverride All
    Order allow,deny
    Allow from all



для apache2-5 (PHP 5.2.6)
NameVirtualHost 127.0.0.1:82


        ServerName test2.yourdomain.com
        ServerAlias www.test2.yourdomain.com
        ServerAdmin admin@yourdomain.com
        DocumentRoot /var/www/test2.yourdomain.com/www
        ErrorLog /var/log/httpd5/test2-error_log
        CustomLog /var/log/httpd5/test2-access_log common
php_flag engine on
php_admin_value upload_max_filesize 5120K
php_admin_value max_execution_time 30
php_admin_value max_input_time 30



    Options All
    AllowOverride All
    Order allow,deny
    Allow from all



Теперь мы добрались до конфигурации nginx (/usr/local/etc/nginx/nginx.conf):
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info; 

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}                           

http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

server {
    listen *:80;
    server_name
                test1.yourdomain.com
                www.test1.yourdomain.com
                ;                   
## apache with PHP 4..
    location / {
        proxy_pass http://127.0.0.1:81/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

server {
    listen *:80;
    server_name
                test2.yourdomain.com
                www.test2.yourdomain.com
                ;
## apache with PHP 5..
    location / {
        proxy_pass http://127.0.0.1:82/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

}


Теперь все готово к запуску :)

Сиартап скрипт для apache2-4:

#!/bin/sh

case "$1" in
        start)
                /usr/local/apache2-4/bin/httpd -f /usr/local/apache2-4/conf/httpd.conf -k start  > /dev/null 2>&1 && echo ' httpd 4 starting '
                ;;
        stop)
                /usr/local/apache2-4/bin/httpd -f /usr/local/apache2-4/conf/httpd.conf -k stop > /dev/null 2>&1 && echo ' httpd 4 stopped '
                ;;
        restart)
                /usr/local/apache2-4/bin/httpd -f /usr/local/apache2-4/conf/httpd.conf -k restart  > /dev/null 2>&1 && echo ' httpd started '
                ;;
        *)
                echo ""
                echo "Usage: `basename $0` { start | stop | restart }"
                echo ""
                exit 64
                ;;
esac


Сиартап скрипт для apache2-5:

#!/bin/sh

case "$1" in
        start)
                /usr/local/apache2-5/bin/httpd -f /usr/local/apache2-5/conf/httpd.conf -k start  > /dev/null 2>&1 && echo ' httpd 5 starting '
                ;;
        stop)
                /usr/local/apache2-5/bin/httpd -f /usr/local/apache2-5/conf/httpd.conf -k stop > /dev/null 2>&1 && echo ' httpd 5 stopped '
                ;;
        restart)
                /usr/local/apache2-5/bin/httpd -f /usr/local/apache2-5/conf/httpd.conf -k restart  > /dev/null 2>&1 && echo ' httpd started '
                ;;
        *)
                echo ""
                echo "Usage: `basename $0` { start | stop | restart }"
                echo ""
                exit 64
                ;;
esac


Голосов Голосов: 2 - В среднем: 5

Добавить комментарий Оценить
Комментарии

Статистика
Всего 14 статей в базе
Наиболее просматриваемые: NAT через loopback интерфейс
Лучшие по оценкам: NAT через loopback интерфейс

Пользователи в разделе статьи: 1 (0 Пользователи 1 Гости и 0 Скрытые пользователи)
Видимые пользователи: 0


 

MKPortal ©2003-2008 mkportal.it