kostopolos | Дата: Воскресенье, 05.08.2012, 22:24 | Сообщение # 1 |
Главный помощник главного линуксоида :)
Группа: Администраторы
Сообщений: 32
Репутация: 37
Статус: Offline
| http://aboutubuntu.ru/content....u-10-04
Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль Apache2) на одном сервере под управлением Ubuntu 10.04+
Ситуация проста: на новый и очаровательный сервер с Ubuntu 10.04+ и современным PHP 5.3, пригодным для всех актуальных версий CMS, вдруг требуется подселить старый-старый сайт, начинающий сыпать ошибками при попытке запуска на PHP 5.3 (подавай ему чего-нибудь постарше, например, PHP 5.2). Кто виноват — понятно. Но что делать?
Не паниковать! На одном сервере с одним Apache2 прекрасно заводятся и соседствуют PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль Apache2). Мы далее решим проблему так, что указать какой именно PHP использовать можно будет на уровне настроек виртуального хоста.
Скачиваем дистрибутив php 5.2: Code wget http://www.php.net/get/php-5.2.17.tar.gz/from/ru.php.net/mirror
Переименовываем полученный файл во что положено: Code mv mirror php-5.2.17.tar.gz
Распаковываем архив: Code tar zxvf php-5.2.17.tar.gz
Заходим в директорию:
Устанавливаем зависимости: Code sudo aptitude install libxml2-dev libmysqlclient-dev libcurl4-gnutls-dev libpng12-dev libjpeg62-dev
Конфигурируем, собираем и ставим из исходников наш php 5.2 в директорию /opt/php5.2: Code ./configure --prefix=/opt/php5.2 --with-config-file-path=/opt/php5.2 --with-mysqli --with-mysql --with-curl --with-gd --with-jpeg-dir --enable-cli --enable-fastcgi --enable-discard-path --enable-force-cgi-redirect make sudo make install
Мы, убунтоводы, избалованы готовыми пакетами, так что наберитесь терпения: с непривычки может показаться, что сборка (по команде make) занимает много времени :-)
Когда всё установиться, можно убедиться в том, что на вашем сервере теперь появилась нужная версия php такой командой: Code /opt/php5.2/bin/php -v
Однако, про этот php пока ничего не знает наш уважаемый веб-сервер Apache2. Мы их познакомим через fastcgi.
Ставим: Code sudo aptitude install libapache2-mod-fastcgi
Включаем нужные модули Apache2: Code sudo a2enmod cgi fastcgi actions
Перезапускаем Apache, чтобы модули подцепились: Code sudo service apache2 restart
Теперь создадим файл (он будет просто обёрткой, вызывающей наш исполнимый бинарник /opt/php5.2/bin/php-cgi, но с нужными настройками, которые вы можете изменить или дополнить): Code sudo nano /usr/lib/cgi-bin/php52-cgi
И туда поместим буквально следующее: Code #!/bin/sh PHPRC="/opt/php5.2/" export PHPRC PHP_FCGI_CHILDREN=4 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=5000 export PHP_FCGI_MAX_REQUESTS exec /opt/php5.2/bin/php-cgi
Сделаем файл исполнимым: Code sudo chmod +x /usr/lib/cgi-bin/php52-cgi
Теперь создадим необходимую часть конфига для виртуальных хостов, которым потребуется php 5.2: Code sudo nano /etc/apache2/php52.conf
Поместим в файл следующее: Code <FilesMatch "\.php"> SetHandler application/x-httpd-php5 </FilesMatch> ScriptAlias /php52-cgi /usr/lib/cgi-bin/php52-cgi Action application/x-httpd-php5 /php52-cgi AddHandler application/x-httpd-php5 .php
Теперь давайте пойдём в конфиг того виртуального хоста, который должен работать с php 5.2 и добавим в него следующую строку (например, после DocumentRoot...): Code ... Include php52.conf ...
Перезапустим Apache, чтобы подцепились новые настройки виртуального хоста: Code sudo service apache2 restart
Готово! Идите на нужный хост и проверяйте: он теперь обслуживается php 5.2.
|
|
| |