windows 2003 下的 apache(2.2.23)+tomcat(7.0.35)+php(5.3.21) 集成


买了一个VPS
由于需求,需要在上面配置可以支持discuz论坛,也可以支持j2ee的项目
配置这个环境搞了我1天多才搞出来,之间很曲折啊,于是用记录下过程,希望能帮助需要帮助的人。

网上非常多的 apache+tomcat+php
但是都非常旧了,不适合,而且有的地方还有误导。


vps装的是 windows 2003 sp2的系统

首先是准备软件

discuz http://www.discuz.net/thread-2744369-1-1.html
当前稳定版是 2.5 ,但是必须要5.0以上的php支持

php http://windows.php.net/download
(我选的是稳定版5.3.21,php版本5.3.21以上后,不分V6和V9,网上很多地方说用apache用V6,IIS用V9当时就让我郁闷半天。因为官网上没有V6版本,只有V9,于是索性我下了一个V9,下载下来安装的时候会发现有apache和iis的选项,所以5.3.21以上的版本不分V6,V9,直接支持apache和iis,还有需要注意的是,5.3.21的php对应的apache版本是2.2.x,所以apache版本也就定了)

apache http://httpd.apache.org/download.cgi#apache22
现在稳定版是2.2.23

tomcat http://tomcat.apache.org/download-70.cgi
我选的是32位的解压版7.0.35(个人喜好,我喜欢解压了以后手动批处理注册为系统服务)


Tomcat Connectors JK (Apache就是通过这个插件连接的tomcat)http://apache.dataguru.cn//tomcat/tomcat-connectors/jk/binaries/windows/
要根据apache的版本选择下载 我的是apache2.2.x的 所以下载的是 tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip

我网站根路劲是在D:\WebRoot
D:\WebRoot\qqtool8 放discuz的论坛 域名
http://www.qqtool8.com 以下就称A网站
D:\WebRoot\hainayun 放j2ee的海娜韵网站 域名
http://www.hainayun.com 以下就称B网站
D:\WebRoot\heyefan 放j2ee的荷叶饭网站 域名
http://www.heyefan.cn 以下就称C网站
A网站用php解析,B和C网站都部署在同一个tomcat

 

第一步:安装apache
apache的安装很简单,不用多说
我的安装路劲是D:\Program Files\Apache Software Foundation\Apache2.2

安装完了可以启动服务 然后在浏览器输入网址http://localhost 看到 it works 就OK了
启动不了看错误日志,注意windows 2003的vps自动开启了iis 需要手动停止并禁用,避免80端口冲突。

 

第二步:安装php
php安装也简单,我安装的时候把php附加的所有功能都安装上了,表达式什么的,注意到了一个安装界面后 会让你选择 httpserver  有apache 2.2.x 有iis..

所以我这里直接选apache 

php安装路劲为:D:\Program Files\PHP

注意安装好了以后 会直接在D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
里的最末尾 大概494行处,自动加上php的环境

 

<span style="font-size:12px;">#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "D:\Program Files\PHP\"
LoadModule php5_module "D:\Program Files\PHP\php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL</span>

所以不用在apache的httpd.conf里面再手动配置php其他东西了
再看D:\Program Files\PHP\php.ini
查找short_open_tag = Off把它修改成short_open_tag = On,让其支持短标签。
不知道这个短标签干啥的,如果没用就什么都不用改了,网上说的那些表达式,都是默认开启了的,不知道是不是我安装的时候选了所有功能的结果。

安装好了以后自己放一个如index.php的文件到D:\Program Files\Apache Software Foundation\Apache2.2\htdocs(apache的默认web路劲)访问http://localhost/index.php 看php是否正常


第四步:部署tomcat
我的tomcat解压在D:\Program Files\Tomcat
然后手动写个批处理注册为系统服务
不会的可以看看我的这篇文章
http://blog.csdn.net/hexin373/article/details/6631568
启动tomcat的系统服务就可以输入 http://localhost:8080访问了

这个时候 php 和 jsp都可以单独运行了。


第五步:集成apache+tomcat+php
首先说一下原理和目的:
apache收到A网站的请求要用php解析 而且网站目录是D:\WebRoot\qqtool8
apache收到B网站的请求要转发给Tomcat 然后由Tomcat解析D:\WebRoot\hainayun里面的内容
apache收到C网站的请求要转发给Tomcat 然后由Tomcat解析D:\WebRoot\heyefan里面的内容 
注意:转发这里就是关键了apache通过mod_jk插件和tomcat的AJP端口连接的,
tomcat默认的ajp端口为 8009
tomcat默认的http端口为 8080

所以这里也我是当时迷惑的地方

当apache和tomcat集成了以后 tomcat的8080http端口就可以不用了 整行都可以注释掉...
你也可以保留,这样你可以用apache的80端口间接访问你的项目,也可以用tomcat的8080端口直接访问你的项目

所以配置mod_jk是重点
开始配置mod_jk
1.把你的mod_jk.so(tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip)解压到D:\Program Files\Apache Software Foundation\Apache2.2\modules下面,这样apache就有了mod_jk支持。

2.在D:\Program Files\Apache Software Foundation\Apache2.2\conf下建立名字为mod_jk.conf的配置文件,内容为:

<span style="font-size:12px;">LoadModule jk_module modules/mod_jk.so 
JkWorkersFile conf/workers.properties 
JkLogFile logs/mod_jk.log 
JkLogLevel info 
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 
JkRequestLogFormat "%w %V %T"</span>

 

