Hoy vamos con un pequeño tutorial de como montar un servidor web básico basado en Debian 6.0 squeeze. Hace unos meses expliqué como crear un servidor para Ubuntu, el proceso es bastante similiar aunque esta vez he cambiado algunas cosas y añadido otras. La idea del otro tutorial era crear un pequeño servidor para usar en un entorno local, esta vez me centro en un servidor remoto para alojar páginas web “reales”. Partiremos de una máquina con Debian 6.0 ya instalado. Lo primero que tenemos que hacer, es iniciar un terminal, bien localmente o bien remotamente, a través de SSH (podemos usar un terminal de Linux para conectarnos mediante SSH a la máquina remota o bien usar Putty/Kitty en Windows).
Lo primero, vamos a actualizar todos los paquetes de nuestro Debian 6.0 squeeze:
Con esto actualizaremos la lista de paqutes de los repositorios e instalaremos las actualizaciones necesarias.
Instalando Apache 2:
Como servidor web instalaremos Apache 2. Habilitaremos así mismo los módulos php-cgi, el módulo fast-cgi para debian y el módulo suexec. Con esto conseguiremos tener en la misma máquina varios usuarios ejecutando php, obteniendo más seguridad y versatilidad que si todo el código php es lanzado unicamente por el usuario de apache. Para instalar el servidor Apache junto con los módulos necesarios, escribimos:
Gracias a que el módulo apache2-suexec-custom incorpora un archivo de configuración a diferencia del suexec original, podremos cambiar ciertas opciones sin necesidad de recompilarlo. Por defecto nos cogerá como raiz “/var/www”. En mi caso, prefiero tener todo en /home, ya que tengo una partición donde la tengo montada, siendo más fácil un posterior traslado o respaldo del servidor.
La carpeta de cada usuario, contará con un subdirectorio en su interior que será donde se aloje la página web. Por lo tanto, la ruta sería “/home/usuario/www”, pudiendo substituir el directorio www por el que cada uno prefiera. Para evitar tener que crear este directorio cada vez que añadamos un usuario, podemos crear uno del mismo nombre en “/etc/skel/”, ya que todo el contenido de esta carpeta se añadirá a la de cada usuario cuando lo creemos (debe añadirse con el comando “adduser” y no “useradd”).
Ahora deberemos habilitar el módulo suexec
Tambien hay que editar el archivo de configuración de este módulo para especificar los directorios a usar.
y cambiamos las dos primeras líneas para que quede así:
www
Hay crear un archivo de configuración para decirle al modulo fast-cgi como debe manejar los archivos .php. Dicho archivo irá en /etc/apache2/conf.d/ con culaquier nombre que queramos acabado en .conf. Para hacerlo más descriptivo, le llamaremos mod-fast-cgi-php5.conf:
En el interior añadimos las siguientes líneas y guardamos:
Action php-fcgi /fcgi-bin/php5-fcgi
Alias /fcgi-bin/ /home/www-data/
<Location /fcgi-bin/>
SetHandler fcgid-script
Options +ExecCGI
</Location>
Si te has fijado en las líneas de configuración anteriores, la carpeta www-data no existe dentro de /home. Debemos crearla y hacer chown con el usuario y grupo www-data.
mkdir www-data
chown www-data:www-data www-data
Ahora debemos crear dentro de esta carpeta el archivo php5-fcgi:
Dentro pegamos el contenido siguiente:
exec /usr/bin/php5-cgi
Ahora solo nos queda hacerlo ejecutable y hacer chown con usuario y grupo www-data:
chown www-data:www-data /home/www-data/php5-fcgi
Con todo esto ya tenemos listo nuestro Apache para añadir hosts virtuales. A continuación os pongo un ejemplo de como añadir un host virtual y una configuración básica para el mismo.
Creamos un nuevo archivo de configuración de host virtual en /etc/apache2/sites-avaliable. Partimos de que hemos creado un usuario con el nombre “dominio”
Dentro de este archivo escribimos lo siguiente:
ServerAdmin admin@dominio.com
ServerName dominio.com
ServerAlias www.dominio.comAlias /fcgi-bin/ /home/www-data/dominio/
SuexecUserGroup dominio dominio
DocumentRoot /home/dominio/www/
<Directory /home/dominio/www/>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Ya solo nos queda añadir una carpeta a /home/www-data con el nombre del usuario, copiar dentro el archivo php5-fcgi que creamos antes, y hacer chown con el usuario en cuestión:
cp /home/www-data/php5-cgi /home/www-data/dominio/
chown -R dominio:dominio /home/www-data/dominio
Finalmente tenemos que habilitar el virtual host. Para ello usaremos a2ensite.
Reiniciamos apache:
Y con esto tendríamos nuestro servidor Apache 2 funcionando con suexec, fastcgi y un host virtual. Los archivos de la web de este usuario irían en /home/dominio/www.
En el próximo artículo, explicaré como instalar y configurar el servidor dns Bind9 en nuestro servidor Debian 6.0.
Israel dice:
marzo 26th, 2011 a las 16:16 pm
Excelente, muchas gracias, es de gran utilidad.
cakeordearh dice:
abril 10th, 2011 a las 18:27 pm
Saludos, buen material aunque la verdad varias fallas..
*las lineas de consola ejecutando comandos lo haces como usuario normal (podrías confundir)
*errores de algunas partes como por ejemplo duplicar nano en una instrucción (aunque se sobreentiende que es solo una vez nano)
*la instrucción:
cp /home/www-data/php5-cgi /home/www-data/dominio
me parece erronea porque el archivo a copiar es php5-fcgi y la instrucción debió quedar así:
cp /home/www-data/php5-fcgi /home/www-data/dominio/php5-fcgi
masual dice:
abril 13th, 2011 a las 12:28 pm
Gracias, ya corregí lo de nano. La otra instrucción que comentas creo que está correctamente escrita.
Un saludo.
Mauricio dice:
octubre 9th, 2011 a las 16:20 pm
Pero no veo donde instala el mysql ni el administrador de base de datos osea el phpmyadmin.
no dice:
enero 17th, 2012 a las 3:40 am
Hola.
Instalado en local, luego, qué url habría que usar en el navegador para acceder a cada www de cada usuario?
Gracias
no dice:
enero 17th, 2012 a las 10:32 am
http://www.example.com/fcgi-bin/php5-fcgi es accesible vía web el contenido del script.
¿Existe alguna forma de que no sea accesible?
Gracias.
Instalando LAMP en Ubuntu | Ubuntizando.com dice:
noviembre 13th, 2012 a las 15:06 pm
[…] Nota: También puedes seguir esta estupenda guía de PulsaF5 […]