You are on page 1of 10

ENTORNO LAMP ENJAULADO

Los entornos LAMP se refieren a entornos donde Linux es el sistema operativo, Apache el
servidor web, Mysql es servidor de bases de datos, y PHP la interfaz de interacción con el
servicio web y la base de datos, los entornos enjaulados, en todos los casos, son entornos
llamados chroot, donde el usuario creado por el paquete instalado solamente se puede mover
dentro de su directorio propio creado, en esta ocasión, crearemos un entorno LAMP
enjaulado, donde toda la paquetería solo podrá moverse dentro de un mismo entorno, el
directorio de chroot, apache2.

Para empezar, miraremos el entorno completo, para esta guía se utilizo Debian 5, apache2,
mysql server y client 5.0, y php5.

Para empezar, instalaremos apache2 y su librería para el modo chroot

$sudo apt-get install apache2 libapache2-mod-chroot

Ahora procederemos a crear el directorio chroot para nuestro entorno de apache2 enjaulado,
como es para apace entonces el directori principal se llamara apache2 asi:

$sudo mkdir –p /var/chroot/apache2

La opción –p de mkdir es para que no hayan conflictos si no esta creada la carpeta chroot, es
decir, en este caso como solo existe el directorio /var, crea sin problema el directorio
chroot/apache2 dentro de /var.

El entorno enjaulado debe ser casi como un sistema operativo aparte hecho solo para el
paquete que vamos a configurar de esta manera, por lo cual debe tener toda una estructura
de directorios completa, por lo que deberemos crearla así:

Cd /var/chroot/apache2

--etc

--lib

--tmp

--usr/lib

--usr/share/zoneinfo/America

--var/lib

--var/run/apache2

--var/www

Las que aparecen como */*/*/*, son rutas completas de directorios que se deben crear,
lógicamente si el directorio raíz ya existe no se debe hacer.
Debemos copiar los archivos mime.types, resolv.conf y hosts del etc principal al etc del chroot,
los cuales tienen la siguiente función:

Mime.types: asocia las aplicaciones a las extensiones de los archivos creados o compatibles
con las mismas.

Resolv.conf: en practicas pasadas vimos que el resolv.conf era para la configuración de los
servidores de nombres de dominio, zonas de búsqueda y dominio del equipo.

Hosts: al menos como lo entendí como encontré en internet, este archivo sirve para guardar
una especie como de servicio DNS local donde se dirige por defecto al localhost, pero si por
ejemplo colocamos que cuando en el browser se escriba www.petardas.com, dirija la
navegación hacia la dirección 74.125.45.100, entonces automáticamente el host lo dirigirá
hacia google; no sé si este mal, pero es la idea que me hice a través de lo que leí en internet.

Hay que tener en cuenta que si se cambia la dirección IP del equipo o los DNS, es necesario
editar manualmente los archivos hosts y resolv.conf dentro del chroot.

Luego copiaremos el archivo de nuestra zona horaria, lógicamente dependiendo de donde nos
encontremos será la zona, para mi caso Bogotá, así:

Ahora moveremos el pid del apache2 a nuestro chroot y crearemos el enlace simbólico hacia
afuera de la jaula así:

El enlace simbólico debe tener el mismo nombre que el archivo original, de lo contrario no
funcionará; por cierto, un enlace simbólico es una especie de “acceso directo” a un fichero en
Linux, solo que este también puede ser utilizado por el sistema operativo para acceder al pid
de un proceso por ejemplo, dichos enlaces serán muy utilizados a partir de ahora.

Ahora si podemos proceder a activar el apache en modo chroot así:

#a2enmod mod_chroot

Luego de esto reiniciamos el apache así:

#/etc/init.d/apache2 restart

Para comprobar que apache si está funcionando bien en su modo chroot hacemos lo siguiente:
#cp /var/www/index.html /var/chroot/apache2/var/www/index.html

#nano /var/chroot/apache2/var/www/index.html

Por defecto apache monta un index que dice: it Works!, modificaremos este texto, ojo, solo
este texto asi:

Debemos tener cuidado que solo editemos lo que está en la zona seleccionada, pues si
borramos otro parámetro no funcionara, por lo que cuando entremos a nuestro localhost
aparecerá algo así:

Como vemos en la barra de direcciones no aparece el archivo al que dirigí la búsqueda, esto es
porque apache por defecto busca los archivos index.html, si no los encuentra sigue con php, y
así sucesivamente, aunque si dentro del mismo servidor tenemos varios index de distinto tipo
lo mejor sería apuntar al que necesitamos.

Ahora modificaremos el archivo httpd.conf para darle un nombre a nuestro servidor, el cual
quedará así:

Debemos tener en cuenta que el nombre wwwpractica.sena2009.edu.co es un nombre que


