Как можно одновременно запускать несколько версий php на Centos 6.5?
Вот как.
Требования
Centos 6.5 (возможно работает с 6.6 и 7)
Apache Apache/2.2.15 (возможно, работает с другими версиями)
Это руководство устанавливает и использует
FASTCGI (см. Комментарии для альтернативной установки)
PHPFARM
Эта установка была выполнена таким образом, чтобы она совместима с iredmail.
Вы можете установить iredmail на сервер с этой настройкой.
Шаг 1
Установка PHPFarm
yum install gcc libxml2-devel openssl-devel bzip2-devel curl-devel libjpeg-devel freetype-devel icu libicu-devel gcc-c++ postgresql-devel aspell-devel git -y
$ cd /opt/
$ git clone https://github.com/cweiske/phpfarm.git phpfarm
$ cd phpfarm/src/
$ cd /opt/phpfarm/src/
Для каждой версии php вы хотите запустить это. Однако, если вы хотите, чтобы пользовательские модули, такие как поддержка mysql, пропустили это и увидели деталь чуть ниже нее.
$ ./compile.sh 5.3.1
$ ./compile.sh 5.3.3
$ ./compile.sh 5.5.11
Если вы получаете ошибки компиляции, перезагрузитесь и попробуйте. /compile.sh 5.3.1 снова Это сработало для меня, когда я столкнулся с этой проблемой
Поддержка MYSQL и модулей
Шаги для получения поддержки MySQL (и других модулей) для установки phpfarm для php версии 5.5.14. Эти инструкции работают для любой версии, просто переименуйте 5.5.14 на то, что когда-либо было похоже на 5.4.3. Конечно, вам понадобится сервер mysql для подключения, чтобы использовать модуль mysql в php.
Эти шаги необходимо выполнить в этом порядке
Шаг 1А
Убедитесь, что у вас есть эти пути и время даты правильное. Я сделал это как root. У вас должна быть дата. Timezone, которую вы собираетесь использовать.
cd /opt/phpfarm/src
vi custom-php.ini
date.timezone=America/Halifax
include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"
Шаг 1B
Убедитесь, что у вас есть эти пути и правильное время
cd /opt/phpfarm/src
vi default-custom-php.ini
date.timezone=America/Halifax
include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"
Шаг 1С
Обратите особое внимание на эту строку
--with-config-file-path=/opt/phpfarm/inst/php-5.5.11/lib/ \
его нужно будет скорректировать для версии, с которой вы работаете. Как root
vi custom-options-5.5.14.sh
#!/bin/bash
#gcov='--enable-gcov'
configoptions="
--disable-debug \
--with-config-file-path=/opt/phpfarm/inst/php-5.5.11/lib/ \
--enable-short-tags \
--with-pear \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-pcntl \
--enable-soap \
--enable-sockets \
--enable-wddx \
--enable-zip \
--with-zlib \
--with-gettext \
--enable-pdo \
--with-pdo-mysql \
--enable-cgi \
--enable-json \
--with-curl \
--with-openssl \
--enable-openssl \
--with-mysql \
--enable-mysql \
$gcov"
Шаг 1D
Теперь скомпилируйте его как root. Phpfarm автоматически будет искать файл с именем custom-options-5.5.14.sh при компиляции 5.5.14 или любой другой версии с соответствующими номерами версий.
./compile.sh 5.5.14
Позже, когда вы просматриваете свою веб-страницу с помощью phpinfo(); функции, вы увидите поддержку этих модулей и другой текст "Configure Command" на странице.
Если эти шаги не будут завершены, то вам, возможно, придется это сделать снова. Для этого сначала удалите файлы из папки src и папки inst.
rm -rf /opt/phpfarm/inst/php-5.5.14
rm -rf /opt/phpfarm/src/php-5.5.14
Rm удалит папку, а -rf означает r рекурсивный и f force. Ссылка: http://linuxcommand.org/lc3_man_pages/rm1.html
Если у вас есть ошибки, проверьте этот сайт. Есть и другие, но я нашел это полезным.
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/
Ссылка на поддержку mysql и модуля
Ошибка активации расширения php с помощью PHP Farm
Ошибки компиляции PHP
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/
Шаг 2
Добавление phpfarm в ваши профили
добавьте это в конец.bashrc для пользователя root и non-root. Файл.bashrc можно найти в корневой папке пользователей или cd ~/then ls -all, и вы должны увидеть его.
PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"
также выполните это в терминале после того, как вы добавили его в файлы.bashrc для пользователя root и non-root
export PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"
теперь выйдите из терминала и войдите в систему. Попробуйте эту команду
switch-phpfarm 5.5.11
вы должны иметь возможность переключаться между версиями diff php
[[email protected] joe]# switch-phpfarm 5.5.11
Setting active PHP version to 5.5.11
PHP 5.5.11 (cli) (built: May 17 2014 22:01:31) (DEBUG)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
[[email protected] joe]#
добавьте репо для CentOS/RHEL 6, 64 бит (x86_64):
cd /tmp
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Шаг 3
установить юмы
yum install php php-cli mod_fastcgi
ПРИМЕЧАНИЕ. В этот момент, если вы попытаетесь запустить switch-phpfarm 5.5.11, он не будет работать нормально, но это нормально. мы по-прежнему будем иметь возможность запускать несколько веб-сайтов с разными версиями php
Шаг 4
Убедитесь, что ваш cgi-bin создан и файлы настроены
$ cd /var/www
Если cgi-bin уже здесь не создает его
$ mkdir cgi-bin
Для каждой версии php вы намерены использовать один из этих файлов. Замените окончание номером версии
vi /var/www/cgi-bin/php.fastcgi.5.5.11
шаг 5
Внутри файла php.fastcgi.5.5.11
#!/bin/bash
PHPRC="/opt/phpfarm/src/php-5.5.11/php.ini-development"
PHP_FCGI_CHILDREN=4
PHP_FCGI_MAX_REQUESTS=1000
export PHPRC
export PHP_FCGI_CHILDREN
export PHP_FCGI_MAX_REQUESTS
exec /opt/phpfarm/inst/bin/php-cgi-5.5.11
Первая строка
PHPRC="/opt/phpfarm/src/php-5.5.11/php.ini-development"
Сообщает вам, что witch php.ini использовать это в ubuntu. Последняя строка
exec /opt/phpfarm/inst/bin/php-cgi-5.5.11
также необходимо изменить для каждой конкретной версии. Я не уверен, что он делает, но я знаю, что его нужно изменить.
Шаг 6
Включить файлы fastcgi для выполнения для apache: пользователь и группа apache
Пример 1
[[email protected] joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.5.11
[[email protected] joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.5.11
Пример 2.
[[email protected] joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.3.3
[[email protected] joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.3.3
Пример 3.
[[email protected] joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.3.1
[[email protected] joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.3.1
Шаг 7
Редактирование файла httpd.conf
Вот что вам нужно для файла /etc/httpd/conf/httpd.conf. Сначала найдите "NameVirtualHost *: 80" и используйте это как отправную точку. "#" Означает, что строка закомментирована. Раскомментируйте эту строку, удалив #. Теперь это должно выглядеть так.
NameVirtualHost *:80
Это позволит нескольким виртуальным хостам работать в Apache по их "ServerName" в каждой ссылке виртуального хоста. Я оставил некоторые строки, прокомментированные, чтобы показать вам, с чем вы можете обойтись. Убедитесь, что дно /etc/httpd/conf/httpd.conf выглядит так.
<VirtualHost *:80>
ServerName test1.com
#ServerAdmin [email protected]
DocumentRoot /var/www/html/test1
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/html/test1">
Options +Indexes FollowSymLinks +ExecCGI
AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/php.fastcgi.5.5.11
AllowOverride All
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName test2.com
# ServerAdmin [email protected]
DocumentRoot /var/www/html/test2
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/html/test2">
Options +Indexes FollowSymLinks +ExecCGI
AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/php.fastcgi.5.3.3
AllowOverride All
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName test3.org
# ServerAdmin [email protected]
DocumentRoot /var/www/html/test3
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/html/test3">
Options +Indexes FollowSymLinks +ExecCGI
AddHandler php5-fastcgi .php
Action php5-fastcgi /cgi-bin/php.fastcgi.5.3.1
AllowOverride All
Order allow,deny
Allow from All
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName test4.net
# ServerAdmin [email protected]
DocumentRoot /var/www/html/test6
</VirtualHost>
Шаг 8
Редактирование файла etc/hosts
вот что вам нужно в файле etc/hosts.
127.0.0.1 localhost test1.com test2.com test3.org test4.net
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
Шаг 9
Теперь перезагрузите сервер
service httpd restart
Шаг 10
тестирование
если вы добавите phpinfo() на каждый из сайтов index.php, вы заметите, что все версии PHP будут разными. также последняя версия test4.net по умолчанию будет использоваться для centos. Также обратите внимание, что test3.org и test4.net не являются.com, но все равно будут работать. В будущем я планирую составить руководство для файлов phpfarm, чтобы вы могли установить их с поддержкой mysql. Это была еще одна проблема, с которой я столкнулся. Если вы заметили некоторые ошибки в этом или затруднили его работу, прокомментируйте это, и я приеду к нему, как только смогу.