несколько PHP на Apache Centos
Как я могу получить несколько версий 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. У вас должна быть дата. Часовой пояс, который вы собираетесь использовать.
cd /opt/phpfarm/src
vi custom-php.ini
date.timezone=America/Halifax
include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"
Шаг 1Б
Убедитесь, что у вас есть эти пути, а дата и время указаны правильно
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/ \
он должен быть настроен для версии, с которой вы работаете. Как корень
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. Ref: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 и не-root. Файл .bashrc можно найти в корневой папке пользователя или в cd ~ / затем ls -all, и вы должны его увидеть.
PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"
также выполните это в терминале после того, как вы добавили его в файлы .bashrc для пользователя root и не-root
export PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"
Теперь выйдите из терминала и снова войдите в систему. Попробуйте эту команду
switch-phpfarm 5.5.11
Вы должны иметь возможность переключаться между версиями diff php
[root@test 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
[root@test 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 вы собираетесь использовать make один из этих файлов. Заменить окончание на номер версии
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"
Говорит вам, что php.ini использовать это по-другому в Ubuntu. Последняя строка
exec /opt/phpfarm/inst/bin/php-cgi-5.5.11
также необходимо изменить для каждой конкретной версии. Я не уверен, что он делает, но я знаю, что это нужно изменить.
Шаг 6
Включите исполняемые файлы fastcgi для apache: пользователь и группа apache
Пример 1
[root@test joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.5.11
[root@test joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.5.11
Пример 2
[root@test joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.3.3
[root@test joe]# chmod +x /var/www/cgi-bin/php.fastcgi.5.3.3
Пример 3
[root@test joe]# chown apache:apache /var/www/cgi-bin/php.fastcgi.5.3.1
[root@test 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. Это была еще одна проблема, с которой я столкнулся. Если вы заметили какие-либо ошибки в этом или вам трудно заставить его работать, пожалуйста, прокомментируйте, и я доберусь до него, как только смогу