php apache centos fastcgi phpfarm

php multiples en apache centos



fastcgi phpfarm (1)

¿Cómo puedo hacer que se ejecuten varias versiones de php en Centos 6.5 al mismo tiempo?

Así es cómo.

Requerimientos
Centos 6.5 (trabajos posibles con 6.6 y 7)
Apache Apache / 2.2.15 (Posibles trabajos con otras versiones)

Esta guía se instala y utiliza.
FASTCGI (ver los comentarios para la instalación alternativa)
PHPFARM

Esta instalación se realizó de esta manera por lo que sería compatible con iredmail.
Puede instalar iredmail en un servidor con esta configuración.

Paso 1
Instalando 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/

Para cada versión de php que quiera ejecutar esto. Sin embargo, si desea módulos personalizados como el soporte de mysql, omita esto y vea la parte que se encuentra debajo.

$ ./compile.sh 5.3.1 $ ./compile.sh 5.3.3 $ ./compile.sh 5.5.11

Si obtiene errores de compilación, reinicie e intente./compile.sh 5.3.1 Esto funcionó para mí cuando me encontré con este problema

Soporte de MYSQL y Módulos
Pasos para obtener el soporte de MySQL (y otros módulos) para la instalación personalizada de phpfarm de php versión 5.5.14. Estas instrucciones funcionan para cualquier versión, simplemente cambie el nombre 5.5.14 a lo que sea 5.4.3. Por supuesto, necesitará un servidor mysql al que conectarse para hacer uso del módulo mysql dentro de php.
Estos pasos deben completarse en este orden
Paso 1A
Asegúrate de tener estas rutas y la fecha y hora correctas. Hice esto como root. Debes tener la fecha.zona horaria que pretendes usar.

cd /opt/phpfarm/src vi custom-php.ini date.timezone=America/Halifax include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"

Paso 1B
Asegúrate de que tienes estas rutas y la fecha y hora es correcta

cd /opt/phpfarm/src vi default-custom-php.ini date.timezone=America/Halifax include_path=".:/opt/phpfarm/inst/php-$version/pear/php/"

Paso 1C
Preste especial atención a esta línea.

--with-config-file-path=/opt/phpfarm/inst/php-5.5.11/lib/ /

Tendrá que ser ajustado para la versión con la que está trabajando. Como 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"

Paso 1D
Ahora compila como root. Phpfarm buscará automáticamente un archivo llamado custom-options-5.5.14.sh cuando compile 5.5.14, o cualquier otra versión con, por supuesto, los números de versión respectivos.

./compile.sh 5.5.14

Más tarde, cuando revises tu página web con phpinfo (); Para ver la función, verá soporte para estos módulos y diferentes textos de "Configurar comandos" en la página.

Si estos pasos no se completan en orden, es posible que tenga que volver a hacerlo. Para volver a hacer esto, primero elimine los archivos de la carpeta src y la carpeta inst.

rm -rf /opt/phpfarm/inst/php-5.5.14 rm -rf /opt/phpfarm/src/php-5.5.14

El rm eliminará la carpeta y el -rf significa r recursivo y f fuerza. Ref: http://linuxcommand.org/lc3_man_pages/rm1.html

Si tiene errores consulte con este sitio. Hay otros pero encontré este útil.

http://crybit.com/20-common-php-compilation-errors-and-fix-unix/

Referencia para el soporte mysql y módulo.

Problema al activar una extensión php usando PHP Farm

Errores de compilación de PHP
http://crybit.com/20-common-php-compilation-errors-and-fix-unix/

Paso 2
Añadiendo phpfarm a tus perfiles.

agregue esto al final de .bashrc para usuarios root y no root. El archivo .bashrc se puede encontrar en la carpeta raíz de los usuarios o en cd ~ / then ls -all y debería verlo.

PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"

también ejecute esto en el terminal después de haberlo agregado a los archivos .bashrc para usuarios root y no root

