Cómo compilar PHP 5.6 en modo FastCGI en Ubuntu 18.04
|Este es el tercer tutorial de realizar la compilación de nuestro propio servidor Apache + PHP como módulo + PHP en modo FastCGI.
Con estas instrucciones lograremos tener una segunda versión de php en nuestro servidor Apache que podremos utilizar mediante la creación de host virtuales.
1. Descomprimir la versión de php, yo voy a utilizar la versión 5.6.40 que se puede descargar de aquí.
1 |
tar -xzvf php-5.6.40.tar.gz |
2. Instalar los siguientes requerimientos
1 |
sudo apt-get install libxml2-dev libcurl4-nss-dev libgdbm-dev libjpeg-turbo8-dev libpng-dev libfreetype6-dev libc-client2007e-dev libc-client2007e libicu-dev libmcrypt-dev freetds-dev libpqxx-dev libxslt1-dev libkrb5-dev libbz2-dev libcurl4 |
3. Crear el siguiente enlace simbólico:
1 |
sudo ln -s /usr/include/x86_64-linux-gnu/curl /usr/local/include/curl |
4. Ejecutar el comando configure dentro de la carpeta php-5.6.40:
1 |
./configure --prefix=/opt/www/php56 --with-mysql --enable-inline-optimization --disable-debug --enable-bcmath --enable-calendar --enable-ctype --enable-ftp --enable-gd-native-ttf --enable-shmop --disable-sigchild --enable-sysvsem --enable-sysvshm --enable-wddx --with-gdbm --with-jpeg-dir --with-png-dir --with-freetype-dir --with-zlib=yes --with-zlib-dir --with-xsl --with-gd --with-imap --with-imap-ssl --with-gettext --with-mssql --with-pdo-dblib --with-mcrypt --with-mhash --enable-sockets --enable-mbstring=all --with-curl --enable-mbregex --enable-exif --with-bz2 --with-sqlite3 --with-libxml-dir --enable-soap --with-xmlrpc --enable-pcntl --with-mysqli --with-pgsql --with-pdo-mysql --with-pdo-pgsql --with-pdo-sqlite --enable-fileinfo --enable-phar --enable-zip --enable-intl --with-kerberos --enable-maintainer-zts --enable-fpm --with-libdir=lib64 --with-oci8=instantclient,/usr/lib/oracle/12.2/client64/lib |
NOTAS:
- --prefix: Es la ruta donde se hará la instalación de php.
- --with-oci8: Parámetro opcional solo si querés trabajar con Oracle desde php. Para esto es necesario tener instalado anticipadamente el Instant Client de Oracle.
- Luego pongo de ejemplo la mayoría de parámetros para que funcione de manera general, es decir hemos habilitado opciones para MySQL, PostgreSQL, PDO, FTP, IMAP, Sqlite, JSON y otros.
5. Ejecutar los comandos de instalación:
1 2 |
make sudo make install |
6. Copiar el archivo php.ini de la carpeta fuente de php hacia la carpeta destino en el servidor:
1 |
sudo cp /home/hugo/comp/php/php-5.6.40/php.ini-production /opt/www/php56/lib/php.ini |
7. Editar el archivo /opt/www/php56/lib/php.ini y modificar las siguientes configuraciones:
1 2 |
upload_tmp_dir = /opt/www/tmp date.timezone = America/El_Salvador |
8. Editar el archivo de configuración de apache /opt/www/apache/conf/httpd.conf y agregar un include hacia el archivo creado del virtualhost, junto con las instrucciones para cargar php en modo FastCGI:
1 2 3 4 5 6 7 8 9 10 11 12 |
#---------------FAST CGI------------------------- LoadModule fcgid_module modules/mod_fcgid.so FcgidWrapper "/opt/www/php56/bin/php-cgi" .php AddHandler fcgid-script .php FcgidIdleTimeout 20 FcgidProcessLifeTime 60 FcgidInitialEnv TEMP "/opt/www/tmp" FcgidInitialEnv TMP "/opt/www/tmp" #-------------FIN FAST CGI----------------------- # Virtual hosts con php 5.6 Include conf/extra/httpd-vhost-php56.conf |
Guardar y cerrar el archivo.
9. Crear el siguiente archivo para configurar el host virtual /opt/www/apache/conf/extra/httpd-vhost-php56.conf con el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<VirtualHost 127.0.0.2:80 > DocumentRoot "/opt/www/apache/htdocs" ServerName 127.0.0.2 ErrorLog "logs/php56-cgi-error.log" CustomLog "logs/php56-cgi-access.log" combined <Directory "/opt/www/apache/htdocs"> <FilesMatch "\.php$"> SetHandler fcgid-script </FilesMatch> Options Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews AllowOverride All Require all granted </Directory> <Directory "/opt/www/php56/bin/"> <Files "php-cgi"> Require all granted </Files> </Directory> </VirtualHost> |
NOTAS:
- Al virtualhost le estamos asignando la ip 127.0.0.2 para visualizar el sitio con esta versión de php.
- DocumentRoot: es la ruta donde estaría nuestro proyecto que queremos ejecutar con la segunda versión de php, en este ejemplo lo deje a htdocs.
- Dentro de <Directory "/opt/www/apache/htdocs"> le indicamos que ejecute el sitio con fcgid-script.
Guardar y cerrar el archivo.
10. Podemos crear un archivo info para ver el resultado de todo este trabajo:
1 2 3 |
sudo su echo '<?php phpinfo();' > /opt/www/apache/htdocs/index.php exit |
11. Reiniciar apache
1 |
sudo systemctl restart httpd |
12. Por último en el navegador digitar la url http://127.0.0.2/index.php para acceder al host virtual.
Espero que esto haya sido de ayuda, hasta luego.