¿Alguien tiene una introducción detallada a la configuración del servidor Apache?
El archivo de configuración del servidor Apache se encuentra en el directorio /usr/local/apache/conf/ Tradicionalmente, existe mucha controversia sobre el uso de tres archivos de configuración. Apache no tiene dudas. Debido a su excelente rendimiento, Apache también soporta muchos sitios web famosos de alta carga. Sin embargo, en la evaluación de organizaciones comerciales, Apache a menudo no obtiene una puntuación alta. Muchas personas señalaron que en estas revisiones, los ingenieros de sus empresas profesionales suelen ajustar el rendimiento de los servidores web comerciales y sus sistemas operativos, mientras que los sistemas operativos y servidores web de Free suelen utilizar sus configuraciones predeterminadas o realizar sólo cambios menores. Cabe señalar que, además de ajustar el rendimiento del sistema operativo, la configuración predeterminada del propio servidor Apache no es ni mucho menos la más optimizada y eficiente, sino que debe adaptarse a la configuración de casi todos los tipos de sistemas operativos, todos tipos de hardware y configuraciones multiplataforma. Es imposible que el software proporcione configuraciones predeterminadas óptimas para plataformas y hardware específicos. Por lo tanto, el ajuste del rendimiento es esencial cuando se utiliza Apache.
Otro hecho que se pasa por alto en las evaluaciones comerciales es que las evaluaciones a menudo comparan diferentes tipos de funciones, como el rendimiento de CGI estándar usando Apache con API del lado del servidor como ISAPI y NSAPI. el servidor Apache son modperl, FastCGI y funciones similares a ASP son PHP, etc. Sin embargo, debido al modelo abierto de Apache, estas funciones son implementadas por grupos de desarrollo independientes como módulos independientes. Sin embargo, durante la evaluación, los evaluadores no agregaron los módulos correspondientes para evaluar su desempeño.
Los parámetros de ejecución del método del demonio HTTP
utilizan el superservidor inetd para monitorear las solicitudes de conexión e iniciar el servidor. Cuando necesite utilizar el modo de inicio de inetd, deberá cambiar a esta configuración, bloquear el archivo /etc/rc.d/rc.local/init.d/apache, cambiar /etc/inetd.conf y reiniciar inetd, luego Apache se puede iniciar desde inetd.
La diferencia entre los dos métodos es que en el método independiente, el servidor mismo administra su propio proceso de inicio, de modo que se pueden iniciar múltiples copias del servidor inmediatamente al inicio, y cada copia reside en la memoria. La solicitud de conexión se puede procesar inmediatamente sin generar un proceso secundario, y la respuesta a la solicitud del navegador del cliente es más rápida y el rendimiento es mayor. El método inetd requiere que inetd inicie d solo después de detectar una solicitud de conexión. Necesita monitorear demasiados puertos, por lo que la respuesta es más lenta y la eficiencia es menor, pero ahorra los recursos ocupados por el servidor web cuando no hay conexión. solicitudes. Por lo tanto, el método inetd solo se utiliza en servidores a los que se accede ocasionalmente y no requieren velocidad de acceso. De hecho, el método inetd no es adecuado para las limitaciones de rendimiento de d e incluso puede afectar a otros programas de servidor iniciados por inetd.
ServerRoot "/usr/local"
ServerRoot se utiliza para especificar el directorio de ejecución del demonio httpd. Después de iniciar httpd, cambiará automáticamente el directorio actual del proceso a. este directorio, por lo que si el archivo o directorio especificado en el archivo de configuración es una ruta relativa, entonces la ruta real se encuentra debajo de la ruta definida por este ServerRoot.
Dado que httpd a menudo realiza operaciones de archivos simultáneas, es necesario utilizar el bloqueo para garantizar que las operaciones de archivos no entren en conflicto. Dado que el sistema de archivos NFS tiene capacidades limitadas en el bloqueo de archivos, este directorio debe ser un disco local. sistema de archivos en lugar del sistema de archivos NFS.
#LockFile /var/run/httpd.lock
El parámetro LockFile especifica el archivo bloqueado del demonio httpd. Generalmente, no es necesario configurar este parámetro. automáticamente estará en ServerRoot operando en la ruta. Pero si ServerRoot es un sistema de archivos NFS, debe utilizar este parámetro para especificar la ruta en el sistema de archivos local.
PidFile /var/run/httpd.pid
El archivo especificado por PidFile registrará el número de proceso del demonio httpd. Dado que httpd puede copiarse a sí mismo automáticamente, existen múltiples procesos httpd. , pero solo un proceso es el proceso iniciado inicialmente, que es el proceso principal de otros procesos. Enviar señales a este proceso afectará a todos los procesos httpd. El número de proceso del proceso principal httpd se registra en el archivo definido por PidFILE.
ScoreBoardFile /var/run/httpd.scoreboard
httpd utiliza ScoreBoardFile para mantener los datos internos del proceso, por lo que generalmente no es necesario cambiar este parámetro a menos que el administrador así lo desee. varios servidores Apache, cada servidor Apache requiere un archivo de configuración independiente htt pd.conf y utiliza un ScoreBoardFile diferente.
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
Estos dos parámetros ResourceConfig y AccessConfig se utilizan para srm. y los archivos de configuración access.conf son compatibles con versiones anteriores de Apache. Si no hay necesidad de compatibilidad, puede especificar el archivo de configuración correspondiente como /dev/null, lo que indicará que no hay otros archivos de configuración y que solo se usa un archivo, httpd.conf, para guardar todas las opciones de configuración.
Tiempo de espera 300
El tiempo de espera define el intervalo de tiempo de espera para la conexión entre el programa cliente y el servidor. Después de exceder este intervalo de tiempo (segundos), el servidor se desconectará del cliente.
KeepAlive On
En HTTP 1.0, una conexión solo puede transmitir una solicitud HTTP y el parámetro KeepAlive se utiliza para admitir la función de transmisión múltiple de una conexión de HTTP 1.1. versión, por lo que puede pasar múltiples solicitudes HTTP en una conexión. Aunque esta función solo es compatible con los navegadores más nuevos, habilite esta opción.
MaxKeepAliveRequests 100
MaxKeepAliveRequests es el número máximo de solicitudes HTTP que se pueden realizar en una conexión. Establecer su valor en 0 admitirá una cantidad ilimitada de solicitudes de transferencia dentro de una sola conexión. De hecho, ningún programa cliente solicita demasiadas páginas en una conexión y, por lo general, la conexión se completa antes de alcanzar este límite superior.
KeepAliveTimeout 15
KeepAliveTimeout prueba el tiempo entre múltiples transmisiones de solicitudes en una conexión si el servidor ha completado una solicitud pero no ha recibido la siguiente solicitud del programa cliente, después del intervalo. excede el valor establecido por este parámetro, el servidor se desconecta.
MinSpareServers 5MaxSpareServers 10
En un servidor web que utiliza un proceso hijo para manejar solicitudes HTTP, dado que primero se debe generar el proceso hijo para manejar la solicitud del cliente, el tiempo de respuesta es ligeramente demorado. Sin embargo, el servidor Apache utiliza una tecnología especial para solucionar este problema, que consiste en pregenerar múltiples subprocesos inactivos para que residan en el sistema. Una vez que aparece una solicitud, estos subprocesos inactivos se utilizan inmediatamente para el procesamiento, por lo que. que no haya ningún retraso causado por la generación de procesos secundarios. A medida que aumenta la cantidad de solicitudes de clientes durante la operación, aumentará la cantidad de procesos secundarios iniciados. Sin embargo, estas copias del servidor no salen inmediatamente después de procesar una solicitud HTTP, sino que permanecen en la computadora esperando la siguiente solicitud. Sin embargo, el número de copias de subprocesos de repuesto no se puede aumentar sin disminuir. Demasiados subprocesos de repuesto no tienen tareas de procesamiento y ocupan la potencia de procesamiento del servidor. Por lo tanto, el número de copias de repuesto también debe limitarse para mantener un nivel adecuado. número para que pueda procesarse de manera oportuna. Responder a las solicitudes de los clientes también puede reducir la cantidad de procesos innecesarios.
Por lo tanto, puede usar el parámetro MinSpareServers para establecer el número mínimo de procesos secundarios inactivos y usar el parámetro MaxSpareServers para limitar el número máximo de procesos secundarios inactivos, y las copias redundantes del proceso del servidor saldrán. Configure de acuerdo con la situación real del servidor. Si el servidor tiene un alto rendimiento y se accede con frecuencia, se debe aumentar la configuración de estos dos parámetros. Para sitios web profesionales con alta carga, estos dos valores deben ser aproximadamente iguales y equivalentes a la cantidad máxima de réplicas de servidor admitidas por el sistema, y también reducir las salidas de réplicas innecesarias.
StartServers 5
El parámetro StartServers se utiliza para establecer el número de copias de procesos secundarios iniciadas cuando se inicia httpd. Este parámetro está relacionado con los parámetros MinSpareServers y MaxSpareServers definidos anteriormente, los cuales. se utilizan para iniciar un subproceso inactivo para mejorar la velocidad de respuesta del servidor. Este parámetro debe establecerse en un valor entre los dos primeros valores. No tiene sentido ser más pequeño que MinSpareServers y más grande que MaxS pareServers.
MaxClients 150
Por otro lado, las capacidades del servidor son limitadas después de todo y es imposible manejar un número infinito de solicitudes de conexión al mismo tiempo. Maxclients se utiliza para especificar el soporte del servidor. El número máximo de clientes a los que se accede simultáneamente. Si este valor se establece en un valor demasiado grande, el sistema tendrá que cambiar entre demasiados procesos para atender a demasiados clientes cuando esté ocupado, por lo que la respuesta a cada uno. el cliente se ralentizará y reducirá la eficiencia general. Si este valor se establece en un valor pequeño, algunas solicitudes de conexión de clientes serán rechazadas cuando el sistema esté ocupado. Cuando el rendimiento del servidor es alto, puede aumentar la configuración de este valor de forma adecuada. Para los sitios web profesionales, se deben utilizar estrategias para mejorar la eficiencia del servidor, por lo que este parámetro no puede exceder las limitaciones del propio hardware. Si la denegación de acceso ocurre con frecuencia, significa que es necesario actualizar el hardware del servidor. Para los sitios web no profesionales a los que no les importa mucho la velocidad de respuesta del navegador del cliente, o que piensan que una velocidad de respuesta más lenta es mejor que rechazar la conexión, pueden configurar este parámetro un poco más allá de las condiciones del hardware.
Este parámetro limita la configuración de MinSpareServers y MaxSpareServers. No deben ser mayores que la configuración de este parámetro.
MaxRequestsPerChild 30
Servicios web que utilizan subprocesos para proporcionar servicios. El método común es que un subproceso sirva una conexión. El problema que esto genera es que cada conexión necesita. Para ser generado, la operación del sistema de salir del proceso hijo hace que estos procesos de procesamiento adicionales ocupen una gran cantidad de potencia de procesamiento de la computadora. Por lo tanto, la mejor manera es que un proceso hijo pueda atender múltiples solicitudes de conexión, de modo que no sea necesario que el sistema consuma procesos de generación y salida. Apache adopta este método después de que se completa una conexión, el proceso hijo no sale. pero permanece en el sistema esperando la siguiente solicitud de servicio, lo que mejora enormemente el rendimiento.
Sin embargo, dado que el proceso hijo tiene que solicitar y liberar memoria continuamente durante el procesamiento, demasiadas veces provocará algo de basura en la memoria, lo que afectará la estabilidad del sistema y el uso efectivo de los recursos del sistema. Por lo tanto, después de que una copia haya procesado una cierta cantidad de solicitudes, se puede salir de la copia del subproceso y se puede copiar una copia limpia del proceso httpd original, lo que puede mejorar la estabilidad del sistema. De esta manera, MaxRe questPerChild define el número de solicitudes de servicio procesadas por cada proceso secundario. El valor de configuración predeterminado es 30, que es demasiado conservador para un sistema Linux con alta estabilidad. Puede establecerse en 1000 o incluso más. Establecerlo en 0 admite el procesamiento de servicios ilimitado para cada copia.
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
El parámetro Listen puede especificar el servidor además según el estándar de supervisión Además del puerto 80, también se supervisan las solicitudes HTTP en otros puertos.
Dado que el sistema FreeBSD puede tener varias direcciones IP al mismo tiempo, también puede especificar que el servidor solo escuche las solicitudes HTTP para una determinada dirección IP BindAddress< /B>. Si esto no está configurado, el servidor responderá a las solicitudes de todas las IP.
Incluso si el parámetro BindAddress se usa para que el servidor solo responda a las solicitudes de una dirección IP, aún se puede permitir que el demonio HTTP responda a las solicitudes de otras direcciones IP utilizando el parámetro Listen extendido. El uso del parámetro Listen en este momento es el mismo que en el segundo ejemplo anterior. Este uso más complejo se utiliza principalmente para configurar hosts virtuales. Luego, puede usar el parámetro VirtualHost para definir hosts virtuales con diferentes IP. Sin embargo, este uso es el método para configurar hosts virtuales en el estándar HTTP 1.0 anterior. Cada host virtual requiere una dirección IP, lo que en realidad no es muy útil. En HTTP 1.1, se agrega soporte para hosts virtuales con una única dirección IP y múltiples nombres de dominio, lo que hace que la configuración de hosts virtuales sea más significativa.
LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
LoadModule info_module libexec/apache/mod_info.so
LoadModule speling_module libexec/apache/mod_speling.so
p>p>
LoadModule proxy_module libexec/apache/libproxy.so
LoadModule rewrite_module libexec/apache/mod_rewrite.so
LoadModule anon_auth_module libexec/apache/mod_auth_anon. entonces
LoadModule db_auth_module libexec/apache/mod_auth_db.so
LoadModule digest_module libexec/apache/mod_digest.so
LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
LoadModule expires_module libexec/apache/mod_expires.so
LoadModule headers_module libexec/apache/mod_headers.so
LoadModule usertrack_module libexec/apache/mod_usertrack.so
LoadModule Unique_id_module libexec/apache/mod_unique_id.so
ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c p>
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
p>
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
AddModule mod_userdir .c
AddModule mod_proxy.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AgregarModule mod_auth.c
AgregarModule m
od_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_cern_meta.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_setenvif .c
Una característica importante del servidor Apache es su estructura modular, que no solo significa que puede agregar nuevas funciones a través de nuevos módulos en el momento de la compilación, sino que también significa que sus módulos se pueden cargar dinámicamente http. programa de servicio sin cargar módulos innecesarios. Para utilizar el módulo cargado dinámicamente de Apache, solo necesita configurar los parámetros Load Module y AddModule. Esta característica es la característica DSO (objeto dinámico compartido) de Apache. Sin embargo, todavía no es una cuestión sencilla hacer un uso completo de la característica DSO. es inapropiado. Cambiar la configuración aquí puede causar que el servidor no se inicie normalmente. Por lo tanto, si no desea aumentar o disminuir las funciones proporcionadas por el servidor, no cambie la configuración aquí.
Las listas anteriores muestran los módulos admitidos por el servidor Apache predeterminado en Linux. De hecho, muchos módulos son innecesarios y los módulos innecesarios no se cargarán en la memoria. Los módulos se pueden conectar estáticamente al interior del servidor pache o cargarse dinámicamente. El enfoque del puerto es compilar todas las funciones de Apache en módulos cargables dinámicamente, en lugar del enfoque predeterminado de Apache, que sacrifica muy poco rendimiento, lo que brinda una gran flexibilidad.
Por lo tanto, la capacidad de cargarse dinámicamente todavía tiene un ligero impacto en el rendimiento, por lo que puede recompilar Apache y compilar las funciones que necesita en el servidor Apache, lo que puede hacer que el sistema sea más limpio y ligeramente menos eficiente. mejora. Generalmente no es necesario recompilar Apache solo para este propósito. Si necesita recompilar Apache para agregar otras funciones, también puede agregar otros módulos y conectar estáticamente todos los módulos al servidor Apache. Algunos usuarios prefieren módulos cargados dinámicamente, por lo que también podrían utilizar módulos cargados dinámicamente para todos.
Estos módulos se colocan en el directorio /usr/local/apache/libexec/ y cada módulo corresponde a una característica del servidor Apache. Una explicación detallada de las funciones de cada módulo requiere una cantidad considerable de espacio. Las características más importantes se explicarán en los lugares correspondientes más adelante. Para conocer las funciones específicas y el uso de cada módulo, debe consultar la documentación de Apache.
#ExtendedStatus activado
El servidor Apache puede informar su propio estado de ejecución a través de solicitudes HTTP especiales. Activar este parámetro ExtendedStatus permite que el servidor informe información más completa sobre el estado de ejecución.