Esta web utiliza cookies para proporcionarte la mejor experiencia de navegación posible. Estas cookies son guardadas en tu navegador y cumplen funciones como reconocerte cuando regresas a esta web y ayudarnos a saber qué secciones de la web encuentras más interesantes y útiles.
Instalar y configurar servidor Debian 9 Stretch con PHP 7.3 y FastCGI.
- febrero 28, 2019
- Categoría: linux seguridad utilidades web
Importante: Esta información es para uso lúdico personal. En ningún caso se pretende dar conocimientos, consejos, formaciones, herramientas, ni soluciones técnicas de ámbito comercial ni profesional. Simplemente es información que se ha redactado en finalidad de recordatorio de ciertos proyectos realizados. Si usted no está seguro de la fiabilidad de la información, no cumple con sus expectativas o no es de su agrado, le ruego que abandone este sitio web. Para ver todas las exclusiones garantía y de responsabilidad acceda a la sección Aviso Legal.
En este post no se detalla los distintos métodos de ejecución de PHP. Hay muy buena información en otros sitios web. Aquí se requiere instalar PHP 7.3 en un servidor Debian 9 Stretch y que funcione con el modo FastCGI.
1.- Instalar Apache2 con PHP 7.3, incluido el soporte de ModPHP y FastCGI.
apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add - echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list apt-get update apt-get install apache2 apt-get install libapache2-mod-php7.3 libapache2-mod-fcgid apache2-suexec-pristine php7.3 php7.3-cli php7.3-cgi php7.3-common php7.3-curl php7.3-mbstring php7.3-pdo php7.3-mysql php7.3-xml php7.3-json php-pear php7.3-zip php7.3-gd php7.3-intl php7.3-xmlrpc php7.3-xsl memcached php-memcache memcached php7.3-soap a2enmod suexec rewrite ssl actions include cgi headers fcgid suexec systemctl restart apache2
Ya se dispone del PHP 7.3 instalado. Si ejecutamos un phpinfo() veremos que correctamente es el PHP7.3 y que su uso por defecto es ModPHP, ya que SERVER API = APACHE HANDLER.
2.- Configurar un proyecto web con FastCGI.
En primera instancia se crea un usuario especifico para este proyecto web.
adduser --disabled-login client1 adduser www-data client1
Posteriormente se procede a crear el virtualhost. Un ejemplo básico sin certificado sería así:
vim /etc/apache2/sites-available/eninsoft.com.conf <VirtualHost *:80> ServerName eninsoft.com ServerAlias www.eninsoft.com ServerAdmin webmaster@eninsoft.com DocumentRoot /var/www/eninsoft.com/web SuexecUserGroup client1 client1 <Directory /var/www/eninsoft.com/web> FCGIWrapper /var/www/eninsoft.com/fcgid/conf .php <FilesMatch \.php$> SetHandler fcgid-script </FilesMatch> Options +ExecCGI </Directory> ErrorLog /var/log/apache/eninsoft.com-error.log CustomLog /var/log/apache/eninsoft.com-access.log combined </VirtualHost>
Crear la estructura de directorios que alojará la web.
mkdir /var/www/eninsoft.com mkdir /var/www/eninsoft.com/web mkdir /var/www/eninsoft.com/fcgid mkdir /var/www/eninsoft.com/tmp
Crear el archivo de configuración de FastCGI.
vim /var/www/eninsoft.com/fcgid/conf # Añadir #!/bin/sh export PHPRC="/etc/php/7.3/cgi" exec /usr/bin/php-cgi7.3
Asignar los permisos correspondientes al proyecto web.
chown -R client1:client1 /var/www/eninsoft.com chmod 750 /var/www/eninsoft.com chmod 750 /var/www/eninsoft.com/web chmod 750 /var/www/eninsoft.com/tmp chmod 550 /var/www/eninsoft.com/fcgid/conf
Finalmente activar el virtualhost y reinciar el Apache2.
a2ensite eninsoft.com.conf /etc/init.d/apache2 restart
Ya tenemos el proyecto web «eninsoft.com» funcionando con FastCGI. La comprobación siempre con phpinfo();
vim /var/www/eninsoft.com/web/index.php # añadir <?php phpinfo(); ?>
Observar que SERVER API ahora pone CGI/FastCGI.
** Si os sale un Internal Server Error seguramente es tema de propietario y permisos de los archivos y carpetas.
OPCIONAL: Asignar su propio «php.ini» al proyecto web.
FastCGI permite la ejecución de un php.ini personalizado para cada proyecto web. Para este propósito solamente es necesario cambiar la configuración del FastCGI.
cp /etc/php/7.3/cgi/php.ini /var/www/eninsoft.com/fcgid/ vim /var/www/eninsoft.com/fcgid/conf # Modificar PHPRC export PHPRC="/var/www/eninsoft.com/fcgid/"
Hacer los cambios deseados en el /var/www/eninsoft.com/fcgid/php.ini y reiniciar Apache2.