Instalación del Servicio
Para instalar el servicio tenemos que ejecutar el siguiente comando
sudo apt-get install apache2
Una vez instalado podemos acceder al servidor para comprobar que se ha instalado correctamente, podemos acceder al servidor poniendo la ip en el navegador.
Tenemos unos comandos básicos para poder iniciar, reiniciar, parar y recargar el servicio.
sudo service apache2 start
sudo service apache2 restart
sudo service apache2 stop
sudo service apache2 reload
Además, también podemos ver el estado del servicio utilizando
sudo service apache2 status
Configuración del Servicio
Configurar un host
Para crear un host, tenemos que crear un fichero en concreto, supongamos que queremos configurar el host sertxudeveloper.local.
sudo nano /etc/apache2/sites-available/sertxudeveloper.conf
Dentro del fichero tenemos que introducir lo siguiente
<VirtualHost *:80>
ServerName sertxudeveloper.local
DocumentRoot /var/www/html/sertxudeveloper
</VirtualHost>
Esta es una configuración muy simple, hemos configurado un host virtual en el puerto 80
, este host responde bajo el nombre de sertxudeveloper.local
y los archivos los va a mostrar a partir de la carpeta /var/www/html/sertxudeveloper
.
Pasamos ahora a configurar un ejemplo un poco más complejo.
<VirtualHost *:80>
ServerName sertxudeveloper.local
ServerAdmin [email protected]
DocumentRoot /home/sertxudeveloper/public_html
<Directory /home/sertxudeveloper/public_html>
Options Indexes FollowSymLinks
Require all granted
AllowOverride none
</Directory>
</VirtualHost>
En este ejemplo, hemos vuelto a configurar el host sertxudeveloper.local
en el puerto 80
, en este caso, hemos especificado el correo del administrador del dominio, también hemos cambiado la carpeta del host a public_html
dentro del home del usuario, como esa carpeta por defecto no tiene permisos el apache se los tenemos de dar especificándolo en la directiva <Directory [ruta]>
, las directivas que hemos añadido dentro de la de la carpeta las veremos a continuación.
Directivas
<VirtualHost [ip]:[puerto]>
Directiva para configurar el host virtual, [ip]
es la ip con la que queremos que funcione este host, esto se utiliza si un servidor tiene varias tarjetas de red, así dependiendo de cual se utilice muestra un host u otro, si se pone *
utiliza todas las interfaces de red disponibles. El puerto también lo podemos definir, la conexión http tiene el puerto 80
y la https el 443
.
ServerName [host]
En esta directiva especificamos el [host]
que queremos configurar.
ServerAlias [alias] [...]
Nos permite definir [alias]
al host, como por ejemplo www
, quedaría así
ServerAlias www.sertxudeveloper.com
ServerAdmin [correo]
Aquí tenemos que poner el correo electrónico del administrador del host, se mostrará cuando se produzcan errores en el host.
DocumentRoot [ruta]
Ruta raíz de la cual queremos que cargue nuestro host.
DirectoryIndex [archivo]
Archivo que cargará al entrar al host/directorio sin especificar un archivo en concreto.
<Directory [ruta]>
Directorio que queremos configurar para un correcto funcionamiento
Require [opciones]
all granted
Permite el acceso a todo el mundo
all denied
Bloquea el acceso a todo el mundo
user [usuario] [...]
Permite solo el acceso a los usuarios proporcionados
group [grupo] [...]
Permite solo el acceso a los grupos proporcionados
valid-user
Permite acceder al cualquier usuario de apache
ip [ip]
La [ip] puede ser tanto una IP, como una red
<RequireAll></RequireAll>
Permite agrupar directivas Require, en esta directiva no puede fallar ningún Require
y al menos uno debe ser satisfactorio.
<RequireAny></RequireAny>
Permite agrupar directivas Require, en esta directiva puede fallar algún Require
y al menos uno debe ser satisfactorio.
<RequireNone></RequireNone>
Permite agrupar directivas Require, en esta directiva debe fallar al menos un Require
y ninguno puede ser satisfactorio.
AllowOverride [opciones]
all
Utiliza el fichero .htaccess en caso de que exista
none
Ignora el fichero .htaccess
AuthConfig
Permite el uso de directivas de autorización (login)
Deprecated Order [allow|deny],[deny|allow]
Directiva utilizada para especificar el orden a la hora de aplicar las directivas Allow
y Deny
, si una directiva coincide tanto el allow como en deny, se aplica el último valor, es decir, en el caso de que coincida y tengamos Order deny,allow, como allow es el último le permite el acceso.
Deprecated Allow from [opciones]
all
Permite el acceso a todo el mundo
[ip]
Permite el acceso desde la IP/red especificada
Deprecated Deny from [opciones]
all
Bloquea el acceso a todo el mundo
[ip]
Bloquea el acceso desde la IP/red especificada
Las directivas Order, Allow y Deny, está obsoletas y no se recomienda su uso, ya que en un futuro serán eliminadas de Apache, se puede realizar lo mismo utilizando la directiva Require.
<Files [opciones]></Files>
~ \"[expresión regular]\"
Aplica directivas a los ficheros que cumplen con la expresión regular especificada
\"[fichero]\"
Aplica directivas al fichero especificado
Para la expresión regular podemos hacer lo siguente, ?
para un carácter opcional, *
para una cadena.
Ejemplo: ~ \" \\.(gif|jpe?g|png)$\"
Extensiones .gif .jpg .jpeg .png
Options [opciones]
Indexes
Permite el listado de ficheros y carpetas
FollowSymLinks
Seguir los enlaces simbólicos de la carpeta
Includes
Permite los includes de ficheros y directorios ubicados en otra carpeta.
Al definir alguna de estas opciones, podemos incluir el símbolo +/-
delante de la opción, de esta forma, las opciones heredadas se pueden añadir o quitar, es decir, si la carpeta padre tiene activados los Indexes
, pero en la hijo queremos añadir los enlaces simbólicos, tenemos que poner +FollowSymLinks
. Si no ponemos el +/-
se sobrescriben las opciones.
AuthType [opciones]
Basic
Transferencia de contraseña sin cifrar, requiere el módulo auth_basic
activo
Digest
Transferencia de contraseña cifrada, requiere el módulo auth_digest
activo
AuthName [texto]
Nos permite identificar los logins, todos los directorios que tengan el mismo solo nos lo solicitarán una vez.
AuthUserFile [ruta]
Ruta al fichero que contiene los usuarios
AuthGroupFile [ruta]
Ruta al fichero que contiene los usuarios, requiere el módulo authz_groupfile
ErrorLog [ruta]
Configura la ruta del registro de errores de apache
CustomLog [ruta] combined
Configura la ruta del registro de mensajes de apache
Archivo htaccess
Las directivas AuthType
, AuthName
, AuthUserFile
, AuthGroupFile
y Require
, se pueden poner en un archivo .htaccess
dentro del directorio deseado, en vez de añadirlas en la directiva <Directory>
Comandos Adicionales
Activar y Desactivar hosts
Para activar un host tenemos que utilizar este comando
a2ensite [host]
De lo contrario, para desactivar un host tenemos que utilizar
a2dissite [host]
En estos dos casos, [host]
es el archivo de configuración del host, en nuestro caso sertxudeveloper.conf
Activar y Desactivar módulos
Para activar un módulo tenemos que utilizar este comando
a2enmod [módulo]
De lo contrario, para desactivar un módulo tenemos que utilizar
a2dismod [módulo]
En estos dos casos, [módulo]
es el nombre del módulo que deseamos activar/desactivar
Gestión de Usuarios y Grupos
Apache trae su propio sistema de usuarios y grupos, vamos a empezar viendo cómo crear usuarios y después pasamos a ver los grupos.
Usuarios
Para crear un usuario, tenemos que utilizar el siguiente comando
htpasswd [opciones] [fichero] [usuario]
Apache guarda los usuarios en el [fichero]
que especificamos, es preferible guardar todos los usuarios en un mismo fichero o al menos uno por host para evitar duplicados.
En el [usuario]
especificamos el nombre con el que el usuario iniciará sesión
Vamos a ver unas pocas [opciones]
disponibles:
-c
Crea el fichero si no existe, si existe lo sobrescribe borrando usuarios
-b
Permite especificar la contraseña junto al usuario en el comando
-D
Elimina el usuario del fichero
Las opciones no son obligatorias, pero en algunos casos son necesarias para usos concretos.
Grupos
Ya tenemos los usuarios creados, ahora tenemos que crear los grupos, para ello creamos otro fichero en el que guardaremos los grupos que vayamos creando.
No hay un comando específico para crear grupos, pero es muy sencillo realizarlo.
[grupo]: [usuario] [...]
Indicamos el grupo, y los usuarios a continuación dejando un usuario entre cada uno
Modificar archivo hosts del cliente
En nuestro cliente, tenemos que modificar un fichero del sistema para poder acceder al host que acabamos de configurar.
Dependiendo del sistema operativo cliente el fichero se ubica en un directorio distinto.
Abrimos el fichero y añadimos al final del fichero la siguiente línea
[IP del servidor] [nombre del host]
En mi caso quedaría así
192.168.10.254 sertxudeveloper.local
Tenemos que realizar esta acción siempre que el servidor no tenga un DNS configurado con el host. Podemos añadir más de un host a la misma línea separándolos con un espacio, siempre que compartan la misma IP.
192.168.10.254 sertxudeveloper.local 2smx.local