您的位置:首页 > 运维架构 > Tomcat

【运维囧事】WEB服务器升级之Apache与Tomcat集成(Windows版)

2013-08-14 14:41 561 查看
近期,由于业务需求,要将现有WEB服务器进行升级。升级的重点嘛,就是兼容PHP网站程序!
原Web服务器跑的是JSP网站,用的Java+Tomcat,现在需要升级到PHP+Apache,OK,看来这次又要俺亲自出马了!
(顺便说一句,除了我,也没别人能做了,因为我们部门基本算是公司的技术部了,而在我们部门里,目前也只有我一个人是主要负责技术方面工作的,所以,俺在部门的地位,嘿嘿~~(*^__^*)你懂得!)

好了,不废话了,直接上干货!开整!

平台环境:WindowsServer2003(话说,企业对于IT的投资已经N年0投放了,所以。。。你懂的)

系统环境变量:PHP,JAVA
WEB架构:Apache2.2+Tomcat7.0

所需软件:
1.apache-tomcat-7.0.39-windows-x86.zip(Tomcat开源免安装版)
2.httpd-2.2.25-win32-x86-openssl-0.9.8y.msi(Apache安装包)
3.jdk-6u12-windows-i586-p.exe(Java安装包,含jdk和jre)
4.php-5.2.17-Win32-VC6-x86.zip(PHP开源免安装版)
5.mod_jk-1.2.26-httpd-2.2.4.so(Apache与Tomcat通信模块)

大体流程:
1.先部署Apache+PHP环境
2.再部署Tomcat+Java环境
3.集成Apache+Tomcat平台

4.测试验收

测试验收:
修改hosts文件,分布四个域名,分别为
www.test1.comPHP单页测试index.php
www.test2.comJava站点测试JEECMS系统
www.test3.comJSP单页测试index.jsp
www.test4.comPHP站点测试Discuz系统








操作步骤:
1.文件及网站目录部署。
在D盘新建Web目录,并将Apache,Tomcat,PHP,Java,和网站目录分布在该目录中,如图所示:



2.解压PHP文件(php-5.2.17-Win32-VC6-x86.zip),并将文件内容分布如下:
D:\web9999\php-5.5.1


3.编辑php.ini文件
1.选择文件中php.ini-dist文件,将该文件重命名为php.ini(即删除文件名后面的“-dist”)

2.打开php.ini文件,开启我们需要用到的一些系统模块(将其之前的;号删除掉即可。)
示例:
;extension=php_curl.dll(模块关闭)
extension=php_curl.dll(模块开启)
我开启的模块,如下:

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll(PHPMyadmin需要开启此项)
extension=php_mcrypt.dll(PHPMyadmin需要开启此项)
extension=php_mysql.dll(开启PHP和MySql之间的通信)
extension=php_mysqli.dll(PHPMyadmin需要开启此项)
extension=php_sockets.dll
修改目录地址

extension_dir="D:/web9999/php-5.5.1/ext"
4.配置PHP系统环境变量。
1.打开环境变量对话框。
(不会打开环境变量对话框的同学,请看操作步骤:
1.选中“我的电脑”,点击鼠标右键,选择“属性”
2.系统弹出“系统属性”对话框,选择【高级】-【环境变量】


3.点击【环境变量】后,系统弹出【环境变量】对话框。)
2.设置环境变量Path参数,指定PHP文件目录,添加如下内容:

;D:\web9999\php-5.5.1;D:\web9999\php-5.5.1\ext


3.设置完成后,点击【确定】-【确定】-【确定】,退出【系统属性】对话框。
4.至此,PHP环境变量设置完成。

5.检验PHP安装版本状态。
php-v



5.安装Apache服务(httpd-2.2.25-win32-x86-openssl-0.9.8y.msi)
这个很简单,默认下一步即可,端口选择,默认就是开启80端口
注意:只需在选择安装目录时,指到“D:\web9999\apache2.2”即可。
安装完目录如下:


