jueves, 18 de octubre de 2007

apache friends - xampp for linux

apache friends - xampp for linux

Gracias a xampp podemos tener un servidor web, base de datos, correo y ftp sin necesidad de instalar nada en el sistema, simplemente descomprimimos y ejecutamos.

¿Pero es posible ejecutar xampp cuando tenemos ya ejecutado Apache2, MySQL, PostgreSQL... en el sistema?

Pues la respuesta es sí, simplemente tendremos que cambiar los puertos de escucha. Por ejemplo la instancia de Apache2 en xampp como el resto de instancias de Apache2, por defecto escucha en el puerto 80. Desde los ficheros de configuración de Apache podemos modificarlo para que escuche en el puerto que nos interese (alguno que esté libre).

Usando "netstat -putan" desde la linea de comandos, podemos saber cuales son los puertos que tenemos ocupados. Para poner a escuchar un nuevo servicio, tendremos que usar uno que no estemos utilizando.

Una vez que tenemos el fichero modificado, solo nos queda un paso que nos llevó bastante tiempo encontrar. Desde el script que ejecuta xampp (/opt/lampp/lampp) se hacen comprobaciones para certificar que el servicio que se pretende levantar no esté corriendo. Una de las comprobaciones es saber si está escuchando algún servicio en el puerto donde se lanzará el servicio. El caso es que este puerto no lo coge del fichero de configuración, así que tendremos que poner el mismo puerto que pusimos en el fichero de configuración.

Por ejemplo en la sección:

"startapache")
if testrun /opt/lampp/logs/httpd.pid httpd
then
$de && echo "XAMPP: XAMPP-Apache laeuft bereits."
$de || echo "XAMPP: XAMPP-Apache is already running."
else
if testport 80
then
$de && echo "XAMPP: Ein anderer Webserver laeuft bereits."
$de || echo "XAMPP: Another web server daemon is already running."
else
case `$0 phpstatus` in
5*) xampp_apachedefine="$xampp_apachedefine -DPHP5"
$de && phpextra="(und PHP5)"
$de || phpextra="(and PHP5)"
;;
4*) xampp_apachedefine="$xampp_apachedefine -DPHP4"
$de && phpextra="(und PHP4)"
$de || phpextra="(and PHP4)"
;;
esac
if test -f $lc/startssl
then
if testport 443
then
$de && echo "XAMPP: Ein anderer Webserver mit SSL laeuft bereits."
$de || echo "XAMPP: Another web server daemon with SSL is already running."
else
$de && echo "XAMPP: Starte Apache mit SSL $phpextra..."
$de || echo "XAMPP: Starting Apache with SSL $phpextra..."
/opt/lampp/bin/apachectl -k start -DSSL $xampp_apachedefine > /dev/null 2> /opt/lampp/logs/apachestart.log
fi
else
$de && echo "XAMPP: Starte Apache..."
$de || echo "XAMPP: Starting Apache..."
/opt/lampp/bin/apachectl -k start $xampp_apachedefine > /dev/null 2> /opt/lampp/logs/apachestart.log
fi
error=$?
if test $error -gt 0
then
$de && echo "XAMPP: ${bon}Fehler $error beim Starten vom Apache!${boff}"
$de || echo "XAMPP: ${bon}Error $error! Couldn't start Apache!${boff}"
/opt/lampp/share/lampp/diagnose apache
fi
fi
fi
;;

Sustituiremos en "if testport 80" el 80 por el puerto donde hemos configurado Apache para que escuche.