El servidor web apache es una de las aplicaciones estrella del mundo
Linux. Es el servidor web más implantado entre los distintos servidores
que ofertan servicios web en Internet.
Entre las características más significativas destacamos:
Es modular
Capacidad para crear servidores virtuales
Capacidad para crear servidores seguros https
Capacidad para crear sitios privados
En este curso haremos uso de éstas y otras características de apache.
Organización del sitio web
La organización que realizaremos de nuestro servidor Apache, será la
clásica en los sistemas Unix: la página web de la intranet se
almacenará en la carpeta raíz del servidor web, las páginas de los
usuarios se almacenarán en la carpeta home de cada usuario y para
albergar las páginas web de los distintos departamentos, lo más práctico
es crear nuevos usuarios con el nombre del departamento.
Instalación de Apache2
Disponer de un servidor web nos permitirá alojar nuestras propias
páginas y aplicaciones web de forma que den servicio tanto desde dentro
de la intranet como desde Internet. Serán la base que facilitará el
acceso a la información.
apt-get install apache2
Con lo cual se instalarán los archivos necesarios para que funcione nuestro servidor web. Se instalará apache v2.
Configuración de Apache
Los archivos de configuración de apache2 se encuentran en la carpeta
/etc/apache2. El archivo principal de configuración es
/etc/apache2/apache2.conf. Antes de realizar cualquier cambio en este
archivo, es conveniente realizar una copia de seguridad del mismo ya que
si apache encuentra algún error en el archivo de configuración, no
arrancará.
Se pueden configurar infinidad de parámetros. Aquí, para poner en
marcha el servidor, editaremos el archivo apache2.conf y añadiremos
únicamente el siguiente parámetro:
ServerName www.ieslapaloma.com
Para que los PCs de la red local sepan que www.ieslapaloma.com es
nuestro servidor web, debemos crear una entrada 'www' hacia su dirección
IP en el servidor DNS. Si no, no quedará más remedio que acceder
utilizando la dirección IP del servidor.
Arranque y parada del servidor web apache
El servidor web apache2, al igual que todos los servicios en Debian,
dispone de un script de arranque y parada en la carpeta /etc/init.d.
// Arrancar o reiniciar el servidor apache2
/etc/init.d/apache2 restart
// Parar el servidor apache
/etc/init.d/apache2 stop
Consultar la versión instalada
/usr/sbin/apache2 -v
Espacio web para la Intranet
Por defecto, la carpeta raiz del servidor web es la carpeta
/var/www. Todos los documentos que se encuentren dentro de la carpeta
raíz del servidor web, serán accesibles vía web. Dentro del raiz de
documentos crearemos la página web de nuestra intranet.
Carpeta principal del servidor web (DocumentRoot)
- Carpeta raíz del servidor web: /var/www
- Acceso a la web principal: http://ip-del-servidor ó http://nombre-del-servidor
Para acceder vía web a la página almacenada en la carpeta raíz del
servidor, desde un navegador debemos acceder directamente con la
dirección IP a: http://ip-del-servidor o bien utilizando el nombre del
mismo si tenemos el DNS funcionando: http://nombre-del-servidor.
Solamente si no tenemos el DNS funcionando, podemos añadir el nombre y
la IP en /etc/hosts para resolver localmente.
Desde el navegador debe aparecer un mensaje como el siguiente:
It works!
Lo que siempre funcionará es ir con la dirección IP. Ejemplo, si la
dirección IP de nuestro servidor fuera 192.168.1.239, podemos ir con el
navegador a la dirección http://192.168.1.239 y obtendremos el mismo
resultado. Podemos personalizar nuestra página modificando el archivo
index.html que hay dentro de la carpeta /var/www.
Archivos i directorios de configuración
Los archivos de configuración más utilitzados son:
/etc/apache2/apache2.conf
/etc/apache2/ports.conf
La carpeta que contiene todas la webs disponibles esta en:
/etc/apache2/sites-available
Los enlaces simbólicos que habilitan las páginas web estan en el directorio:
/etc/apache2/sites-enabled
Cofiguración de los VirtualHost
Toda la configuración de carpetas, nombres y puertos que puede el
servidor mostrar se establece en el directorio
/etc/apache2/sites-available/
En el directorio /etc/apache2/sites-enabled deberan estar los
enlaces simbólicos a los sitos web que estan habilitados, o sea los
enlaces simbolicos a la carpeta /etc/apache2/sites-available/
Por defecto el fichero de configuración es /etc/apache2/sites-available/default i su contenido debe ser algo parecido a :
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
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/"
<Directory "/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
</Directory>
</VirtualHost>
En la carpeta /etc/apache2/sites-enabled creamos el enlace:
ln -s /etc/apache2/sites-available/default /etc/apache2/sites-enabled/default
Para que el apache2 cargue esta configuración se debe indicar el el
fichero de configuración /etc/apache2/apache2.conf. Se debe
añadir/descomentar al final del fichero apache2.conf la línia:
Include /etc/apache2/sites-enabled/
Opcionalmente podemos copiar la carpeta /var/www/apache-default a la carpeta /var/www/
Dominios Virtuales
Para que funcionen varios dominios virtuales en un host que tiene
asociado los dominios a una única IP se debe utilizar la cláusula
NameVirtualHost y VirtualHost.
En /etc/apache2/sites-available vamos a tener un archivo por cada
uno de nuestros sitios, que luego serán enlazados dinámicamente desde
/etc/apache2/sites-enabled
Cada uno de estos archivos (relacionados con cada sitio) van a vincular el contenido real del sitio web.
Vamos a los bifes, tengo dos dominios:
- www.uno.com
- www.dos.com
El dominio uno.com debe aceptar las consultas al puerto 80 pero
redirigirlas al puerto 8080. El segundo, funciona solo en el puerto
8080.
Creamos estos dos archivos y los enlazamos como dijimos:
/etc/apache2/sites-available# touch www.uno.com
/etc/apache2/sites-available# touch www.dos.com
/etc/apache2/sites-available#cd ../sites-enabled
/etc/apache2/sites-enabled#ln -s ../sites-available/www.uno.com uno
/etc/apache2/sites-enabled#ln -s ../sites-available/www.dos.com dos
Vamos a encontrar bajo este directorio también un archivo que es el que trae apache por defecto, este es el famoso It works!.
Antes de ver cómo configurar cada uno de estos dominios vale la pena
aclarar que la cláusula NameVirtualHost debe ir en uno solo de los
archivos que se encuentren en /sites-available/ , esto le indica a
apache que se están utilizando varios hostvirtuales. En nuestro caso lo
vamos a incluir en www.uno.com pero podría ir en cualquiera.
Ahora sí, veamos lo que ponemos en www.uno.com:
NameVirtualHost *:80 NameVirtualHost *:8080 <VirtualHost *:80>
ServerName www.uno.com
ServerAlias uno.com
DocumentRoot /var/www/sitiouno
<Directory /var/www/sitiouno>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory>
# Redirigir a https
RewriteEngine On RewriteRule ^(.*)$ https://www.dos.com$1 [R,L]
</VirtualHost>
Ahora veamos el contenido del sitio www.dos.com
<VirtualHost *:8080> ServerName www.dos.com ServerAlias
dos.com DocumentRoot/var/www/sitiodos<Directory /var/www/sitiodos>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
Allow from All
</Directory> </VirtualHost>
Solo queda reiniciar el apache2 y listo
Espacio web para cada usuario
Cada usuario del sistema dispondrá de un espacio web que se almacena
dentro de su carpeta home en una carpeta llamada 'public_html'. Si
dicha carpeta no existe, el propio usuario puede crearla y copiar dentro
de ella su página web. Los permisos recomendados para carpetas son 655
para que el 'grupo' y el 'resto' de usuarios tengan acceso de lectura y
así se puedan visualizar las páginas.
Para acceder vía web a la página de un usuario, desde un navegador
debemos acceder directamente con la dirección IP a:
http://ip-del-servidor/~login-usuario/
El caracter '~'comúnmente conocido como gusanillo y que se obtiene
con Alt Gr + 4 sirve para indicar a apache que debe servir la página
desde el home del usuario (en Linux el 'gusanillo' equivale a la carpeta
home). Ejemplo, si hemos creado un usuario javier y éste ha creado la
carpeta /home/javier/public_html y ha copiado en ella su página web,
desde cualquier PC de la red podremos acceder a dicha carpeta yendo a la
dirección http://ip-del-servidor/~javier/. Para que la página aparezca
automáticamente, es necesario crear un archivo llamado index.html.
Carpetas web de los usuarios
- Carpeta web de javier: /home/javier/public_html
- Acceso a la web de javier: http://ip-del-servidor/~javier/
Para configurar el apache para habilitar el espacio web para
usuarios se puede hacer de dos maneras. La primera creando los enlaces
simbólicos:
cd /etc/apache2/mods-enabled
ln -s ../mods-available/userdir.conf userdir.conf
ln -s ../mods-available/userdir.load userdir.load
Segunda simplemente ejecutando
a2enmod userdir
Sólo nos quedará reiniciar el apache
/etc/init.d/apache2 restart
Espacio web para los departamentos
Para proporcionar espacio web a los departamentos, lo más sencillo
es crear un usuario para cada departamento. Podemos crear los usuarios:
compras, produccion (sin acentos), etc... Al igual que cada usuario del
sistema, dispondrán de un espacio web dentro de su carpeta home en una
carpeta llamada 'public_html'. Si dicha carpeta no existe, habrá que
crearla y copiar dentro de ella la página web del departamento.
Para acceder vía web a la página del departamento, desde un
navegador debemos acceder directamente con la dirección IP a:
http://ip-del-servidor/~departamento. Ejemplo, si hemos creado un
usuario compras y hemos creado la carpeta /home/compras/public_html y
copiado en ella la web del departamento de compras, desde cualquier PC
de la red podremos acceder a dicha web yendo a la dirección
http://ip-del-servidor/~compras. Para que la página aparezca
automáticamente, es necesario crear un archivo llamado index.html.
Carpetas web de los departamentos
- Carpeta web del dpto. de compras: /home/compras/public_html
- Acceso a la web de dpto. de compras: http://ip-del-servidor/~compras/
De la misma manera, se pueden crear usuarios para proporcionar
espacio web a otros órganos, p.ej: equipodirectivo, conserjeria, etc...
para que dispongan de su propio espacio web.
No hay comentarios:
Publicar un comentario