如何在Apache中添加模块

时间:2020-03-05 15:25:52  来源:igfitidea点击:

Apache Web服务器是一个模块化程序。
我们可以动态添加和删除模块,而无需重新编译整个程序。
apache中的模块称为动态共享对象(DSO)。
常用模块的一个示例是mod_perl,该模块用于通过将Perl解释器嵌入正在运行的httpd进程中来提高Perl CGI脚本的执行速度。
本教程说明了如何在Apache中添加或者删除模块。

构建模块

我们可以使用Apache扩展工具“ apxs”(APache eXtenSion)构建自己的第三方模块。
假设我们有一个名为“ igi.c”的第三方模块可在Apache中使用。
现在,首先我们需要使用以下命令编译该模块:

$apxs -c igi.c

-c选项将为我们编译模块并创建一个名为“ mod_igi.so”的文件。
成功完成编译后,运行以下命令:

$apxs -i -a -n igi mod_igi.so

-i选项安装模块; -a选项将通过添加用于加载该模块的行来自动在该模块的Apache配置文件中进行更改;和-n选项仅用于显式设置模块名称(对于-i选项)。

LoadModule指令

在Apache的配置文件(即/etc/httpd/conf/httpd.conf)中使用伪指令LoadModules加载动态模块。
LoadModules指令的语法为:

LoadModule module_name file_for_module

已经为我们添加了许多模块。
这是httpd.conf文件的一部分,该文件显示默认情况下加载的模块:

## Dynamic Shared Object (DSO) Support
## To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
## Example:
# LoadModule foo_module modules/mod_foo.so
#LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

这些模块是默认添加的。
现在,假设我们要添加模块以提高perl脚本的执行速度,例如:mod_perl。
这可以通过在配置文件httpd.conf中添加以下行来完成:

LoadModule perl_module modules/mod_perl.so

对httpd.conf进行一些更改后,需要重新启动httpd服务,以确保httpd守护程序可以读取配置文件。

$service httpd restart