jueves, 30 de abril de 2009

¡¡¡Estación de desarrollo WEB!!!

Instalación de estación
de trabajo para el
desarrollador web
en Ubuntu 9.04


¿Con ganas de empezar? Vamos allá. Lo primero es instalarse un servidor web, en nuestro caso, "Apache 2". Para ello nos acercamos a la consola (Aplicaciones -> Accesorio -> Terminal) y escribimos:

$ sudo apt-get install apache2

NOTA: El símbolo de $ significa comienzo de la línea de comando, no lo escribas en la consola, tan solo lo que viene detrás. Y recuerda, has de otorgar una contraseña de root, el super usuario de Linux. Es un perfil de usuario que cuenta con todos los privilegios del sistema. Por seguridad Linux deja la opción de acceder como dicho usuario mediante la herramienta de "Terminal" para realizar determinadas funciones, una de ellas es instalar o desinstalar paquetes que otros usuarios no podrían instalar, copiar, eliminar, crear archivos que sólo él podría hacer. Por lo tanto primero has de configurar la cuenta de root. Para ello vamos a:

Sistema -> Administración -> Usuario y Grupos

Una vez allí hacemos clic en desbloquear y nos pedirá la clave de nuestro usuario. Una vez identificados hacemos la selección del usuario root. Luego le damos al botón "Propiedades" y nos aparecerá un cuadro de diálogo en el que podremos indicar la contraseña. La insertamos un par de veces y clic en Aceptar. Luego clic en Cerrar y listo, ya tenemos nuestra cuenta de root con contraseña conocida.

Bien, por donde íba, a sí, continuemos pues. Una vez se descargue Apache 2, iremos a configurarlo para que funcione correctamente. Nos dirigimos a la carpeta contenedora del programa utilizando la consola del siguiente modo:

$ cd /
$ cd /etc/apache2
$ gedit apache2.conf

NOTA: Si tipeas estas líneas en la consola como usuario root (para acceder como root en la consola, escribes:

$ su

y aprietas intro, después tipeas la contraseña que anteriormente has configurado y listo, ya estás como root), llegarás al fichero y lo abrirás para la edición.

Una vez abierto el fichero con gedit (programa de edición de textos) presionas Ctrl + F. Esta combinación de teclas te abrirá un diálogo con el que buscar las siguientes líneas:

#Include generic snippets og statements
Include /etc/apache2/conf.d/

Después de estas líneas agrega las siguientes líneas:

#Directorio propio
#Aquí inserta la carpeta en la que quieras guardar tus proyectos web
# en mi caso la carpeta se llama "sitio" y ya la tengo creada si no está
#creada he de crearla antes de nada para evitar errores posteriores
UserDir sitio
UserDir disabled root

#En este apartado, donde aparece "/var/www/sitio" pondremos la
#dirección completa donde se ubican mis proyectos
/var/www/sitio>
AllowOverride FileInfo AuthConfig Limit
Options Indexes SymLinksIfOwnerMatch IncludesNoExec


Cerramos Gedit y nos dirigimos a:

$ cd /
$ cd /etc/apache2/mods-enabled
$ ln -s /etc/apache2/mods-available/userdir.conf userdir.conf
$ ln -s /etc/apache2/mods-available/userdir.load userdir.load

Una vez hecho esto, nos vamos a editar el fichero "host" para crearnos diferentes sitios web y nos sea más fácil acceder a ellos desde el navegador. Podemos ir haciendo la primera prueba. Abrimos el Mozilla Firefox y escribimos en la barra de direcciones:

http://localhost

Nos debe de aparecer un mensaje que dice "It's Works". Esto significa que nuestro servidor Apache 2 está listo para usarse. Si no es así, deberás retroceder en el manual y ver que has dejado para mañana, puesto que lo tienes que hacer hoy si quieres que funcione. Para aquellos que sí reciban ese mensaje, les felicito y les animo a continuar con el manual para crear "Virtual Hosts".

Para crear nuestro listado de direccionamiento haremos lo siguiente:

