Apache es el Servidor Web más popular, y si pretende trabajar como administrador de Middleware/Sistemas/Web, entonces debe estar familiarizado con él. Apache HTTP es un Servidor Web de código abierto para Windows y UNIX.
Hace unos días, escribí sobre las preguntas de la entrevista de WebSphere, y muchos de ustedes me pidieron que escribiera sobre el Servidor Web Apache, así que aquí tienen.
Las siguientes preguntas suelen plantearse en una entrevista desde el nivel principiante hasta el experto. La mayoría de las organizaciones tendrán un Servidor Web gestionado por el administrador de Middleware/Sistema junto con el Servidor de Aplicaciones y otros componentes.
Empecemos con las preguntas y respuestas de la entrevista en tiemporeal..
1. ¿Cómo parar/arrancar el Servidor Web Apache?
Puede reiniciar yendo a la ubicación de la instancia de Apache >> carpeta bin y ejecutar el script apachectl.
./apachectl stop
./apachectl start
También puede utilizar un script ubicado en /etc/init.d/. La mayoría de las veces se llamará "apache" o "httpd".
/etc/init.d/apache stop
/etc/init.d/apache start
Otro procedimiento sería utilizar los servicios
httpd stop
service httpd start
2. ¿Cuál es el puerto por defecto para HTTP y HTTPS?
El puerto por defecto para HTTP es 80 y para HTTPS 443. Compruebe los puertos por defecto para otras aplicaciones listados aquí.
3. ¿Puede decirme el nombre del archivo de configuración importante?
httpd.conf es el principal archivo de configuración utilizado en Apache.
4. ¿Cómo puedo comprobar la versión del servidor web Apache que se está ejecutando?
Hay varias formas de averiguarlo, pero la más precisa sería
- Iniciar sesión en un servidor web
- Vaya a la instancia de apache y a la carpeta bin
- Ejecute httpd con -v para obtener los detalles de la versión.
[root@lab sbin]# ./httpd -v
Versión del servidor: Apache/2.2.15 (Unix)
Servidor construido: Jul 18 2016 15:24:00
[root@lab sbin]#
Alternativamente, también puede utilizar el comando rpm para comprobar la versión instalada.
[root@lab ~]# rpm -qa |grep httpd
httpd-2.2.15-54.el6.centos.x86_64
httpd-tools-2.2.15-54.el6.centos.x86_64
[root@lab ~]#
5. ¿Cómo saber si un servidor web está funcionando?
Hay varias formas de averiguarlo.
- Acceda a un servidor web y busque en grep el proceso "httpd
ps -ef |grep httpd
- Compruebe si hay alguna alerta en su panel de monitorización.
- Compruebe si su IP:puerto apache es accesible en el navegador
Ej: http://yourapacheserver.com
- Compruebe si la IP y el puerto configurados están escuchando en el servidor con netstat
netstat -anlp |grep 80
6. ¿Cómo instalar Apache HTTP?
Hay tres formas posibles de instalarlo.
Utilizando el código fuente - puede descargar el código fuente y compilarlo.
- Descargue la última versión de http://httpd.apache.org/download.cgi
- Extraiga el código fuente con la utilidad
tar
ogzip
dependiendo del tipo de archivo:.tar
o.tar.gz
tar xvf httpd-1.2.3.tar
gzip -d httpd-1.2.4.tar.gz
- Navegue hasta donde extraiga el código fuente mediante el comando
cd
y configúrelo utilizando el comando ./configure
en la terminal - Luego compílelo utilizando el comando
make
. - Por último, utilice el comando make
install
para instalarlo.
Si desea conocer más opciones sobre cómo configurarlo, puede hacer uso del comando configure --help
.
Repositorio YUM - si su servidor está conectado a Internet o tiene un repositorio interno, puede utilizar yum para instalarlo.
yum install httpd
RPM - Puede descargar el paquete RPM necesario y utilizar el comando rpm.
rpm -ivh nombrepaquete.rpm
7. ¿Cómo asegurarse de que Apache escucha sólo una dirección IP en el servidor?
Esto es a menudo necesario cuando se tienen múltiples IPs en el servidor. Para asegurarse de que Apache escucha sólo en la IP especificada entonces necesita mencionar explícitamente la IP y el puerto en la directiva Listen.
Ej:
Escuchar 10.10.10.10:80
8. ¿Cómo asegurarse de que Apache se ejecuta con un usuario que no es root/nadie?
Esto se puede hacer añadiendo la directiva User & Group en el fichero httpd.conf
Usuario apache
Grupo apache
El ejemplo de configuración anterior asegurará que se inicie con el usuario "apache". Debe asegurarse de que existen usuarios en el servidor antes de configurarlo.
9. ¿Cómo desactivo la indexación de directorios?
Puede utilizar "Opciones -Indexes" en la directiva de directorio correspondiente.
Ej:
<Directorio />
Opciones -Índices
</Directorio>
10. ¿Qué módulo es necesario para que la redirección sea posible?
mod_rewrite es responsable de la redirección, y este debe ser descomentado en el archivo httpd.conf.
LoadModule rewrite_module modules/mod_rewrite.so
11. ¿Se puede cambiar el puerto de escucha por defecto por otro?
Sí, es posible especificando el número de puerto en la directiva Escuche.
Ej: para hacer que Apache escuche en el puerto 9000 a la dirección IP 10.10.10.10
Escuchar 10.10.10.10:9000
12. ¿Cómo asegurar un sitio web alojado en un servidor web Apache?
Existen múltiples formas de asegurar el servidor web Apache, entre las que se incluyen las siguientes.
- Implementando SSL
- Integrando con WAF (Web Application Firewall) como ModSecurity, etc.
- Utilizando un proveedor de seguridad basado en la nube
13. ¿Cuáles son los archivos de registro generados por Apache?
Hay dos archivos de registro populares creados;
- access.log - todos los detalles de la solicitud con el código de estado
- error.log - captura todos los errores dentro de apache o de conexión al backend
14. ¿Cómo crear una RSE?
Puede utilizar el siguiente comando OpenSSL o generar una RSE en línea.
Para crear una nueva RSE con una clave privada
openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key
Consulte la Hoja de trucos de OpenSSL para obtener más comandos.
15. ¿Qué es el alojamiento virtual?
El Hosting Virtual en Apache le permite alojar múltiples sitios web en una única instancia. Puede crear alojamiento virtual basado en IP o basado en nombres.
16. ¿Qué módulo se necesita para conectarse a WebSphere?
debe añadirsemod_was_ap22_http.so
en el archivo httpd.
conf para integrarse con IBM WAS.
17. ¿Cómo poner el nivel de Log en modo Debug?
A menudo es necesario cuando está solucionando el problema y desea capturar más detalles. Puede cambiar el nivel de registro a depuración asegurándose de lo siguiente en el archivo httpd.conf.
LogLevel debug
18. ¿Qué módulo es necesario para habilitar SSL?
El módulo mod_ssl debe ser descomentado antes de la implementación de SSL.
LoadModule auth_basic_module modules/mod_ssl.so
19. ¿Cuál es el nombre del módulo WebLogic?
mod_wl_22.so
20. ¿Cuál es el nivel de registro disponible en Apache?
La configuración por defecto es "avise a", sin embargo, también es posible lo siguiente
- depurar
- información
- avise a
- aviso
- crit
- alarma
- emerg
- error
21. ¿Qué es DocumentRoot?
La directiva DocumentRoot es la configuración donde puede especificar la ubicación de la carpeta desde donde se servirán los archivos estáticos. También se denomina WebRoot.
La ubicación predeterminada de DocumentRoot es /var/www/html
22. ¿Cómo desplegar aplicaciones war o JAVA en Apache?
Me temo que Apache es un servidor web, y el despliegue de aplicaciones basadas en Java no es posible con él. Sin embargo, puede integrar servidores de aplicaciones Java como WebLogic, WebSphere, JBoss donde puede desplegar archivos war, ear.
23. ¿Cuál es la diferencia entre Apache Web Server y Apache Tomcat?
Apache Web es un servidor HTTP para servir contenidos estáticos donde Tomcat es un contenedor de servlets para desplegar archivos JSP.
Siempre puede integrar Apache HTTP con Tomcat, sin embargo, en función de los requisitos deberá elegir uno u otro. Si necesita un servidor web adecuado, entonces Apache HTTP si no Tomcat para el contenedor JSP-Servlet.
24. ¿Cómo puede Apache actuar como servidor proxy?
Puede utilizar un módulo mod_proxy para utilizarlo como servidor proxy. El módulo mod_proxy se puede utilizar para conectarse al servidor backend como TomcatWebLogic, WebSphere, etc.
25. ¿Cómo configurar el registro de Apache para que capture el tiempo que tarda en servir una petición?
Puede añadir "%D" en el archivo httpd.conf bajo la directiva LogFormat para capturar el tiempo de respuesta que se tarda en servir la petición. Mostrará el tiempo en microsegundos.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i" %D" combinado
Reinicie el servidor web Apache y podrá ver los resultados.
182.19.197.23 - - [02/Oct/2016:10:32:25 0000] "GET / HTTP/1.1" 403 4961 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/53.0.2785.116 Safari/537.36" 1515
182.19.197.23 - - [02/Oct/2016:10:32:25 0000] "GET /icons/apache_pb.gif HTTP/1.1" 304 - "http://lab.geekflare.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/53.0.2785.116 Safari/537.36" 424
182.19.197.23 - - [02/Oct/2016:10:32:25 0000] "GET /icons/poweredby.png HTTP/1.1" 304 - "http://lab.geekflare.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/53.0.2785.116 Safari/537.36" 472
26. ¿Qué herramienta utiliza para el análisis de registros?
Tiene que decir la verdad, pero para darle una idea puede utilizar GoAccess o algunas de las que se mencionan aquí.
27. ¿Cuáles son los servidores web en los que ha trabajado junto con Apache?
De nuevo, es mejor que diga la verdad pero para que se haga una idea, hay muchos servidores web en el mercado entre los que se incluyen los siguientes.
- Nginx
- Microsoft IIS
- LiteSpeed
- GWS
28. ¿Cómo verificar el archivo httpd.conf para asegurarse de que no hay errores de sintaxis en la configuración?
httpd -t le ayudará a comprobar la sintaxis.
[root@lab httpd]# /usr/sbin/httpd -t
Sintaxis OK
[root@lab httpd]#
Como alternativa, también puede utilizar el comando apachectl.
[root@lab ~]# /usr/sbin/apachectl configtest
Sintaxis OK
[root@lab ~]#
29. ¿Cómo realizar un benchmark de rendimiento de Apache?
Puede utilizar una herramienta como ApacheBench, SIEGE para realizar la prueba de carga en servidores web incluyendo Apache. Otra opción es realizar una prueba de estrés en línea para ver el rendimiento general de la aplicación web bajo carga.
30. ¿Cómo obtener soporte para el servidor web Apache si algo va mal?
Apache es un servidor web de código abierto, por lo que no existe soporte a nivel empresarial. Sin embargo, puede plantear un informe de error o hacer una pregunta en Stack Overflow.
31. ¿Cómo asegurarse de que el servidor web se inicia después de reiniciar el servidor?
Si está ejecutando Linux, entonces puede poner un script en /etc/init.d/ y habilitar que se inicie al arrancar utilizando el comando chkconfig
Digamos que crea un archivo llamado apache y lo pone bajo /etc/init.d
chkconfig --add apache
chkconfig apache on
si está en Windows, asegúrese de que el tipo de inicio está seleccionado "Automático".
32. ¿cuál es la diferencia entre el servidor web Apache y Nginx?
Ambos están categorizados como Servidor Web y estas son algunas de las principales diferencias.
- Nginx es un servidor web basado en eventos mientras que Apache está basado en procesos
- Nginx es conocido por un mejor rendimiento que Apache
- Apache soporta una amplia gama de SO donde Nginx no soporta OpenVMS e IBMi
- Apache dispone de un gran número de módulos de integración con el servidor de aplicaciones backend donde Nginx aún se está poniendo al día
- Nginx es ligero y está capturando la cuota de mercado rápidamente. Si es nuevo en Nginx, entonces puede que le interese echar un vistazo a mis artículos sobre Nginx.
33. ¿Cómo matar el Apache si graceful-stop no funciona?
Si se ejecuta en Linux, entonces puede utilizar el comando kill.
Averigüe el PID de Apache usando ps -ef |grep http
Luego mátelo
kill $PIDNUMBER
si kill normal no funciona entonces pruebe kill -9
kill -9 $PIDNUMBER
Si está en Windows, entonces finalice la tarea Apache desde el Administrador de Tareas.
34. ¿Cómo encontrar el archivo httpd.conf si no conoce la ubicación de instalación?
En Linux, puede utilizar el comando find.
Supongamos, que sabe que debe estar en el sistema de archivos /apps entonces puede utilizar el siguiente comando.
find /apps -name httpd.conf
Pero si no está seguro sobre qué sistema de archivos entonces puede hacer find en el sistema de archivos / pero tenga en cuenta que puede tomar mucho tiempo basado en el tamaño total del sistema de archivos.
find / -name httpd.conf
35. ¿Cuáles son los diferentes sabores de servidor web que conoce Apache?
- Servidor HTTP de IBM - conocido como IHS y a menudo se utiliza con IBM WebSphere Application Server
- Servidor HTTP de Oracle - conocido como OHS y utilizado a menudo con el servidor Weblogic de Oracle
36. ¿Dónde se encuentra el Apache en la ubicación del centro de datos?
Puede explicarlo basándose en su experiencia, sin embargo, normalmente para las aplicaciones orientadas a Internet, estaría en la red DMZ de Internet y para la intranet, en la red central.
Pero de nuevo esto diferirá en función de la aplicación/organización.
37. ¿Cómo ocultar los detalles de la versión del servidor en la cabecera de respuesta HTTP?
Añada lo siguiente en el archivo httpd.conf y reinicie el servidor web
ServerTokens Prod
ServerSignature Off
Esto ocultará la versión y mostrará el servidor sólo como "Apache“.
38. ¿Qué significan los códigos de error HTTP 200, 403 y 503?
- 200 - contenido encontrado y servido OK
- 403 - se ha intentado acceder a un archivo/carpeta restringido
- 503 - el servidor está demasiado ocupado para servir la petición y en otras palabras - servicio no disponible.
- Consulte la infografía sobre los códigos de respuesta HTTP para obtener más información.
39. ¿Cómo desactivar el rastreo de peticiones HTTP?
Añada lo siguiente en el archivo httpd.conf y reinicie la instancia
TraceEnable off
40. ¿Cómo solucionar el problema de conflicto de puertos?
netstat sería útil para solucionar el problema de conflicto de puertos. Si se ejecutan varias instancias en un único servidor, sería recomendable tener configurados IP:Puerto absolutos para la directiva Listen.
41. ¿Cómo instalar el módulo de terceros?
Puede hacer uso de Caja de herramientas Apache. Una vez descargado, extráigalo utilizando la utilidad tar
.
tar -xf Apachetoolbox-1.5.72.tar.gz
Navegue hasta la carpeta Apachetoolbox-1.5.
72 utilizando el comando cd
y ejecute el siguiente comando para seleccionar los módulos para su servidor Apache.
./install.sh
Proporciona módulos como mod_ip_forwarding
, mod_auth_mysql
y mod_auth_samba
para compilar con el servidor web Apache. Aunque puede incluir estos módulos manualmente, es más fácil con Apache Toolbox.
42. ¿Cómo asignar varios nombres a anfitriones virtuales?
Puede hacer uso de la directiva ServerAlias
como se muestra a continuación.
ServerName ejemplo.com
ServerAlias impresionante.com fantastico.com
43. ¿Cómo limitar el tamaño de la carga?
Tengo una aplicación web que permite a los usuarios subir archivos como documentos word, pdf, etc. ¿Cómo puedo limitar la subida de archivos por parte de los usuarios?
Puede hacer uso de la directiva LimitRequestBody
para limitar el tamaño de los archivos subidos.
<Directorio "usr/local/apache2/uploads">
LimitRequestBody 9000
</Directorio>
El valor asignado a LimitRequestBody
permite a Apache aceptar y almacenar subidas de archivos de 9000 bytes por parte de los usuarios. Puede ajustar el valor en función de sus necesidades.
44. ¿Cómo restringir el acceso por IPs?
Puede que quiera que parte del contexto raíz sea accesible por IPs permitidas. Para ello, puede hacer uso de los módulos mod_authz_core o mod_authz_host para restringir el acceso utilizando la directiva Require
.
Require 10.0.0.2 10.0.0.4 192.168.34.23 192.168.34.23
Haciendo lo anterior, Apache sólo servirá peticiones si éstas se realizan desde las IPs listadas.
Debe especificar la directiva Require
dentro del directorio en el que desea permitir o denegar el acceso a los recursos.
Conclusión
Espero que las preguntas y respuestas anteriores le ayuden a prepararse para una entrevista de administrador de servidores web.