Cómo configurar suPHP en un servidor ISPConfig basado en Debian Sarge
Versión 1.3
Autor:
Con este tutorial explico cómo configurar suPHP en un servidor ISPConfig basado en Debian con php4. Principalmente, se basa en el howto de Falko https://www.howtoforge.com/apache2_suphp_php4_php5. Dentro de los foros de Howtoforge, se puede encontrar mucha información sobre "configurar suphp".
Sin embargo, esta información está repartida por todos los foros, por lo que no está muy claro cómo configurar suphp en un servidor ISPConfig. Fue la razón por la que escribí este howto. Cuando haya configurado suPHP en su servidor ISPConfig, puede ejecutar los scripts PHP bajo el usuario administrador del sitio web en lugar de www-data.
Importante:he probado este procedimiento en un servidor Debian Sarge con ISPConfig 2.2.11 y 4.3.10-19 para Apache2, ¡pero no garantizo que funcione para usted!
Primero haga una copia de su archivo /etc/apache2/vhosts/Vhosts_ispconfig.conf. Por ejemplo, cópielo en /etc/apache2/vhosts/Vhosts_ispconfig-backup.conf.
En un servidor ISPConfig predeterminado, php4 se ejecuta como un módulo. Desactívelo con el comando:
a2dismod php4
Ahora elimine todas las entradas de phpadmin dentro del archivo Vhosts_ispconfig.conf original. Reiniciar Apache:
/etc/init.d/apache2 restart
Como eliminamos todas las entradas de phpadmin, no debería tener ningún error cuando se reinicie Apache2.
Instale suPHP como un DSO, por lo tanto debemos instalar apxs (en Debian Sarge es apxs2):
apt-get install apache2-prefork-dev
Instalar PHP4-CGI:
apt-get install php4-cgi
cd /tmp
Instale suPHP, la versión 0.6.2 es la última versión estable en este momento:
wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2
vi src/apache2/mod_suphp.c
Reemplace las líneas 324/325 con estas dos líneas a continuación (si usa una versión diferente de suPHP, los números de línea pueden ser diferentes):
AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "Tells mod_suphp to handle these MIME-types"),
AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "Tells mod_suphp not to handle these MIME-types"),
Luego compilamos e instalamos suPHP:
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make install
Copie el archivo suphp.conf:
cp /tmp/suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf
Cambie el contenido de /etc/suphp.conf usando el comando:
vi /etc/suphp.conf
Debería verse así:
[global]
;Path to logfile
logfile=/var/log/suphp.log
;Loglevel
loglevel=info
;User Apache is running as
webserver_user=www-data
;Path all scripts have to be in
docroot=/
;Path to chroot() to before executing script
;chroot=/mychroot
; Security options
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=false
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0077
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php4-cgi
;Handler for CGI-scripts
x-suphp-cgi=execute:!self
Agregue la siguiente línea a /etc/apache2/httpd.conf, usando el comando:
vi /etc/apache2/httpd.conf
LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so
Reinicie Apache, usando el comando:
/etc/init.d/apache2 restart
Edite /home/admispconfig/ispconfig/lib/config.inc.php busque la línea:
$go_info["server"]["apache2_php"] = 'both';
y cambia a:
$go_info["server"]["apache2_php"] = 'suphp';
Ahora, dentro de ISPConfig haz una pequeña modificación en una de tus webs, para que ISPConfig escriba un nuevo archivo vhost. Por ejemplo, habilite cgi-scrips para uno de sus sitios web más o menos.
Dentro de /etc/apache2/vhosts/Vhosts_ispconfig.conf, verá que ISPConfig ha reescrito el archivo, porque las siguientes líneas se agregan para cada web:
suPHP_Engine on
suPHP_UserGroup username groupname
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
</VirtualHost>
Importante:¡no realice cambios manuales en su archivo /etc/apache2/vhosts/Vhosts_ispconfig.conf!
Cuando establezcas una conexión vía FTP, verás que puedes configurar cualquier permiso dentro de tu web:
También puede ejecutar los scripts php con el usuario administrador del sitio web en lugar del usuario del sistema www-data. Esto le da más comodidad al usuario administrador del sitio web. suPHP también es muy útil cuando ejecuta un CMS dentro de su web como Joomla. Con suPHP habilitado, Joomla tendrá suficientes permisos para funcionar correctamente, ¡mientras que el usuario administrador del sitio web tiene el control total! Por último, pero no menos importante, ¡usar suPHP es una solución más segura y más profesional que usar chmod 777 para su sitio web!
Si no quiere usar php4-cgi+suPHP para un sitio web en particular en su servidor ISPConfig, hay una solución. Inicie sesión en su servidor como root y habilite el módulo php4 para Apache2:
a2enmod php4
Reinicie Apache2 con:
/etc/init.d/apache2 force-reload
Dentro de ISPConfig, deshabilite php y agregue lo siguiente dentro del campo de directivas de Apache para su sitio:
<Directory /var/www/webX/web>
AddType application/x-httpd-php .php .php3 .php4
php_admin_flag safe_mode Off
</Directory>
Ahora su ISPConfig con Debian Sarge, usa PHP4-mod y PHP4-CGI+suPHP. En la mayoría de las situaciones, solo necesitará PHP4-CGI+suPHP. Sin embargo, si no puede usar el mecanismo suphp por alguna razón, aún puede usar php4 como módulo para ese sitio web en particular.