Apache2.4以后的版本编译依赖apr,所以,编译之前需要先安装apr及apr-util。
编译参数只是一个参考作用,这个参数是我平常使用的,具体工作中的需求还是要区别对待的
一些注解:
--enable-so 启动模块动态装卸载
--enable-ssl 编译ssl模块
--enable-cgi 支持cgi机制(能够让静态web服务器能够解析动态请求的一个协议)
--enable-rewrite 支持url重写
--with-zlib 支持zlib压缩
--with-pcre 支持正则表达式
--with-apr=/usr/local/apr 指明依赖的apr所在目录
--with-apr-util=/usr/local/apr-util/ 指明依赖的apr-util所在的目录
--enable-mpms-shared=all 以共享方式编译的模块
--with-mpm=prefork 指明httpd的工作方式为prefork
--with-mpm=<MPM> 先择Apache多路处理模块,<MPM>={beos|event|worker|prefork|mpmt_os2},prefork为 Unix系统下默认处理模块,它将运行一个非线程型的、预派生的Web服务器,适合于没有线程安全库,需要避免线程兼容性问题的系统,它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。worker为支持混合的多线程多进程的多路处理模块,由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM,同时,它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。如果你的系统是基于线程安全的,那么笔者建议使用worker替代prefork,它将使得你的系统得到实际的性能改善。
--enable-so 指明编译动态加载模块(DSO)支持到httpd二进制文件,此模块使得Apache的各功能模块可以与核心分开编译、运行时动态加载。有了DSO支持,升级和增加模块时只需编译相关的模块即可,不必重新编译整个系统。最新版本的Apache缺省编译此模块到httpd二进制文件,如果你在使用早期版本的 apache并且需要DSO支持,可能要明确指出此选项。
---------------------
httpd.conf配置文件详解
如果该虚拟目录下没有 index.html,浏览器也会显示该虚拟目录的目录结构,列出该虚拟目录下的文件和子目录。
如何禁止 Apache 显示目录列表呢?
要禁止 Apache 显示目录结构列表,只需将 Option 中的 Indexes 去掉即可。
比如我们看看一个目录的目录配置:
<Directory "D:/Apa/blabla">
Options Indexes FollowSymLinks #---------->Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
你只需要将上面代码中的 Indexes 去掉,就可以禁止 Apache 显示该目录结构。用户就不会看到该目录下的文件和子目录列表了。
Indexes 的作用就是当该目录下没有 index.html 文件时,就显示目录结构,去掉 Indexes,Apache 就不会显示该目录的列表了。
第二种方法
解决办法:
1、编辑httpd.conf文件
vi ./conf/httpd.conf
找到如下内容:
?BR> <Directory “C:/Program Files/Apache2.2/htdocs”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
……
在Options Indexes FollowSymLinks在Indexes前面加上 – 符号。
即: Options -Indexes FollowSymLinks
【备注:在Indexes前,加 + 代表允许目录浏览;加 – 代表禁止目录浏览。】
这样的话就属于整个Apache禁止目录浏览了。
如果是在虚拟主机中,只要增加如下信息就行:
<Directory “D:test”>
Options -Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
这样的话就禁止在test工程下进行目录浏览。
备注: 切记莫把“Allow from all”改成 “Deny from all”,否则,整个网站都不能被打开。
<Finished>
还有一种方法:
可以在根目录的 .htaccess 文件中输入
<Files *>
Options -Indexes
</Files>
就可以阻止Apache 将目录结构列表出来。
要想列出上述虚拟目录的目录结构,前提是需要开启下面的模块功能,否则重启httpd服务报错,
而且如果在ifModule模块中的内容前面加#号不表示注释,需要放到要执行参数之后,否则也无
法列出虚拟目录的目录结构。
<IfModule dir_module>
DirectoryIndex index.html
#DirectoryIndex index.html index.php
</IfModule>