本篇中,我们会简要地讨论 Apache 服务器前端以及如何列出或查看已经启用的 Apache 模块。
Apache 基于模块化的理念而构建,这样就可以让 web 管理员添加不同的模块来扩展主要的功能及增强性能。
常见的 Apache 模块有:
- mod_ssl – 提供了 HTTPS 功能。
- mod_rewrite – 可以用正则表达式匹配 url 样式,并且使用 .htaccess 技巧来进行透明转发,或者提供 HTTP 状态码回应。
- mod_security – 用于保护 Apache 免于暴力破解或者 DDoS 攻击。
- mod_status - 用于监测 Apache 的负载及页面统计。
在 Linux 中 apachectl 或者 apache2ctl用于控制 Apache 服务器,是 Apache 的前端。
你可以用下面的命令显示 apache2ctl 的使用信息:
- $ apache2ctl help
- 或者
- $ apachectl help
- Usage: /usr/sbin/httpd [-D name] [-d directory] [-f file]
- [-C "directive"] [-c "directive"]
- [-k start|restart|graceful|graceful-stop|stop]
- [-v] [-V] [-h] [-l] [-L] [-t] [-S]
- Options:
- -D name : define a name for use in directives
- -d directory : specify an alternate initial ServerRoot
- -f file : specify an alternate ServerConfigFile
- -C "directive" : process directive before reading config files
- -c "directive" : process directive after reading config files
- -e level : show startup errors of level (see LogLevel)
- -E file : log startup errors to file
- -v : show version number
- -V : show compile settings
- -h : list available command line options (this page)
- -l : list compiled in modules
- -L : list available configuration directives
- -t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
- -S : a synonym for -t -D DUMP_VHOSTS
- -t -D DUMP_MODULES : show all loaded modules
- -M : a synonym for -t -D DUMP_MODULES
- -t : run syntax check for config files
apache2ctl 可以工作在两种模式下,SysV init 模式和直通模式。在 SysV init 模式下,apache2ctl 用如下的简单的单命令形式:
- $ apachectl command
- 或者
- $ apache2ctl command
比如要启动并检查它的状态,运行这两个命令。如果你是普通用户,使用 sudo 命令来以 root 用户权限来运行:
- $ sudo apache2ctl start
- $ sudo apache2ctl status
- tecmint@TecMint ~ $ sudo apache2ctl start
- AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1\. Set the 'ServerName' directive globally to suppress this message
- httpd (pid 1456) already running
- tecmint@TecMint ~ $ sudo apache2ctl status
- Apache Server Status for localhost (via 127.0.0.1)
- Server Version: Apache/2.4.18 (Ubuntu)
- Server MPM: prefork
- Server Built: 2016-07-14T12:32:26
- -------------------------------------------------------------------------------
- Current Time: Tuesday, 15-Nov-2016 11:47:28 IST
- Restart Time: Tuesday, 15-Nov-2016 10:21:46 IST
- Parent Server Config. Generation: 2
- Parent Server MPM Generation: 1
- Server uptime: 1 hour 25 minutes 41 seconds
- Server load: 0.97 0.94 0.77
- Total accesses: 2 - Total Traffic: 3 kB
- CPU Usage: u0 s0 cu0 cs0
- .000389 requests/sec - 0 B/second - 1536 B/request
- 1 requests currently being processed, 4 idle workers
- __W__...........................................................
- ................................................................
- ......................
- Scoreboard Key:
- "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
- "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
- "C" Closing connection, "L" Logging, "G" Gracefully finishing,
- "I" Idle cleanup of worker, "." Open slot with no current process
当在直通模式下,apache2ctl 可以用下面的语法带上所有 Apache 的参数:
- $ apachectl [apache-argument]
- $ apache2ctl [apache-argument]
可以用下面的命令列出所有的 Apache 参数:
- $ apache2 help [在基于Debian的系统中]
- $ httpd help [在RHEL的系统中]
检查启用的 Apache 模块
因此,为了检测你的 Apache 服务器启动了哪些模块,在你的发行版中运行适当的命令,-t -D DUMP_MODULES 是一个用于显示所有启用的模块的 Apache 参数:
- --------------- 在基于 Debian 的系统中 ---------------
- $ apache2ctl -t -D DUMP_MODULES
- 或者
- $ apache2ctl -M
- --------------- 在 RHEL 的系统中 ---------------
- $ apachectl -t -D DUMP_MODULES
- 或者
- $ httpd -M
- $ apache2ctl -M
- [root@tecmint httpd]# apachectl -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)
- authn_anon_module (shared)
- authn_dbm_module (shared)
- authn_default_module (shared)
- authz_host_module (shared)
- authz_user_module (shared)
- authz_owner_module (shared)
- authz_groupfile_module (shared)
- authz_dbm_module (shared)
- authz_default_module (shared)
- ldap_module (shared)
- authnz_ldap_module (shared)
- include_module (shared)
- ....
就是这样!在这篇简单的教程中,我们解释了如何使用 Apache 前端工具来列出启动的 Apache 模块。记住你可以在下面的反馈表中给我们留下你的问题或者留言。