3.在D:\Program Files\Apache Software Foundation\Apache2.2\conf下建立名字为workers.properties的配置文件,内容为:
worker.list=tomcat1   #这里可以有多个tomcat,比如tomcat2  名字是取的别名,可以随意命名,不过要和后面的对应上

<span style="font-size:12px;">worker.tomcat1.port=8009
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=10

#如果有tomcat2 就是如下配置
#worker.tomcat2.port=8019
#worker.tomcat2.host=127.0.0.1
#worker.tomcat2.type=ajp13
#worker.tomcat2.lbfactor=1
</span>

 

4.在httpd.conf最末尾增加mod_jk的配置

<span style="font-size:12px;">#BEGIN TOMCAT JK#
include  conf/mod_jk.conf
#END TOMCAT JK#</span>

 

5.查找httpd.conf中httpd-vhosts,大概在470行,Include conf/extra/httpd-vhosts.conf 取消注释,作用是让apache收到A,B,C三个域名后解析到不同的服务器

6.编辑D:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.conf

我的整体配置如下

<span style="font-size:12px;">NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/WebRoot/qqtool8"
ServerName www.qqtool8.com
ServerAlias www.qqtool8.com
ErrorLog "logs/qqtool8.com-error_log"
CustomLog "logs/qqtool8.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/WebRoot/hainayun"
ServerName  www.hainayun.com
ServerAlias www.hainayun.com
ErrorLog "logs/hainayun.com-error_log"
CustomLog "logs/hainayun.com-access_log" common
<Directory "D:/WebRoot/hainayun/WEB-INF">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "D:/WebRoot/hainayun">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex index.jsp index.html index.htm
</Directory>
JkMount /* tomcat1
</VirtualHost>

<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/WebRoot/heyefan"
ServerName  www.heyefan.cn
ServerAlias www.heyefan.cn
ErrorLog "logs/heyefan.com-error_log"
CustomLog "logs/heyefan.com-access_log" common
<Directory "D:/WebRoot/heyefan/WEB-INF">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "D:/WebRoot/heyefan">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex index.jsp index.html index.htm
</Directory>
JkMount /* tomcat1
</VirtualHost>
</span>

 

我把空格都去掉了,因为有空格apache启动不起来,报错。 这里的tomcat1对应上面的workers.properties的tomcat1
上面的属性设置我就不挨个解释了,不懂可以查api,不过直接看英文应该基本都知道是什么作用了。


这样配置好了以后,A网站过来的请求就直接解析到了D:/WebRoot/qqtool8
B和C网站过来的请求分发给了tomcat


第六步:修改tomcat的server.xml(D:\Program Files\Tomcat\conf)
在文件末尾</Engine>标签前添加

<span style="font-size:12px;"><Host name="www.heyefan.cn"  appBase=""
            unpackWARs="true" autoDeploy="true">
       <Context path="" docBase="D:\WebRoot\heyefan" debug="0" reloadable="true" />
    </Host>
    
    <Host name="www.hainayun.com"  appBase=""
            unpackWARs="true" autoDeploy="true">
       <Context path="" docBase="D:\WebRoot\hainayun" debug="0" reloadable="true" />
    </Host></span>

 

作用是让tomcat支持多个项目,收到解析后解析到对应的项目路劲。
这里需要特别注意一点 这个问题曾经让我很头疼
http://blog.csdn.net/hexin373/article/details/8291962这里有说
就是docBase和appBase  路劲只能写在docBase,如果写在了appBase,项目是能运行,但是有权限过滤的话,就不起作用!如果你有这个问题,切忌啊...


第七步:部署discuz
修改的配置下Apache的httpd.conf里面的三处
1.查找DirectoryIndex index.html 将其修改成DirectoryIndex index.php default.php index.html index.htm default.html default.htm (索引页)
2.查找DocumentRoot将其修改为指向你需要放置web文件的文件夹上 所以DocumentRoot就是DocumentRoot "D:/WebRoot/qqtool8",根据自己配置来修改。
3.查找第2个<Directory 大概在206行,将其修改为你自己配置的DocumentRoot的路径(我的是<Directory "D:/WebRoot/qqtool8">)
傻瓜式部署,把下载好的压缩包中的 upload文件夹解压到 D:/WebRoot/qqtool8


第八步:部署j2ee的网站
把自己项目放到对应的D:/WebRoot/hainayun和D:/WebRoot/heyefan


第九步:启动apache
如果不出意外,apache就能正常启动了,如果不正常,请看错误日志,如果看不到错误日志以上的每步都要确保正确,每一步配置的时候都检测下配置是否正确。
用命令行
检查错误方法:进入cmd 然后进入 Apache安装目录(具体为你自己的安装目录)\bin> httpd.exe -w -n "Apache2.2" -k start
Apache2.2是我的apache在windows里面的服务名,如果不一样,请修改成你自己的服务名,这样执行后就会提示你httpd.conf的哪一行有问题。


这里还要特别注意一点,就是apache的服务启动了,tomcat的服务也是需要启动的,不然就没有j2ee的web服务器了。刚开始我就搞不清楚配置完以后需要启动些什么。


这样基本上集成就弄完了。
另外linux配置思路也是一样的。
如果还有问题,就检查以上的每一步。


反正当时我配置搞了好久,现在总算搞好了,希望能帮助到看帖的你,呵呵....


 

你可能感兴趣的:(windows 2003 下的 apache(2.2.23)+tomcat(7.0.35)+php(5.3.21) 集成)