Как можно одновременно запускать несколько версий 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
Если у вас есть ошибки, проверьте этот сайт. Есть и другие, но я нашел это полезным.
Ссылка на поддержку 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
[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 вы намерены использовать один из этих файлов. Замените окончание номером версии
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
[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 admin@tecadmin.net 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 admin@tecadmin.net 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 admin@tecadmin.net 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 admin@tecadmin.net 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. Это была еще одна проблема, с которой я столкнулся. Если вы заметили некоторые ошибки в этом или затруднили его работу, прокомментируйте это, и я приеду к нему, как только смогу.
Несколько уведомлений от меня:
yum install php php-cli mod_fastcgi
. mod_php не должен быть включен. также mod_fastcgi
можно установить без внешнего репозитория, используя mod_fcgid
для установки версии php для всего хоста без включенного mod_php добавьте это в httpd.conf
<Directory "/var/www"> Options All +ExecCGI AddHandler php-cgi .php Action php-cgi /cgi-bin/php.fastcgi.5.5.18 </Directory>
--with-libdir=lib64
в configoptions