Los usuarios introducen una URL para apuntar a un webserver por medio de su FQDN y el path del recurso.
El protocolo más usado para transferencia de páginas web es el HTTP. HTTPS y FTP son también soportados.
La configuración LAMP (Linux,Apache,MySQL y Perl/Python/PHP) forma una potente y robusta plataforma para el desarrollo y despliegue de aplicaciones basadas en web.
Para instalar apache2:
sudo apt-get install apache2
Configuración
Esta colocado en archivos de configuración de texto plano:- apache2.conf: archivo principal de configuración. Contiene ajustes globales.
- conf.d: contiene archivos de configuración.
- envvars: archivo de variables de entorno
- httpd.conf: históricamente fue el archivo principal de apache. Da nombre al demonio httpd.
- mods-available: contiene archivos de configuración para carga y configuración de módulos. No todos lo módulos tendrán una configuración especifica.
- mods-enabled: mantiene symlinks para los archivos en /etc/apache2/mods-available. Cuando un archivo de configuración de módulo es symlinked será capacitado la siguiente vez que apache2 sea reiniciado.
- ports.conf: determina en que puertos escucha apache2.
- sites-available: contiene archivos de configuración para Apache Virtual Hosts. Virtual Hosts permite que Apache2 sea configurado para multiples sites que tienen configuraciones separadas.
- sites-enabled: contiene symlinks para el /etc/apache2/sites-available.
Ajustes básicos
Esta sección explica los parámetros de configuración esenciales para Apache2.Apache2 trae una configuración de virtual-host-amistoso por defecto. Es decir, está configurado con un solo virtual-host por defecto, que se puede dejar tal cual si tiene un solo sitio, o se utiliza como plantilla para servidores virtuales adicionales. Si no está solo, el servidor virtual predeterminado servirá su sitio predeterminado, o los usuarios del sitio verán si la URL no concuerda con la directiva ServerName de cualquiera de sus sitios personalizados. Para modificar el host virtual por defecto, editar el archivo /etc/apache2/sites-available/default
El conjunto de directivas para un servidor virtual sólo se aplican a un servidor virtual particular. Si se establece una directiva en todo el servidor y no se define dentro de la configuración de la máquina virtual, la configuración por defecto se utilizará. Esto es útil para definir una dirección de correo del webmaster y no definir cada dirección de correo para cada host virtual.
Si quieres configurar un nuevo virtualhost o sitio, copia ese archivo dentro del mismo directorio y elige un nombre. Por ejemplo:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite
Edita el nuevo archivo para configurar el nuevo sitio usando algunas de las directivas descritas a continuación:
- ServerAdmin especifica el email del administrador. Por defecto es [email protected] Esto debe ser cambiado. Si tu website tiene un problema apache muestra un mensaje de error con el email. Esta directiva se encuentra en /etc/apache2/sites-available.
- Listen especifica el puerto y opcionalmente la IP. Si la IP no está especificada, apache escuchará en todas las IP asignadas a la maquina donde se ejecuta. El valor por defecto es 80. Esta directiva se encuentra en /etc/apache2/ports.conf
- ServerName
es opcional y especifica que FQDN tu sitio debe responder. El valor por
defecto no está especificado, por lo que responderá todas las
peticiones que no se ajusten al ServerName de otro virtual host. Si has
adquirido el dominio example.com y deseas alojarlo en tu server, el
valor de la directiva ServerName en el archivo de configuración de tu
virtual host debe ser example.com. Añade esta directiva al nuevo
archivo de virtual host que acabas de crear en /etc/apache2/sites-available/mynewsite.
Por ejemplo, lo siguiente causará que tu sitio responda cualquier petición acabada en .example.com.
ServerAlias *.example.com
- DocumentRoot especifica donde apache debe buscar los archivos que constituyen el sitio. El valor por defecto es /var/www. No hay ningún sitio configurado allí, pero si descomenta la directiva RedirectMatch en /etc/apache2/apache2.conf, las peticiones se redirigiran a /var/www/apache2-default. Cambia este valor en la maquina virtual de tu sitio y recuerda crear ese directorio si fuera necesario.
Capacitar el nuevo virtualhost usando la utilidad a2ensite y reiniciar Apache:
sudo a2ensite mynewsite
sudo /etc/init.d/apache2 restart
Dale un nombre más descriptivo al virtual host. Un método es nombrar el archivo después de la directiva ServerName del VirtualHost.
Similarmente, usa a2ensite para descapacitar sitios. Esto es útil cuando encontramos problemas de configuración con multiples VirtualHost:
sudo a2dissite mynewsite
sudo /etc/init.d/apache2 restart
Ajustes por defecto
Si añades un virtual host, los ajustes que definas toman precedencia. Para una directiva no definida los valores por defecto son usados.- DirectoryIndex es la página por defecto que entrega el servidor cuando un usuario solicita un índice de un directorio especificado con una barra inclinada (/) al final del nombre del directorio.
- ErrorDocument permite especificar un archivo para apache para eventos error. Por ejemplo, si un usuario pide un recurso que no existe, un 404 error ocurrirá, y por defecto el archivo /usr/share/apache2/error/HTTP_NOT_FOUND.html.var será mostrado. Ese archivo no está en el DocumentRoot del servidor, pero hay un Alias en /etc/apache2/apache2.conf que redirige peticiones a el directorio /error, /usr/share/apache2/error/
Para ver una lista de las directivas por defecto de ErrorDocument, usa:
grep ErrorDocument /etc/apache2/apache2.conf
- Por defecto, el servidor escribe el log de transferencia en el archivo /var/log/apache2/access.log. Tu puedes cambiar esto en funcion de cada sitio en los archivos de configuración de virtualhost con la directiva CustomLog, u omitirlo para aceptar el valor predeterminado, especificado en /etc/apache2/apache2.conf. También puedes especificar el archivo en el que se registrarán los errores, a través de la directiva ErrorLog, cuyo valor predeterminado esta en /var/log/apache2/error.log. Estos se mantienen separados de los registros de transferencias para ayudar en la solución de problemas con tu servidor. También puedes especificar el LogLevel (el valor predeterminado es "advertir") y el LogFormat cuyo valor por defecto está en /etc/apache2/apache2.conf.
- Algunas opciones son
especificadas por directorio en lugar de por servidor. Options es una
de estas directivas. Un parrafo Directory es encerrado en etiquetas
tipo XML:
...
</Directory>
La directiva Options dentro del parrafo Directory acepta uno o más de los siguientes valores (entre otros), separados por espacios:
- ExecCGI permite la ejecución de scripts CGI. No se ejecutan si esta opción no está elegida.
- Includes - Permite inclusiones del lado del servidor. Esta no es una opción común.
- IncludesNOEXEC - Permite inclusiones del lado del servidor, pero descapacita los comandos #exec y #include en scripts CGI
- Indexes - Muestra una lista formateada de los contenidos del directorio, si DirectoryIndex no existe en el directorio pedido.
- Multiview - Esta opción esta discapacitada por defecto.
- SymLinksOwnerMatch - Solo sigue enlaces simbolicos si el propietario es el mismo.
Ajustes httpd
Esta sección explica algunos ajustes básicos de configuración del demoniohttpd
.- LockFile - Establece el path del lockfile. Debe ser guardado en el disco local. Debe dejarse a su valor predeterminado a menos que el directorio de logs se encuentre en un NFS share. Si este es el caso, el valor por defecto debería ser cambiado a una ubicación en el disco local y un directorio que sea legible por root.
- PidFile - Ajusta el archivo en el cual el servidor registrará sus procesos ID (pid). Este archivo debe solo ser leible por root. En la mayoría de casos debería dejarse a su valor predeterminado.
- User - Ajusta el userid usado por el servidor para responder peticiones. El valor predeterminado para User es www-data.
La directiva Group es similar a User. Establece el grupo bajo el cual el servidor responderá peticiones. El grupo por defecto es también www-data.
Modulos Apache
Apache es un servidor modular. Esto significa que solo la funcionalidad más básica es incluida en el núcleo. Si el servidor está compilado para usar dinámicamente modulos cargados, entonces modulos pueden ser compilados separadamente, y añadidos en cualquier momento usando la directiva LoadModule.Directivas de configuración pueden ser condicionalmente incluidas sobre la presencia de un módulo particular encerrandolas en un bloque <IfModule>.
Tu puedes instalar modulos adicionales y usarlos con tu webserver. Por ejemplo, esto instala el módulo MySQL Authentication:
sudo apt-get install libapache2-mod-auth-mysql
Ver el directorio /etc/apache2/mods-available para modulos adicionales.
Usa la utilidad
a2enmod
para posibilitar un modulo:sudo a2enmod auth_mysql
sudo /etc/init.d/apache2 restart
Similarmente,
a2dismod
para discapacitarlo.Configuración HTTPS
El mod_ssl añade una característica importante al servidor apache - la habilidad de encriptar comunicaciones. Cuando tu navegador usa SSL el prefijo https:// es usado en el comienzo de la URL.El mod_ssl está disponible en el paquete apache2-common.
sudo a2enmod ssl
Hay un archivo de configuración HTTPS predeterminado en /etc/apache2/sites-available/default-ssl. La configuración HTTPS predeterminada usará un certificado y clave generado por el paquete ssl-cert. Ellos son buenos para testear, pero deben ser sustituidas por un certificado especifico para el sitio o servidor. Ver la sección Certificados.
Para configurar Apache para HTTPS:
sudo a2ensite default-ssl
Los directorios /etc/ssl/certs y /etc/ssl/private son localizaciones por defecto. Si tu instalas el certificado y la clave en otro directorio asegurate de cambiar SSLCertificateFile y SSLCertificateKeyFile
Ahora reinicia el servicio:
apropiadamente.
sudo /etc/init.d/apache2 restart
Dependiendo de como has obtenido el certificado puede que necesites introducir una passphrase cuando Apache arranque.
Tu puedes acceder a las páginas seguras con https://tu_hostname/url/ en el navegador.