nfiguration后,黑屏一闪而过,说明你的改动无误,否则这个黑屏会一直停留在当前状态,并且告诉你,你的配置改动有错,错在哪里。
重新启动你的Apache
找到如下这行:
DocumentRoot
你会发下有这样的一行内容:
DocumentRoot “D:/tools/httpd/htdocs”
这个叫作DocumentRoot即webroot,即:发布目录,发布在这个目录下的任何工程都会在Apache服务开启时被装载成标准的web工程,我们现在动手来把这个WebRoot定位到我们自己的发布目录中去吧。
DocumentRoot “d:/www”
我们把它改到了d盘的www目录中去了,然后我们在该目录中放入一个index.html文件,内容为:
<html><body><h1>Hey man, apache works!</h1></body></html>
重启我们的Apache服务,来测试一下:
嘿嘿,我们得到了什么?禁止访问,为什么?
找到下面这一段:
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
deny from all
</Directory>
看到了没?
现在,把这个”deny from all”改成”allow fromall’吧。
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
修改完后重启你的Apache服务
Ok,我们的Apache的发布目录已经成功更改到了d:\www目录下了,我们再来做一个实验:
我们在IE浏览器中输入: http://localhost/css/,我们看到了什么?
这还了得,用户如果是个初级黑客都可以知道我们的服务器上有哪些文件,哪些目录甚至可以直接看到我们的文件内容,怎么办?
找到下面这行
Options FollowSymLinks indexes
把它注掉改成下面这样
#Options FollowSymLinks indexes
Options None
不要急,再往下找,还有
Options Indexes FollowSymLinks
又来一个,再改掉
#Options Indexes FollowSymLinks
Options None
改完这两条后重启你的Apache服务
再次打开一个新的IE,输入:http://localhost/css/,我们看到了如下的界面:
好了,Apache的基本配置完成了即:
1) 基本的安全配置,不允许目录访问
2) 把WebRoot改到另一个物理目录上而不使用Apache自带的WebRoot目录
2.6 整合Apache与Tomcat
Apache(Web Server)负责处理HTML静态内容;
Tomcat(App Server)负责处理动态内容;
其实就是上述这样的一个架构,下面是原理
1) Apache装有一个模块,这个模块叫mod_jk
2) Apache通过80端口负责解析任何静态web内容
3) 任何不能解析的内容,用表达式告诉mod_jk,让mod_jk派发给相关的app server去解释。
通过上述的文字描述我们可以得知:
1) 我们需要在Apache中先装一个mod_jk
2) 我们需要在httpd.conf中写点表达式
下面来实现。
1) 把mod_jk-1.2.31-httpd-2.2.3.so手工copy进我们的Apache安装目录的modules目录下,这个文件的全名叫: mod_jk-1.2.31-httpd-2.2.3.so,大家可以从ftp上的“/JavaArchitect/mod_jk/”目录中获取,因为这个文件是我用C++在本地重新编译过的,网上下载的是src即源码,省去大家再去编译的时间了,而且一些其它网上下载的mod_jk.so是无法使用的。
2) 用ultraedit打开httpd.conf文件,跑到文件最后面加入以下几行:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JKWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
<VirtualHost *>
ServerAdmin localhost
DocumentRoot d:/www/
ServerName localhost
DirectoryIndex index.html index.htm index.jsp index.action
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /*WEB-INF ajp13
JkMount /*j_spring_security_check ajp13
JkMount /*.action ajp13
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
JkMount /*.action ajp13
JkMount /*fckeditor/editor/filemanager/connectors/*.* ajp13
JkMount /fckeditor/editor/filemanager/connectors/* ajp13
</VirtualHost>
关键的是这两句:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JKWorkersFile conf/workers.properties
代表:
ü Apache载入一个额外的插件,用于连接tomcat。
ü 连接时的配置参数描述位于Apache安装目录的/conf目录下的一个叫workers.properties文件中,mod_jk一般使用ajp13协议连接,使用的是tomcat的8009端口。
3) Worker.properties文件内容如下:
workers.tomcat_home=d:/tomcat2
workers.java_home=C:/jdk1.6.32
ps=/
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
4) 告诉我们的Apache,哪些是要交给tomcat来解析,除此之外都由Apache本身来解析:
<VirtualHost *>
ServerAdmin l