debe ser registrado en un DNS para que se pueda hacer la resolución de nombres.
Luego de esto debemos reiniciar el servicio:

#/etc/init.d/apache2 restart

Debemos tener en cuenta que cada vez que se reinicia la maquina, al menos así me paso a mí
que me confié del hecho de que al reiniciar apache no me aparecía ningún error, el enlace
simbólico desaparece, por lo que se hace necesario que lo creemos de nuevo, para evitarnos
esto solo es necesario lo siguiente:

#cd /etc/init.d

#nano scriptapache.sh

Dentro del script escribiremos lo siguiente:

Luego debemos darle nuevos permisos asi:

Esto es para que se cree el enlace simbólico cada vez que se inicie el sistema, pero aun nos
falta un paso muy importante, agregar nuestro script al inicio del sistema, esto se hace
mediante el comando update-rc.d así:

#update-rc.d scriptapache.sh defaults

Y listo, a partir de ahora el enlace simbólico será creado automáticamente por el sistema cada
vez que se reinicie.
PHP

Ahora continuaremos con la instalación de PHP, que será la interacción de la base de datos con
el servicio web, lógicamente esto requiere de algunas librerías para que funcionen juntos.

$sudo apt-get install php5 libapache2-mod-php5 php5-gd php5-ps php5-cli php5-pear

En cuanto termine la instalación de php procederemos con el movimiento de las librerías hacia
los directorios del chroot y a la creación de los enlaces simbólicos:

Con esto ya debe funcionar el PHP5, solo necesitamos reiniciar apache:

$sudo /etc/init.d/apache2 restart

Si queremos verificar el funcionamiento de PHP5, crearemos un index.php que imprimirá la


información del PHP5 instalado en el equipo así:
Ahora solo debemos entrar a la dirección http://127.0.0.1/index.php y debe aparecer lo
siguiente:

Luego de esto procederemos con la instalación de Mysql, una aplicación para el manejo de
bases de datos en aplicaciones web, se encuentra muy ligada al uso de PHP.

$sudo apt-get install mysql-server-5.0 mysql-client-5.0 php5-mysql

Después de un rato se nos solicitará introducir la contraseña para el usuario de Mysql así:
Para verificar la instalación de Mysql damos el comando:

#mysql –p

Nos solicitará la contraseña que introdujimos anteriormente, para salir de Mysql damos quit.

Ahora modificaremos el archivo /etc/mysql/my.cnf para ubicar el socket y el pid dentro del
chroot así:

Las líneas dentro de los rectángulos rojos son las líneas donde hay que cambiar las rutas hacia
el chroot.

Por último en /etc/mysql/debian.cnf, también cambiamos las rutas así:

Igual que en el mysql.cnf, las líneas dentro de los cuadros rojos son en donde debemos
cambiar las rutas.
Antes de reiniciar el servicio mysql, debemos crear enlaces simbólicos desde las rutas del
chroot hacia las rutas reales, en algunas ocasiones, se hace necesario que dejemos las rutas tal
y como están en los archivos my.cnf y debían.cnf y creemos los enlaces simbólicos hacia el
chroot, no se a que se debe esto, ya que lo monte en dos servidores distintos con la misma
versión de debian y tuve que hacerlo de esta manera, en uno los enlaces simbolicos los hice
como están en este manual, y en el otro de las rutas reales hacia la jaula.

#ln –s /var/chroot/apache2/var/run/mysql/mysql.pid /var/run/mysql/mysql/mysql.pid

#ln –s /var/chroot/apache2/var/run/mysql/mysql.sock /var/run/mysql/mysql/mysql.sock

Ahora si podemos reiniciar mysql:

Por último terminaremos con la instalación del phpmyadmin, que es una aplicación que usa
Apache, PHP y MySql, el cual se instala de la siguiente manera, aunque debemos tener en
cuenta que esto es para el mismo entorno LAMP enjaulado:

#apt-get install phpmyadmin

Despues de un momento, nos solicitara la versión de servicio web que estamos utilizando, a lo
cual daremos Apache2 así:
Ahora moveremos y enlazaremos phpmyadmin y sus librerías hacia el directorio de chroot así:

#mkdir /var/chroot/apache2/usr/share (en caso de que no lo hayamos creado anteriormente)

Lo que está dentro del cuadro rojo (../../../), es para que automáticamente el sistema
operativo se “devuelva ” dentro de la misma ruta en que nos encontramos, técnicamente es lo
mismo que colocar la misma ruta. Finalmente debemos mover la carpeta phpmyadmin y crear
el enlace simbólico hacia la ruta original así:
Listo, ahora solo queda reiniciar apache para poder entrar a phpmyadmin mediante la
dirección http://localhost/phpmyadmin así:

A phpmyadmin ingresamos con el root y la contraseña de mysql, en cuanto presionamos enter


debe aparecernos lo siguiente:

You might also like