Después de haber instalado Apache2, si desea utilizar apachectl y httpd a su máximo potencial, debe ir más allá utilizando iniciar, detener y reiniciar. Los 9 ejemplos prácticos proporcionados en este artículo lo ayudarán a usar apachectl y httpd de manera muy efectiva.
Apachectl actúa como un script de inicio de SysV, tomando argumentos como inicio, detención, reinicio y estado. También actúa como front-end para el comando httpd, simplemente pasando los argumentos de la línea de comando a httpd. Por lo tanto, todos los comandos que ejecuta con apachectl también se pueden ejecutar directamente llamando a httpd.
1. Pase un nombre de archivo httpd.conf diferente a apachectl
Por lo general, modificará el httpd.conf original para probar diferentes directivas de Apache. Si algo no funciona, revertirá los cambios. En lugar de jugar con el httpd.conf original, cópielo en un nuevo httpd.conf.debug y use este nuevo archivo httpd.conf.debug con Apache para fines de prueba, como se muestra a continuación, usando la opción -f.
# apachectl -f conf/httpd.conf.debug # httpd -k start -f conf/httpd.conf.debug [Note: you can use either apachectl or httpd as shown above] # ps -ef | grep http root 25080 1 0 23:26 00:00:00 /usr/sbin/httpd -f conf/httpd.conf.debug apache 25099 25080 0 23:28 00:00:00 /usr/sbin/httpd -f conf/httpd.conf.debug [Note: ps shows the httpd running with httpd.conf.debug file]
Una vez que esté satisfecho con los cambios y Apache se ejecute sin ningún problema con httpd.conf.debug, puede copiar los cambios en httpd.conf e iniciar Apache normalmente como se muestra a continuación.
# cp httpd.conf.debug httpd.conf # apachectl stop # apachectl start # ps -ef | grep httpd root 25114 1 0 23:28 00:00:00 /usr/sbin/httpd -k start daemon 25115 25114 0 23:28 00:00:00 /usr/sbin/httpd -k start [Note: ps indicates that the httpd is running using the default config file]
2. Use un DocumentRoot temporal sin modificar httpd.conf
Esto es muy útil cuando está probando un diseño diferente para su sitio web y no desea modificar los archivos originales en el DocumentRoot predeterminado. Tome una copia de su directorio DocumentRoot original (/var/www/html) a un nuevo directorio DocumentRoot temporal (/var/www/html_debug). Realice todos los cambios en este directorio DocumentRoot temporal (/var/www/html_debug) e inicie Apache con este directorio temporal como se muestra a continuación usando la opción -c.
# httpd -k start -c "DocumentRoot /var/www/html_debug/"
Si desea volver a la configuración original utilizando el DocumentRoot predeterminado (/var/www/html), simplemente reinicie Apache como se muestra a continuación.
# httpd -k stop # apachectl start
3. Aumente el LogLevel temporalmente
Mientras está depurando un problema, puede cambiar el LogLevel de Apache temporalmente, sin modificar la directiva LogLevel en httpd.conf como se muestra a continuación usando la opción -e. En este ejemplo, LogLevel está configurado para depurar.
# httpd -k start -e debug [Sun Aug 17 13:53:06 2008] [debug] mod_so.c(246): loaded module auth_basic_module [Sun Aug 17 13:53:06 2008] [debug] mod_so.c(246): loaded module auth_digest_module
Posibles valores que puede pasar a option -e son:depuración, información, aviso, advertencia, error, crítico, alerta, emergencia
4. Muestre los módulos compilados dentro de Apache usando la opción -l
# httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c
5. Muestra el módulo estático y dinámico cargado por Apache
Cuando pasa la opción -l, a httpd, solo mostrará los módulos estáticos. Al pasar la opción -M, se mostrarán los módulos estáticos y compartidos como se muestra a continuación.
# httpd -M Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) auth_basic_module (shared) auth_digest_module (shared) authn_file_module (shared) authn_alias_module (shared) Syntax OK
6. Mostrar todas las directivas aceptadas dentro de httpd.conf
Esto es como una ayuda extendida para httpd, que mostrará todas las directivas de httpd.conf y los lugares donde son válidas. Para una directiva específica, indica todos los valores posibles y dónde se puede usar dentro de httpd.conf. Esto puede ser muy útil cuando desea conocer rápidamente una directiva de Apache en particular.
# httpd -L HostnameLookups (core.c) "on" to enable, "off" to disable reverse DNS lookups, or "double" to enable double-reverse DNS lookups Allowed in *.conf anywhere ServerLimit (prefork.c) Maximum value of MaxClients for this run of Apache Allowed in *.conf only outside <Directory>, <Files> or <Location> KeepAlive (http_core.c) Whether persistent connections should be On or Off Allowed in *.conf only outside <Directory>, <Files> or <Location> LoadModule (mod_so.c) a module name and the name of a shared object file to load it from Allowed in *.conf only outside <Directory>, <Files> or <Location>
7. Valide el httpd.conf después de realizar cambios
Use la opción -t para validar si hay algún problema con un archivo de configuración de Apache específico. En el ejemplo que se muestra a continuación, muestra que hay un problema en la línea 148 en httpd.conf.debug. a mod_auth_basicso le falta un archivo . (punto) antes del so.
# httpd -t -f conf/httpd.conf.debug httpd: Syntax error on line 148 of /etc/httpd/conf/httpd.conf.debug: Cannot load /etc/httpd/modules/mod_auth_basicso into server: /etc/httpd/modules/mod_auth_basicso: cannot open shared object file: No such file or directory
Una vez que solucione el problema, se mostrará Sintaxis OK .
# httpd -t -f conf/httpd.conf.debug Syntax OK
8. Mostrar los parámetros de compilación de httpd
Utilice la opción -V (V mayúscula) para mostrar el número de versión de Apache y todos los parámetros que se utilizan al compilar Apache.
# httpd -V Server version: Apache/2.2.9 (Unix) Server built: Jul 14 2008 15:36:56 Server's Module Magic Number: 20051115:15 Server loaded: APR 1.2.12, APR-Util 1.2.12 Compiled using: APR 1.2.12, APR-Util 1.2.12 Architecture: 32-bit Server MPM: Prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APACHE_MPM_DIR="server/mpm/prefork" -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=128 -D HTTPD_ROOT="/etc/httpd" -D SUEXEC_BIN="/usr/sbin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_LOCKFILE="logs/accept.lock" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf"
Si desea mostrar solo el número de versión de Apache, use la opción -v (v en minúsculas) como se muestra a continuación.
# httpd -v Server version: Apache/2.2.9 (Unix) Server built: Jul 14 2008 15:36:56
9. Cargue un módulo específico solo bajo demanda.
A veces es posible que no desee cargar todos los módulos en Apache. Por ej. Es posible que desee cargar módulos relacionados con ldap en Apache, solo cuando esté probando LDAP. Esto se puede lograr como se muestra a continuación.
Modifique el httpd.conf y agregue IfDefine directiva llamada load-ldap (puede nombrar esto como quiera).
<IfDefine load-ldap> LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so </IfDefine>
Cuando esté probando ldap y desee cargar los módulos relacionados con ldap, pase load-ldap a la opción -D, como se muestra a continuación:
# httpd -k start -e debug -Dload-ldap -f /etc/httpd/conf/httpd.conf.debug [Sun Aug 17 14:14:58 2008] [debug] mod_so.c(246): loaded module ldap_module [Sun Aug 17 14:14:58 2008] [debug] mod_so.c(246): loaded module authnz_ldap_module [Note: Pass -Dload-ldap, to load the ldap modules into Apache] # apachectl start [Note: Start the Apache normally, if you don't want to load the ldap modules.]
Si le gustó este artículo, márquelo como favorito en del.icio.us, Digg and Stumble mediante el enlace proporcionado a continuación en la sección "¿Qué sigue?".