6.配置Apache服务
1.编辑httpd.conf文件
开启部分模块(注:Apache默认已开启一些模块,以下为Apache未开启模块,手动修改即可。)

LoadModulealias_modulemodules/mod_alias.so(开启别名解析功能)

LoadModulevhost_alias_modulemodules/mod_vhost_alias.so(开启虚拟主机功能)
LoadModulephp5_module"D:/web9999/php-5.5.1/php5apache2_2.dll"(加载PHP)
编辑配置文件,指定PHP目录地址
PHPIniDir"D:/web9999/php-5.5.1"
让Apache支持PHP
AddTypeapplication/x-httpd-php.php
AddTypeapplication/x-httpd-php-source.phps

修改网站部署目录

DocumentRoot"D:/web9999/httped"
指定虚拟主机配置文件

#Virtualhosts
Includeconf/extra/httpd-vhosts.conf

指定mod_jk配置文件
#jk_modulesetting
Includeconf/extra/httpd-jk.conf

让Apache支持index.php页面

<IfModuledir_module>
DirectoryIndexindex.htmlindex.php
</IfModule>

2.编辑虚拟主机配置文件httpd-vhosts.conf,位置:D:\web9999\apache2.2\conf\extra
新增虚拟主机test1.com

<VirtualHost*:80>
ServerAdminwebmaster@test1.com
DocumentRoot"D:/web9999/httped/test1"
ServerNametest1.com
ServerAliaswww.test1.com
ErrorLog"logs/test1.com-error.log"
CustomLog"logs/test1.com-access.log"common
</VirtualHost>
3.启动Apache服务。

7.编辑PHP测试页面,将其放入test1目录中并测试
<?php
echo"helloworldphp"
?>


当然,还有很多朋友喜欢用信息测试页,这都没有任何问题。(*^__^*)
<?php
phpinfo();
?>


OK,至此Apache+PHP环境搭建完成!

=====JAVA+Tomcat===begin=========

8.部署JAVA环境
1.安装jdk-6u12-windows-i586-p.exe(Java安装包,含jdk和jre)
同样默认下一步即可,只需在选择安装目录时,指到“D:\web9999\Java”即可
安装完成后,目录如下:




2.设置JAVA环境变量
1.新建系统变量JAVA_HOME和CLASSPATH
变量名:JAVA_HOME
变量值:D:\web9999\Java\jdk1.6.0_12


变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;


2.新增Path变量

变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;


3.检测Java安装版本状态
java-version


其他命令

java
javac

9.部署Tomcat

1.安装apache-tomcat-7.0.39-windows-x86.zip(开源免安装版).
直接解压至“D:\web9999\Tomcat7.0”即可。如图所示:



2.编辑server.xml文件
1.将测试端口改为9999,默认为8080

<Connectorport="9999"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
2.将AJP侦听端口改为8029,默认为8009

<Connectorport="8029"protocol="AJP/1.3"redirectPort="8443"/>
3.保存server.xml文件,并启动Tomcat

4.访问Tomcat页面(成功)



至此,Tomcat与Apache就各自安装完成啦~~
下面就进入最激动人心的,最具有技术含量的,最能够吹牛逼的平台整合阶段啦~~吼吼~~

10.部署mod_jk-1.2.26-httpd-2.2.4.so模块
1.将mod_jk-1.2.26-httpd-2.2.4.so拷贝到Apache安装目录下的modules中,并重命名为mod_jk.so
我的目录地址:D:\web9999\apache2.2\modules


2.编辑httpd.conf文件
新建mod_jk配置文件httpd-jk.conf,并将其放在conf/extra目录中

Includeconf/extra/httpd-jk.conf
3.编辑httpd-jk.conf文件,内容如下
#加载mod_jk.so
LoadModulejk_modulemodules/mod_jk.so

#指定工作目录workers.properties
JkWorkersFile"D:/web9999/apache2.2/conf/workers.properties"
JkLogFilelogs/mod_jk.log

