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.