$ cd /
$ gedit /etc/hosts

Ahora añadiremos las siguientes líneas:

#LOCAL
127.0.0.1 localhost
#Mi sitio 1
127.0.0.1 sitio1
#Mi sitio 2
127.0.0.1 sitio2

Si tienes una ip estática, es decir, si pagas de más por tu cuenta de Internet y tu proveedor (jazztel, telefónica,ono,...) te ha otorgado una IP Estática puedes incluirla al final de tus sitios en local, si no cerramos gedit y continuamos.

Para finalizar, tenemos que crear los hosts virtuales, es decir, como si fuesen diferentes servidores pero englobados en uno solo. Para ello atentos a las siguientes líneas de comandos:

$ cd /
$ cd /etc/apache2/site-available
$ cd cp default sitio1
$ gedit sitio1

(Ahora editamos el fichero que acabamos de crear. Recuerda que has de estar como root para poder realizar estas acciones).

El fichero debe ser algo como esto:


ServerAdmin tu-email@gmail.com
ServerName sitio1
DocumentRoot /var/www/sitio/sitio1

Options FollowSymLinks
AllowOverride None


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all


ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all


ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"

Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128



Cerramos Gedit y nos vamos ha hacer lo siguiente en la consola:

$ cp default sitio2
$ gedit sitio 2

Y de nuevo lo editamos:


ServerAdmin tu-email@gmail.com
ServerName sitio2
DocumentRoot /var/www/sitio/sitio2

Options FollowSymLinks
AllowOverride None


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all


ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all


ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined

Alias /doc/ "/usr/share/doc/"

Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128



Y ya estaría. Aun que antes de terminar, teneis que tener en cuenta lo siguiente:

  • Se han creado Hosts virtuales que apuntan a las siguiente dirección raíz:
-> /var/www/sitio
Para que esto funcione correctamente, dicha carpeta "sitio" ha de estar creada dentro del directorio "www" en "var". ¿Cómo? Pues muy fácil:

$ cd /
$ cd /var/www/
$ mkdir sitio
$ chmod 777 sitio

De este modo creamos la carpeta contenedora de todos los sitios. Que conste que el nombre de esta carpeta al igual que la de los sitio1 y sitio2 se pueden cambiar a vuestro antojo. Después les he dado privilegios de escritura y lectura para que podamos trabajar con ellos de forma mucho más cómoda después. Una vez tenemos la carpeta contenedora "sitio" tendremos que crear las carpetas para "sitio1" y "sitio2".

$ cd /
$ cd /var/www/sitio
$ mkdir sitio1
$ chmod 777 sitio1
$ mkdir sitio2
$ chmod 777 sitio2

Una vez tenemos esto, nuestro sistema debería de redireccionarnos a dichos directorios si en el navegador web escribimos el nombre de servidor que le hemos otorgado con anterioridad, aun que para que funcione, despues de tanto cambio y modificación, deberemos reiniciar el servidor de Apache 2, pero antes debemos de habilitar los nuevos hosts creados:

# a2ensite [nombre del sitio para habilitar]

# /etc/init.d/apache2 force-reload

Y nos deberá aparecer el siguiente mensaje:

* Reloading web server config apache2 [OK]

Si esto nos sale así entonces podremos hacer lo siguiente para dirigirnos a cada uno de nuestros proyectos:

http://sitio1 o http://sitio2

De este modo con el mismo servidor accedemos a dos de nuestros proyectos tan solo tipeando su nombre en la barra de direcciones de Firefox.
¡¡¡Y esto es todo, hasta la próxima!!!

1 comentario:

  1. intente hacer lo que explicas en el manual pero me sale esto y no supe como corregirlo ya que soy novato espeor puedas ayudarme.
    zero@zero:/etc/apache2$ sudo /etc/init.d/apache2 start
    * Starting web server apache2 Syntax error on line 287 of /etc/apache2/apache2.conf:
    Invalid command '/var/www/sitio', perhaps misspelled or defined by a module not included in the server configuration

    ResponderEliminar