Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instalar y Configurar El Servidor Web Apache PDF
Instalar y Configurar El Servidor Web Apache PDF
Tabla de Contenidos
El servidor toma el archivo o la página solicitada y lo mapea en el archivo correspondiente del servidor. Este vuelve
a enviar el archivo al navegador con cierta información, como su tipo MIME, la longitud del contenido y otra
información útil.
A veces, el archivo solicitado es una página estática como páginas HTML o páginas dinámicas como PHP, Java,
Perl o cualquier otro lenguaje del lado del servidor.
Por ejemplo, cuando escribes www.yourDomain.com, el navegador consulta al servidor DNS la dirección IP de la
computadora: www.yourDomain.com. Una vez que el navegador obtiene la respuesta del DNS, inicia una conexión
TCP en el puerto 80 y solicita la página web predeterminada, luego esta página es enviada hacia ti y eso es todo.
Implementaciones del servidor web de Linux
Existen muchas implementaciones de servidores web Linux disponibles para tu utilización:
Servidor Apache
Nginx
Lighttpd
Apache Tomcat
Demonio Monkey HTTP (utilizado especialmente para sistemas integrados)
Hay más servidores web Linux, pero esta es la lista de los servidores web más utilizados.
Entre los servidores antes mencionados los más utilizados son Apache y Nginx.
Es estable.
Es flexible
Es seguro
Instalaremos y configuraremos el servidor Apache en Linux, pero primero repasemos algunos de los conceptos
básicos del protocolo HTTP.
Entender HTTP
Cuando solicitas un archivo o una página desde un servidor web, el cliente se conecta primero al servidor en el
puerto 80. Luego de una conexión exitosa, el cliente enviara comandos HTTP (también métodos) al servidor. Este
comando incluye un encabezado de solicitud que incluye información sobre el cliente.
Para ver estos encabezados de solicitud en chrome, abre los devtools, luego abre el panel de red y visite
google.com. Verifica los encabezados de solicitud, deberías ver algo como esto:
El encabezado de solicitud también incluye información sobre el cliente, como el agente de usuario y los formatos
aceptados.
Se puede enviar información adicional con el encabezado de solicitud. Por ejemplo, si hace clic en un enlace que
abrirá otro sitio web, el encabezado incluirá el sitio de referencia.
Después de recibir el encabezado de la solicitud por completo, el servidor responde con el archivo o la página
solicitada junto con un encabezado de respuesta.
El encabezado de respuesta incluye información sobre el contenido recibido, su tipo y otra información.
Puedes verificar los encabezados de respuesta desde el panel de red del navegador.
Instalar el servidor web Apache
Para instalar el servidor el servidor web Apache en distribuciones basadas en Red Hat utiliza el siguiente comando:
$ dnf -y httpd
O si estás utilizando una distribución basada en Debian, puedes instalarla de la siguiente forma:
$ apt-get -y install apache2
Ahora abre tu navegador y visita http: // localhost o http: // [:: 1] / si estás usando IP v6 y si tu instalación funciona
bien, deberías ver tu página de inicio de HTML.
Configurando servidor web Apache
Puedes agregar archivos a Apache en el directorio /var/www/html para páginas de nivel superior.
Solo recuerde asegurarte de que cualquier archivo o directorio colocado en ese directorio sea legible por todos.
No podemos analizar todas las opciones de Apache en una sola publicación, pero discutiremos las opciones más
importantes.
ServerRoot /etc/httpd
Opción Listen
Este es el puerto que usará el servidor web Apache para esperar las conexiones entrantes.
El valor predeterminado para esta opción es 80 para conexiones no seguras y 443 para conexiones seguras.
Si tienes varias direcciones IP en tu servidor, puedes asignar qué IP debe escuchar la conexión utilizando la opción
Listen.
Puedes especificar un puerto diferente que no sea 80, solo asegúrese de que no esté en uso.
También se pueden ejecutar muchos servidores HTTP en el mismo hardware cada uno en un puerto único.
Cuando un servidor se ejecuta en un puerto no estándar, como el puerto 8080, requerirá que el número de puerto se
indique explícitamente:
www.example.com:8080
Listen 80
Opción ServerName
Esta opción especifica el nombre de host del servidor web que aparece a los visitantes.
ServerName FQDN
Opción DocumentRoot
Esto define la ruta que contendrán tus archivos que serán servidos.
DocumentRoot /var/www/html
Opción MaxRequestWorkers
Esta opción establece la cantidad máxima de conexiones simultáneas que recibirá el servidor.
Opción LoadModule
Esta opción se usa para cargar módulos en el servidor web Apache.
mod_cgid: Este módulo se usa para ejecutar scripts CGI usando el servidor web Apache..
mod_userdir: Este módulo te permite servir contenido de los directorios específicos de los usuarios.
Si quisieras deshabilitar la carga de un módulo específico, puede comentar la línea del módulo de carga que
contiene ese módulo.
O si utiliza distribuciones basadas en Debian como Ubuntu, puede utilizar estos comandos:
$ a2enmod modulename
$ a2dismod modulename
Si habilita o deshabilita un módulo, debe volver a cargar o reiniciar el servidor web Apache.
LoadModule mod_cgid.so
Opción Include
Esta opción te permite incluir otros archivos de configuración.
Puedes almacenar toda la configuración para diferentes dominios virtuales, y Apache los incluirá en tiempo de
ejecución.
Include filePath
Opción UserDir
Esta opción especifica el directorio que contendrá los archivos a los que se podrá acceder a través del servidor
web. Este directorio generalmente se llama public_html y está ubicado en el directorio de inicio del usuario.
Por ejemplo, si tienes un usuario Adam que quiere que su contenido web esté disponible a través del servidor web
Apache.
Ahora, si ponemos un archivo index.html, podrás acceder a través del navegador de esta manera:
http://YOURHOSTNAME/~adam
UserDir public_html
Opción Alias
Esta opción especifica la ubicación de los archivos que están fuera de la ubicación de DocumentRoot y que
necesitan ser servidos por el servidor web Apache.
Como por ejemplos archivos fuera del DocumentRoot que deseas que estén disponibles para los visitantes.
Opción ErrorLog
Esta opción especifica el archivo de registro de errores para el servidor web Apache..
ErrorLog /var/log/httpd/error_log
Opción VirtualHost
Esta opción te permite alojar múltiples sitios web en el mismo servidor.
Para configurar un host virtual para el host www.example.com. En primer lugar, debes crear una opción
de VirtualHost en el archivo /etc/httpd/conf/httpd.conf.
1 <VirtualHost www.example.com>
2
3 ServerAdmin admin@example.com
4
5 DocumentRoot /home/adam/public_html
6
7 ServerName www.example.com
8
9 ErrorLog /var/log/users/adam/error_log
10
11 </VirtualHost>
Ten en cuenta que la opción ServerName debe poder resolverse a través del DNS.
Estas son las opciones de Apache más usadas..
La directiva NameVirtualHost define qué direcciones pueden ser hosts virtuales; el asterisco (*) significa cualquier
nombre o dirección en este servidor. Puedes escribirlos así:
1 NameVirtualHost *
2
3 <VirtualHost *>
4
5 ServerName www.example.com
6
7 DocumentRoot "/home/user1/public_html/"
8
9 </VirtualHost>
10
11 <VirtualHost *>
12
13 ServerName www.example2.com
14
15 DocumentRoot "/ home/user2/public_html/"
16
17 </VirtualHost>
Si tiene más de una dirección IP y deseas utilizar un certificado SSL, el sitio web debe estar en una dirección IP
dedicada. Puedes escribir todos los hosts virtuales basados en IP de la siguiente manera:
1 <VirtualHost 192.168.1.2>
2
3 ServerName www.example.com
4
5 DocumentRoot "/home/user1/public_html/"
6
7 </VirtualHost>
8
9 <VirtualHost 192.168.1.3>
10
11 ServerName www.example2.com
12
13 DocumentRoot "/ home/user2/public_html/"
14
15 </VirtualHost>
Ownership o propiedad de los procesos de Apache
Sabemos por la publicación Gestión de procesos en Linux, que cada proceso hereda sus permisos de su proceso
principal.
Este hecho es cierto para todos los procesos, excepto para las aplicaciones con los bits SETUID, que heredan los
permisos del propietario, no el proceso principal. Un buen ejemplo es /bin/su.
Si un usuario normal ejecuta el programa /bin/su, el programa, no hereda el permiso de Adam, pero actúa como un
usuario raíz que lo ejecuta.
Dado que el servidor web Apache necesita vincular el puerto 80, y esto necesita privilegios de root.
Después de enlazar al puerto 80, Apache puede ejecutarse como un usuario normal y leer solo los archivos que
tienen permisos de lectura.
Según la distribución de Linux que utilices , el usuario podría ser uno de los siguientes:
Retrasé la introducción de dos opciones más para apache hasta llegar a ese punto.
Opción User
Esto especifica la identificación de usuario que el servidor web usará para responder solicitudes.Esto especifica la
identificación de usuario que el servidor web usará para responder solicitudes.
User www-data
Opción group
Esto especifica el grupo que el servidor web Apache usará para leer archivos.
Group www-data
Security is very important for sites that use executable scripts such as CGI or PHP scripts.
La seguridad es muy importante para los sitios que utilizan scripts ejecutables como CGI o PHP.
El uso tendrá permisos para leer y escribir el contenido de todos los sitios en el servidor. Pero queremos
asegurarnos de que solo los miembros de un sitio en particular puedan leer su propio sitio.
Esto es muy importante porque si un sitio se ve comprometido, el atacante podrá leer todos los archivos, ya que el
usuario de apache tiene permiso para hacerlo.
La opción -c es necesaria la primera vez que ejecuta htpasswd, pero cuando agregues más usuarios no debes usar
-c porque sobrescribirás el archivo.
1 <Location /vip>
2
3 AuthName "test"
4
5 AuthType Basic
6
7 AuthUserFile /home/adam/.htpasswd
8
9 Order deny,allow
10
11 require valid-user
12
13 </Location>
Se requiere AuthName, puede usar cualquier cadena que desees.
AuthUserFile apunta al archivo que contiene la contraseña generada desde el comando htpasswd.
La línea de Order indica que Apache debe denegar el acceso de forma predeterminada y solo permite el acceso a
los usuarios especificados en el archivo htpasswd.
La directiva require significa que cualquier usuario en el archivo htpasswd está permitido.
Solución de problemas del servidor web Apache
Si modificas el archivo httpd.conf y reinicias o recarga el servidor web Apache y no funcionó, entonces escribiste una
configuración de forma incorrecta; sin embargo, este no es el único caso en el que necesita solucionar problemas de
Apache, puede revisar el log (archivos de registro) para ver el funcionamiento del servicio, poder diagnosticar el
problema y como resolverlo.
Los dos archivos principales de logs para apache son error_log y access_log.
Puedes encontrar estos archivos en el directorio /var/log/httpd/ en distribuciones basadas en Red Hat, o
en /var/log/apache2/ si estás utilizando distribuciones basadas en Debian.
El archivo access_log contiene todas las solicitudes al servidor web Apache con los detalles sobre el cliente que
solicitó ese recurso.
$ tail -f /var/log/httpd/error_log