Wenn Sie nach der Installation von Apache2 apachectl und httpd maximal nutzen möchten, sollten Sie darüber hinausgehen mit Start, Stopp und Neustart. Die 9 praktischen Beispiele in diesem Artikel werden Ihnen helfen, apachectl und httpd sehr effektiv zu verwenden.
Apachectl fungiert als SysV-Init-Skript und übernimmt Argumente wie Start, Stopp, Neustart und Status. Es fungiert auch als Front-End für den httpd-Befehl, indem es einfach die Befehlszeilenargumente an httpd übergibt. Alle Befehle, die Sie mit apachectl ausführen, können also auch direkt durch den Aufruf von httpd ausgeführt werden.
1. Übergeben Sie einen anderen httpd.conf-Dateinamen an apachectl
Normalerweise ändern Sie die ursprüngliche httpd.conf, um verschiedene Apache-Anweisungen auszuprobieren. Wenn etwas nicht funktioniert, werden Sie die Änderungen rückgängig machen. Anstatt mit der ursprünglichen httpd.conf herumzuspielen, kopieren Sie sie in eine neue httpd.conf.debug und verwenden Sie diese neue httpd.conf.debug-Datei mit Apache zu Testzwecken wie unten gezeigt mit der Option -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]
Wenn Sie mit den Änderungen zufrieden sind und Apache problemlos mit httpd.conf.debug läuft, können Sie die Änderungen in httpd.conf kopieren und den Apache wie unten gezeigt normal starten.
# 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. Verwenden Sie ein temporäres DocumentRoot, ohne httpd.conf
zu ändernDies ist sehr hilfreich, wenn Sie verschiedene Layouts für Ihre Website ausprobieren und die Originaldateien unter dem Standard-DocumentRoot nicht ändern möchten. Kopieren Sie Ihr ursprüngliches DocumentRoot-Verzeichnis (/var/www/html) in ein neues temporäres DocumentRoot-Verzeichnis (/var/www/html_debug). Nehmen Sie alle Ihre Änderungen in diesem temporären DocumentRoot-Verzeichnis (/var/www/html_debug) vor und starten Sie den Apache mit diesem temporären Verzeichnis wie unten gezeigt mit der Option -c.
# httpd -k start -c "DocumentRoot /var/www/html_debug/"
Wenn Sie mit dem standardmäßigen DocumentRoot (/var/www/html) zur ursprünglichen Konfiguration zurückkehren möchten, starten Sie den Apache einfach wie unten gezeigt neu.
# httpd -k stop # apachectl start
3. LogLevel vorübergehend erhöhen
Während Sie ein Problem debuggen, können Sie den LogLevel des Apache vorübergehend ändern, ohne die LogLevel-Anweisung in der httpd.conf zu ändern, wie unten gezeigt, indem Sie die Option -e verwenden. In diesem Beispiel ist LogLevel auf debug gesetzt.
# 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
Mögliche Werte, die Sie an option -e übergeben können sind:debug, info, notice, warn, error, crit, alert, emerg
4. Zeigen Sie die in Apache kompilierten Module mit der Option -l
an# httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c
5. Zeigt sowohl statische als auch dynamische Module an, die von Apache geladen wurden
Wenn Sie die Option -l an httpd übergeben, werden nur die statischen Module angezeigt. Wenn Sie die Option -M übergeben, werden sowohl statische als auch gemeinsam genutzte Module angezeigt, wie unten gezeigt.
# 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. Zeige alle akzeptierten Direktiven in httpd.conf
Dies ist wie eine erweiterte Hilfe für httpd, die alle httpd.conf-Anweisungen und die Orte, an denen sie gültig sind, anzeigt. Für eine bestimmte Direktive gibt es alle möglichen Werte an und wo es innerhalb der httpd.conf verwendet werden kann. Dies kann sehr hilfreich sein, wenn Sie schnell etwas über eine bestimmte Apache-Direktive wissen möchten.
# 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. Validieren Sie die httpd.conf, nachdem Sie Änderungen vorgenommen haben
Verwenden Sie die Option -t, um zu überprüfen, ob es Probleme mit einer bestimmten Apache-Konfigurationsdatei gibt. Im unten gezeigten Beispiel wird angezeigt, dass in Zeile 148 in httpd.conf.debug ein Problem vorliegt. mod_auth_basicso fehlt eine . (Punkt) vor dem 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
Sobald Sie das Problem behoben haben, wird Syntax OK angezeigt .
# httpd -t -f conf/httpd.conf.debug Syntax OK
8. Zeigen Sie die httpd-Build-Parameter an
Verwenden Sie die Option -V (Großbuchstabe V), um die Apache-Versionsnummer und alle Parameter anzuzeigen, die beim Erstellen des Apache verwendet werden.
# 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"
Wenn Sie nur die Apache-Versionsnummer anzeigen möchten, verwenden Sie die Option -v (Kleinbuchstabe v) wie unten gezeigt.
# httpd -v Server version: Apache/2.2.9 (Unix) Server built: Jul 14 2008 15:36:56
9. Laden Sie ein bestimmtes Modul nur bei Bedarf.
Manchmal möchten Sie vielleicht nicht alle Module in den Apache laden. Für z.B. Möglicherweise möchten Sie LDAP-bezogene Module nur dann in Apache laden, wenn Sie LDAP testen. Dies kann wie unten gezeigt erreicht werden.
Ändern Sie die httpd.conf und fügen Sie IfDefine hinzu Direktive namens load-ldap (Sie können diese beliebig benennen).
<IfDefine load-ldap> LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so </IfDefine>
Wenn Sie ldap testen und die ldap-bezogenen Module laden möchten, übergeben Sie load-ldap an Option -D, wie unten gezeigt:
# 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.]
Wenn Ihnen dieser Artikel gefallen hat, markieren Sie ihn bitte auf del.icio.us, Digg and Stumble über den unten im Abschnitt „Was kommt als Nächstes?“ bereitgestellten Link.