Cómo configurar suPHP en un servidor ISPConfig basado en Debian Etch
Versión 1.1
Autor:
En general, este instructivo es el mismo que mi instructivo "Cómo configurar suPHP en un servidor ISPConfig basado en Debian Sarge" en https://www.howtoforge.com/suphp_debian_ispconfig pero contiene algunas modificaciones pequeñas pero importantes para Debian Etch.
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 tutorial en un servidor Debian Etch con ISPConfig 2.2.11 y PHP versión 5.2.0-8 para Apache 2.2.3, ¡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, php5 se ejecuta como un módulo. Desactívelo con el comando:
a2dismod php5
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 que debemos instalar apxs (en Debian Etch es apxs2):
apt-get install apache2-prefork-dev
Instalar PHP5-CGI:
apt-get install php5-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/php5-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 php5-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 php5 para Apache2:
a2enmod php5
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 .php5
php_admin_flag safe_mode Off
</Directory>
Ahora su ISPConfig con Debian Etch, usa PHP5-mod y PHP5-CGI+suPHP. En la mayoría de las situaciones, solo necesitará PHP5-CGI+suPHP. Sin embargo, si no puede usar el mecanismo suphp por alguna razón, aún puede usar php5 como un módulo para ese sitio web en particular.