Pokud chcete po instalaci Apache2 používat maximální potenciál apachectl a httpd, měli byste jít za pomocí start, stop a restart. 9 praktických příkladů uvedených v tomto článku vám pomůže velmi efektivně používat apachectl a httpd.
Apachectl funguje jako iniciační skript SysV, který přebírá argumenty jako start, stop, restart a stav. Funguje také jako front-end příkazu httpd pouhým předáním argumentů příkazového řádku httpd. Takže všechny příkazy, které spouštíte pomocí apachectl, lze také spouštět přímo voláním httpd.
1. Předejte jiný soubor httpd.conf souboru apachectl
Obvykle upravíte původní httpd.conf, abyste vyzkoušeli různé direktivy Apache. Pokud něco nefunguje, vrátíte změny zpět. Místo hraní si s původním httpd.conf, zkopírujte jej do nového httpd.conf.debug a použijte tento nový httpd.conf.debug soubor s Apache pro testovací účely, jak je ukázáno níže pomocí volby -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]
Jakmile budete se změnami spokojeni a Apache běží bez problémů s httpd.conf.debug, můžete zkopírovat změny do httpd.conf a spustit Apache normálně, jak je ukázáno níže.
# 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. Použijte dočasný DocumentRoot bez úpravy souboru httpd.conf
To je velmi užitečné, když zkoušíte jiné rozvržení pro svůj web a nechcete upravovat původní soubory ve výchozím DocumentRoot. Vezměte kopii svého původního adresáře DocumentRoot (/var/www/html) do nového dočasného adresáře DocumentRoot (/var/www/html_debug). Proveďte všechny změny v tomto dočasném adresáři DocumentRoot (/var/www/html_debug) a spusťte Apache s tímto dočasným adresářem, jak je uvedeno níže pomocí volby -c.
# httpd -k start -c "DocumentRoot /var/www/html_debug/"
Pokud se chcete vrátit k původní konfiguraci pomocí výchozího DocumentRoot (/var/www/html), jednoduše restartujte Apache, jak je uvedeno níže.
# httpd -k stop # apachectl start
3. Dočasně zvyšte LogLevel
Během ladění problému můžete dočasně změnit LogLevel Apache, aniž byste museli upravovat direktivu LogLevel v httpd.conf, jak je ukázáno níže pomocí volby -e. V tomto příkladu je LogLevel nastavena na ladění.
# 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
Možné hodnoty můžete předat volbě -e jsou:ladění, informace, upozornění, varování, chyba, krit, upozornění, emerg
4. Zobrazte moduly zkompilované v Apache pomocí volby -l
# httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c
5. Zobrazte statický i dynamický modul načtený Apache
Když předáte volbu -l, do httpd, zobrazí se pouze statické moduly. Předáním volby -M se zobrazí statické i sdílené moduly, jak je uvedeno níže.
# 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. Zobrazit všechny přijaté direktivy uvnitř httpd.conf
Je to jako rozšířená nápověda pro httpd, která zobrazí všechny direktivy httpd.conf a místa, kde jsou platné. Pro konkrétní direktivu sděluje všechny možné hodnoty a kde ji lze použít v souboru httpd.conf. To může být velmi užitečné, když se chcete rychle dozvědět o konkrétní direktivě Apache.
# 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. Po provedení změn ověřte soubor httpd.conf
Použijte volbu -t k ověření, zda existují nějaké problémy s konkrétním konfiguračním souborem Apache. V níže uvedeném příkladu to ukazuje, že na řádku 148 v httpd.conf.debug je problém. mod_auth_basicso chybí . (tečka) před tak.
# 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
Jakmile problém opravíte, zobrazí se Syntaxe OK .
# httpd -t -f conf/httpd.conf.debug Syntax OK
8. Zobrazit parametry sestavení httpd
Použijte volbu -V (velké V) k zobrazení čísla verze Apache a všech parametrů, které se používají při sestavování 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"
Pokud chcete zobrazit pouze číslo verze Apache, použijte volbu -v (malá písmena v), jak je uvedeno níže.
# httpd -v Server version: Apache/2.2.9 (Unix) Server built: Jul 14 2008 15:36:56
9. Načtěte konkrétní modul pouze na vyžádání.
Někdy možná nebudete chtít načíst všechny moduly v Apache. Pro např. Možná budete chtít načíst moduly související s ldap do Apache, pouze když testujete LDAP. Toho lze dosáhnout níže uvedeným způsobem.
Upravte soubor httpd.conf a přidejte IfDefine direktiva nazvaná load-ldap (můžete si ji pojmenovat, jak chcete).
<IfDefine load-ldap> LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so </IfDefine>
Když testujete ldap a chcete načíst moduly související s ldap, předejte load-ldap volbě -D, jak je uvedeno níže:
# 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.]
Pokud se vám tento článek líbil, přidejte si jej do záložek na del.icio.us, Digg and Stumble pomocí odkazu uvedeného níže v části „Co dál?“.