GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Suphp con Apache en Ubuntu/Linux

Suphp

Suphp php handler es un módulo de apache (mod_suphp) que ejecuta scripts php con propiedad y permiso de un usuario específico.

Esto se ve como una mejora de la seguridad ya que el sistema puede realizar un seguimiento de la secuencia de comandos php del usuario que se está ejecutando (y causando problemas, si los hay).

En entornos de alojamiento compartido, suphp es muy popular ya que es muy fácil de instalar y configurar.

Suphp ejecuta php como cgi. Por lo tanto, necesita que se instale el paquete php5-cgi. Debido a esto, suphp es mucho más lento que mod_php.

Pero Suphp agrega la seguridad de identificar al usuario que ejecutó el script. Entonces, si necesita ejecutar php como cgi, entonces suphp es la forma preferida. Sin embargo, existen alternativas mucho mejores y más rápidas como fastcgi, fpm, etc. que tienen un rendimiento más alto en comparación con cgi.

Suphp consta de dos componentes:

1. mod_suphp:un módulo de Apache que reemplaza a mod_php
2. suphp:un binario setuid que reemplaza a suexec de Apache, ejecuta php con los privilegios de usuario específicos.

1. Instalar suphp en Ubuntu

1. Primero instale el módulo apache para suphp, paquete libapache2-mod-suphp

$ sudo apt-get install libapache2-mod-suphp

2. A continuación, deshabilite mod php, que es el controlador de php predeterminado en ubuntu

$ sudo a2dismod php5
Module php5 disabled.
Run '/etc/init.d/apache2 restart' to activate new configuration!

3. Ahora reinicie Apache

$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2                                                                                         apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                  [ OK ]

Esto debería instalar y habilitar suphp. El archivo de configuración para mod php se encuentra aquí

$ cat /etc/apache2/mods-enabled/suphp.load
LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so

La configuración de suphp para apache está aquí

$ cat /etc/apache2/mods-enabled/suphp.conf
<IfModule mod_suphp.c>
        AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
        suPHP_AddHandler application/x-httpd-suphp
    <Directory />
        suPHP_Engine on
    </Directory>
    # By default, disable suPHP for debian packaged web applications as files
    # are owned by root and cannot be executed by suPHP because of min_uid.
    <Directory /usr/share>
        suPHP_Engine off
    </Directory>
# # Use a specific php config file (a dir which contains a php.ini file)
#       suPHP_ConfigPath /etc/php4/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type <mime-type>.
#       suPHP_RemoveHandler <mime-type>
</IfModule>

La configuración anterior hace que suphp sea el controlador de archivos php.

2. Establezca el ID de usuario y el ID de grupo para cada virtualhost

Para hacer que suphp ejecute los scripts php con un ID de usuario/ID de grupo específico, necesitamos establecer la configuración para cada servidor virtual en el archivo de configuración de Apache.

El archivo de configuración de apache en ubuntu se encuentra en

/etc/apache2/sites-available/default

Edite el host virtual relevante y agregue la configuración del grupo de usuarios de suphp como se muestra a continuación. La directiva suPHP_UserGroup le dice a apache que use el ID de usuario/ID de grupo para el host virtual específico.

<VirtualHost 64.131.72.23:80>
    ServerName some-site.com
    ServerAlias www.some-site.com
    DocumentRoot /home/mike/public_html
    <IfModule mod_suphp.c>
        suPHP_UserGroup mike mike
    </IfModule>
</VirtualHost>

Si no desea editar el archivo de configuración principal de Apache, cree un nuevo archivo en el mismo directorio

/etc/apache2/sites-available/

Y agregue el bloque virtualhost en ese archivo. Luego aplique la configuración usando el comando a2ensite.

$ sudo a2ensite file_name

3. Configurar permisos

Suphp también da "Error interno del servidor 500" si un archivo php se puede escribir por grupo. El registro de errores tendrá una entrada como esta

SoftException in Application.cpp:564: Directory "/var/www" is writeable by group, referer: http://localhost/index.php

Para solucionar esto, verifique los permisos y asegúrese de que ese grupo u otros no tengan ningún permiso en un archivo php que espera leer.


Ubuntu
  1. Cómo instalar PHP en Ubuntu Linux

  2. Cómo instalar PHP en Ubuntu 18.04

  3. Cómo instalar WordPress con Apache en Ubuntu 18.04

  4. Cómo instalar PHP 8.0 en Ubuntu 20.04 / Ubuntu 18.04

  5. Cómo instalar PHP-FPM con Apache en Ubuntu 20.04

Cómo instalar phpBB con Apache en Ubuntu 20.04

Cómo instalar la pila Linux, Apache, MySQL, PHP (LAMP) en Ubuntu 16.04 / Ubuntu 14.04

Cómo instalar Linux, Apache, MariaDB, PHP (LAMP Stack) en Ubuntu 18.04

Cómo instalar varias versiones de PHP con Apache en Ubuntu 18.04 y 16.04

Cómo instalar Apache Nifi en Ubuntu Linux

Cómo instalar Laravel PHP Framework con Nginx en Ubuntu Linux