export PATH="$PATH:/opt/phpfarm/inst/bin:/opt/phpfarm/inst/current-bin"

ahora salga del terminal y vuelva a iniciar sesión. pruebe este comando

switch-phpfarm 5.5.11

Debes poder alternar entre las versiones de 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]#

agregue el repositorio para CentOS / RHEL 6, 64 Bit (x86_64):

cd /tmp rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

Paso 3
instala los yums

yum install php php-cli mod_fastcgi

NOTA: en este punto, si intenta ejecutar el switch-phpfarm 5.5.11, no funcionará correctamente, pero eso está bien. Todavía podremos ejecutar múltiples sitios web con diferentes versiones de php

Etapa 4
Asegúrate de que cgi-bin esté creado y de que los archivos estén configurados

$ cd /var/www

Si el cgi-bin no está ya aquí crealo

$ mkdir cgi-bin

Para cada versión de php que quieras usar, crea uno de estos archivos. Reemplaza el final con el número de versión.

vi /var/www/cgi-bin/php.fastcgi.5.5.11

paso 5
Dentro del archivo 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

La primera linea

PHPRC="/opt/phpfarm/src/php-5.5.11/php.ini-development"

Le dice a witch php.ini que use esto es diferente en ubuntu. La ultima linea

exec /opt/phpfarm/inst/bin/php-cgi-5.5.11

También necesita ser cambiado para cada versión particular. No estoy seguro de lo que hace, pero sí sé que necesita ser cambiado.

Paso 6
Permitir que los archivos fastcgi sean ejecutables para apache: usuario y grupo de apache

Ejemplo 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

Ejemplo 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

Ejemplo 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

Paso 7
Editando el archivo httpd.conf
Esto es lo que necesita para el archivo /etc/httpd/conf/httpd.conf. Primero busque “NameVirtualHost *: 80” y use esto como punto de partida. El “#” significa que la línea está comentada. Descomente esta línea borrando el #. Ahora debería verse así.

NameVirtualHost *:80

Esto permitirá que múltiples hosts virtuales operen en Apache por su "Nombre de servidor" en cada referencia de host virtual. Dejé algunas líneas comentadas para mostrarte lo que puedes hacer sin ellas. Asegúrese de que la parte inferior de /etc/httpd/conf/httpd.conf se vea así.

<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>

Paso 8
Editando el archivo etc / hosts
Esto es lo que necesitas en el archivo etc / hosts.

127.0.0.1 localhost test1.com test2.com test3.org test4.net ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

Paso 9

Ahora reinicia tu servidor

service httpd restart

Paso 10
Pruebas
Si agrega phpinfo () a cada uno de los sitios index.php, notará que todas las versiones de php serán diferentes. También el último test4.net irá con el predeterminado para centos. También tenga en cuenta que test3.org y test4.net no son .com, pero seguirán funcionando. En el futuro planeo hacer una guía para los archivos phpfarm para que pueda instalar con el soporte mysql. Este fue otro problema que me encontré. Si observa algún error en esto o tiene dificultades para hacerlo funcionar, por favor, comente y lo resolveré tan pronto como pueda.


Varios avisos de mi parte:

  1. yum install php php-cli mod_fastcgi no es correcto. mod_php no debe estar habilitado. también mod_fastcgi puede instalarse sin repositorio externo usando mod_fcgid
  2. Para PHP 5.2 y libxml> = 1.2.9 debe aplicar este parche libxml29_compat.patch
  3. para configurar la versión de php para todos los hosts sin mod_php habilitado, agregue esto a httpd.conf

    <Directory "/var/www"> Options All +ExecCGI AddHandler php-cgi .php Action php-cgi /cgi-bin/php.fastcgi.5.5.18 </Directory>

  4. al compilar en sistemas de 64 bits, la compilación falla debido a la carpeta lib64, por lo que debe agregar --with-libdir=lib64 a las opciones de configuración