#指定哪些请求交给tomcat处理
#jkMount语句的功能是:当遇到符合条件的请求时,交由ajp13协议,继而转发给tomcat处理。
#jkUnMount语句的功能是:当遇到*.php的请求时,不交由ajp13协议处理。
#LoadModule指定加载

#www.test2.com虚拟站点
NameVirtualHost*.80

<VirtualHost*:80>

ServerNamewww.test2.com
ServerAliastest2.com*.test2.com
DocumentRoot"D:\web9999\httped\test2"
DirectoryIndexindex.jhtmlindex.doindex.html

JkMount/servlet/*.*ajp13
JkMount/*.jspajp13
JkMount/*.jhtmlajp13
JkMount/*.doajp13
JkMount/*.htmlajp13
JkMount/*.htmajp13
JkMount/*.cssajp13
JkMount/*.jpgajp13
JkMount/*.bmpajp13
JkMount/*.pngajp13
JkMount/*.swfajp13
JkMount/*.gifajp13
JkMount/*.svlajp13

JkUnMount/*.phpajp13
</VirtualHost>

#www.test3.com虚拟站点

<VirtualHost*:80>

ServerNamewww.test3.com
ServerAliastest3.com*.test3.com
DocumentRoot"D:\web9999\httped\test3"
DirectoryIndexindes.jspindex.jhtmlindex.doindex.html

JkMount/servlet/*.*ajp13
JkMount/*.jspajp13
JkMount/*.jhtmlajp13
JkMount/*.doajp13
JkMount/*.htmlajp13
JkMount/*.htmajp13
JkMount/*.cssajp13
JkMount/*.jpgajp13
JkMount/*.bmpajp13
JkMount/*.pngajp13
JkMount/*.swfajp13
JkMount/*.gifajp13
JkMount/*.svlajp13

JkUnMount/*.phpajp13
</VirtualHost>
注:添加JkMount/*.svlajp13是因为JEECMS安装是会用到,如果没有此项,安装时会报错




4.新建workers.properties文件,并将其放置在conf目录中,文件内容如下:
#tomcat安装目录
workers.tomcat_home="D:/web9999/tomcat"

#jdk的目录
workers.java_home="C:/ProgramFiles/Java/jdk1.6.0_12"

#定义模块名称
worker.list=ajp13

#tomcat的主机地址
worker.ajp13.host=127.0.0.1

#tomcat中ajp的端口
worker.ajp13.port=8029

#tomcat与apache通信协议
worker.ajp13.type=ajp13

#server的负载平衡因数。加权比重,值越高,分得的请求越多
worker.ajp13.lbfactor=1

至此,mod_jk配置结束。
思路:
Apache启动时,首先读取httpd.conf文件,系统通过httpd.conf再去读取httpd-jk.conf文件,通过httpd-jk.conf文件,系统再去加载mod_jk.so模块,并读取文件workers.properties,在workers.properties文件中,我们指定了Tomcat和Java的工作目录,并指定相应的传输协议及传送给Tomcat处理的文件类型,至此,整合完毕!

整合完成后,虚拟主机分配:
Apache:httpd-vhosts.conf配置
<VirtualHost*:80>
ServerAdminwebmaster@test1.com
DocumentRoot"D:/web9999/httped/test1"
ServerNametest1.com
ServerAliaswww.test1.com
ErrorLog"logs/test1.com-error.log"
CustomLog"logs/test1.com-access.log"common
</VirtualHost>

<VirtualHost*:80>
ServerAdminwebmaster@test2.com
DocumentRoot"D:/web9999/httped/test2"
ServerNamewww.test2.com
ErrorLog"logs/test2.com-error.log"
CustomLog"logs/test2.com-access.log"common
</VirtualHost>

<VirtualHost*:80>
ServerAdminwebmaster@test3.com
DocumentRoot"D:/web9999/httped/test3"
ServerNamewww.test3.com
ErrorLog"logs/test3.com-error.log"
CustomLog"logs/test3.com-access.log"common
</VirtualHost>

<VirtualHost*:80>
ServerAdminwebmaster@test4.com
DocumentRoot"D:/web9999/httped/test4"
ServerNamewww.test4.com
ErrorLog"logs/test4.com-error.log"
CustomLog"logs/test4.com-access.log"common
</VirtualHost>

httpd-jk.conf配置
<VirtualHost*:80>

ServerNamewww.test2.com
ServerAliastest2.com*.test2.com
DocumentRoot"D:\web9999\httped\test2"
DirectoryIndexindex.jhtmlindex.doindex.html

JkMount/servlet/*.*ajp13
JkMount/*.jspajp13
JkMount/*.jhtmlajp13
JkMount/*.doajp13
JkMount/*.htmlajp13
JkMount/*.htmajp13
JkMount/*.cssajp13
JkMount/*.jpgajp13
JkMount/*.bmpajp13
JkMount/*.pngajp13
JkMount/*.swfajp13
JkMount/*.gifajp13
JkMount/*.svlajp13

JkUnMount/*.phpajp13
</VirtualHost>

#www.test3.com虚拟站点

<VirtualHost*:80>

ServerNamewww.test3.com
ServerAliastest3.com*.test3.com
DocumentRoot"D:\web9999\httped\test3"
DirectoryIndexindes.jspindex.jhtmlindex.doindex.html

JkMount/servlet/*.*ajp13
JkMount/*.jspajp13
JkMount/*.jhtmlajp13
JkMount/*.doajp13
JkMount/*.htmlajp13
JkMount/*.htmajp13
JkMount/*.cssajp13
JkMount/*.jpgajp13
JkMount/*.bmpajp13
JkMount/*.pngajp13
JkMount/*.swfajp13
JkMount/*.gifajp13
JkMount/*.svlajp13

JkUnMount/*.phpajp13
</VirtualHost>

Tomcat:server.xml配置
<Hostname="www.test3.com"appBase="D:\web9999\httped\test3"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
</Host>

<Hostname="www.test2.com"appBase="D:\web9999\httped\test2"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
</Host>

测试:
www.test1.comPHP单页测试index.php
www.test2.comJava站点测试JEECMS系统
www.test3.comJSP单页测试index.jsp
www.test4.comPHP站点测试Discuz系统
1.PHP单页测试,编辑index.php,并将其放置test1,目录中
页面代码:

<?php
echo"helloworldphp"
?>
测试结果:




2.JSP单页测试,编辑index.jsp文件,并将其放置test3,目录中
页面代码:

<%@pagelanguage="java"%>
<%@pageimport="java.util.*"%>
<html>
<head>
<title>JSPtestpage.</title>
</head>
<body>
<%out.println("HelloWorldJSP");%>
</body>
</html>
测试结果:



3.JAVA站点测试,下载JEECMS网站系统,并将其部署在test2目录中
测试页面



4.PHP站点测试,下载Discuz网站系统,并将其部署在test4目录中
测试页面:





Oh,Yeah!完胜!


博客话题】人在囧途之“运维囧”正在进行,欢迎大家参与,分享你运维工作中的囧事、趣事、经验谈!
详情查看:/article/4123671.html

==============2013.9.25新增===============
隐藏网站目录
打开httpd.conf文件,找如下配置
Options FollowSymLinks indexes
把它注掉改成下面这样
#Options FollowSymLinks indexes
Options None
其次另一个:

Options Indexes FollowSymLinks
注释掉原配置,录入新配置
#Options Indexes FollowSymLinks
Options None
改完后重启Apache服务.即可.

配置说明:基本的安全配置,不允许目录访问视频补充http://down.51cto.com/data/1091854

本文出自 “龙目小子,博闻天下” 博客,请务必保留此出处http://longmuxiaozi.blog.51cto.com/865148/1272858
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: