Servicio Apache2

Servicio Apache2

Tutorial Ubuntu 16.04 Linux Servidor Redes

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 webmaster@sertxudeveloper.local
    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 AuthTypeAuthNameAuthUserFileAuthGroupFile 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