APACHE

Instalación de apache y ficheros de configuración

Necesitamos permiso de administrador, por lo tanto haremos:

sudo su

una vez somos administradores actualizamos los repositorios

apt-get update

y ahora instalar apache

apt-get install apache2

ahora que ya esta instalado podemos interactuar con los servicios de apache2, con:

service apache2 status

vemos el estado de apache,para comprobarlo abrimos el navegador y ponemos localhost, se cargara la página por defesto de apache. esta página por defecto en ubuntu se encuentra en var/www/html y el archivo es index.html. Otrasordenes interesantes con service es:

service apache2 stop    >> para el servicio
service apache2 start   >> arranca el servicio
service apache2 restart >> equivale a parar y arrancar el servicio
service apache2 reload  >> vuelve a leer los archivos de configuración sin necesidad de parar el servicio.

Los archivos de configuración de apache se encuentran en ubuntu en /etc/apache2/ Otro comando es

apache2ctl -t

comprueba que los ficheros de configuración no tengan ningun error de sintaxis. para solucionar el warning que nos sale hemos de asignarle un nombre al servername en el fichero de configuración apache2.conf al final del archivo escribimos servername www.caucat.com.

Creación de un sitio virtual(Virtual Host)

Un virtual host sirve para poder usar varios sitios(web) desde un mismo servidor, en caso de que tengamos 2 o mas web apuntando a una misma ip, apache puede apuntar a cada uno de ellos de forma distinta. ejemplo: tenemos www.sito1.com y www.sitio2.com que apuntan a mi ip, hemos de crear un sitio virtual para cada uno de ellos para que apache sepa diferenciar cuando le venga una solicitud. Para el ejemplo anterior le vamos adecir a la configuracion de apache que tanto sitio1.com y sitio2.com apuntan a mi localhost, 127.0.0.1 Editamos /etc/hosts y le vamos a decir

127.0.0.1    sitio1.com
127.0.0.1    sitio2.com

de esta manera si hacemos ping a cualquiera de estas direcciones nos respondera nuestra maquina. Seguidamente creamos las carpetas donde alojamos nuestros sitio web y creamos con nano nuestra archivo index.html para cada uno de ellos Ahora nos vamos a /etc/apache2 hacemos ls y nos fijamos que hay 2 carpetas que nos interesan

sites-available = sitios disponibles
sites-enabled = sitios habilitados

Hemos de crear 2 sitios virtuales que se situaran en sites-availables que luego habilitaremos y pasaran a sites-enabled

Dentro de sites-availables hay 2 plantillas que usaremos, en este caso copiaremos 000-default.conf y la llamaremos sitio1.conf y sitio2.conf Dentro estos archivos hay 2 cosas que nos importan 1. Descomentar ServerName y ponerle el nombre del servidor

ServerName www.sitio1.com

2.Poner en DocumentRoot la dirección de la carpeta donde estan los index.html

DocumentRoot /var/www/sitio1

finalmente los tenemos que activar con a2ensite

a2ensite sitio1
a2ensite sitio2

apache nos pedira que recarguemos apache

service apache2 reload

y ya estarian configurados nuestros hosts virtuales para sitio1 y sitio2 si queremos deshabilitar un virtual hosts podemos usar el comando a2dissite

a2dissite sitio1
a2dissite sitio2

tambien podiamos haber comprobado si estaban correctos antes de recargar apache con apache2ctl -t.

Puertos de escucha

Para activar otros puertos a parte del 80 que vienen por defecto hemos de ir a /etc/apache2/ports.conf Editamos el archivo

nano ports.conf

y añadimos el puerto que queramos activar

Listen 90

para cargar los cambios en apache

service apache2 reload

si vamos al navegador y ponemos localhost:90 nos carga la página por defecto de apache, por lo tanto ya esa escuchando por el puerto 90 ahora si queremos que en sitio1.com o sitio2.com tambien escuche por el puerto 90 hemos de modificar su virtualhost abrimos sitio1.conf y añadmos en la 1ª linea <VirtualHost :80> :90 y quedaria asi

<VirtualHost *:80 *:90>

comprobamos que la sintaxis este bien

apache2ctl -t

recargamos el apache

service apache2 reload

Configuración basica de apache para producción

Lo primero vamos a solicitar una peticion telnet en nuestro localhost para ver cierta información

telnet localhost 80

seguidamente escribimos

GET / HTTP/1.0

En la cabecera el servidor nos da una información que no seria necesaria, como el SO y la version de apache,para cambiarlo nos vamos a la ayuda de apache, en el navegador ponemos apache2 manual y entramos en el siguiente link Para cambiar la informacion que nos muestra hemos de modificar una directiva de apache2 que se llama ServerTokens, aqui tenemos un listado con todas las directivas y como utilizarlas. ServerTokens por defecto viene en full y nosotros lo queremos poner en prod, vamos a apache2.conf dentro de /etc/apache2 y al final añadimos la linea

ServerTokens prod

guardamos y recargamos apache otra directiva que vamos a cambiar sera MaxKeepAliveRequests que por defecto acepta 100 conexiones simultaneas, y la subiremos a 500. añadimos en apache2.conf

MaxKeepAliveRequests 500

La siguiente directiva que modificamos es TimeOut, para aumentar el tiempo de respuesta del servidor

TimeOut 300

y por ultimo cambiamos LogLevel que esta en warn, los log de apache estan en /var/log/apache2/

LogLevel error

Hemos de acordarnos siempre que cambiamos la configuración en apache es comprobar si hay algun error sintactico y recargar el servidor

apache2ctl -t
service apache2 reload

Directiva Directory

Vamos a cambiar esta directiva para poder cambiar la carpeta por defecto donde ajolamos nuestra web creamos en / una carpeta y dentro alojaremos nuestra web en /www/sitio1 modificamos el virtualhost de sitio1 para la nueva direccion y vemos que no funciona, la directiva de apache que nos permite acceder solo esta activa para el directorio /var/www, hemos de añadir una directiva nueva para esta nueva ubicación. vamos apache2.conf y vemos la directiva por defecto de /var/www

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

la cortamos y copiamos en sitio1.conf, modificando la direccion de Directory

<Directory /www/sitio1>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

en este caso la linea que nos interesa es Require all granted que nos da permisos en ese drectorio en caso de que pusiera Require all denied significaria que no tenemos ningun permiso.

Directiva Alias

con esta directiva puedo acceder a un sitio web desde diferentes urls por ejemplo: creo un directorio que llamare info y dentro pondre un index.html, y para acceder desde diferentes url solo tengo que añadir los Alias a sitio.conf que queramos

Alias /contactos /www/sitio1/info

ahora info sera accesible tanto desde www.sitio1/info como desde www.sitio1/contactos se pueden añadir tantos Alias como queramos.

Volver al inicio