【运维囧事】WEB服务器升级之Apache与Tomcat集成(Windows版)
近期,由于业务需求,要将现有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页面
DirectoryIndexindex.htmlindex.php
2.编辑虚拟主机配置文件httpd-vhosts.conf,位置:D:\web9999\apache2.2\conf\extra
新增虚拟主机test1.com
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
3.启动Apache服务。
7.编辑PHP测试页面,将其放入test1目录中并测试
当然,还有很多朋友喜欢用信息测试页,这都没有任何问题。(*^__^*)
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
2.将AJP侦听端口改为8029,默认为8009
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
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
#www.test3.com虚拟站点
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
注:添加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配置
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
ServerAdminwebmaster@test2.com
DocumentRoot"D:/web9999/httped/test2"
ServerNamewww.test2.com
ErrorLog"logs/test2.com-error.log"
CustomLog"logs/test2.com-access.log"common
ServerAdminwebmaster@test3.com
DocumentRoot"D:/web9999/httped/test3"
ServerNamewww.test3.com
ErrorLog"logs/test3.com-error.log"
CustomLog"logs/test3.com-access.log"common
ServerAdminwebmaster@test4.com
DocumentRoot"D:/web9999/httped/test4"
ServerNamewww.test4.com
ErrorLog"logs/test4.com-error.log"
CustomLog"logs/test4.com-access.log"common
httpd-jk.conf配置
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
#www.test3.com虚拟站点
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
Tomcat:server.xml配置
测试:
www.test1.comPHP单页测试index.php
www.test2.comJava站点测试JEECMS系统
www.test3.comJSP单页测试index.jsp
www.test4.comPHP站点测试Discuz系统
1.PHP单页测试,编辑index.php,并将其放置test1,目录中
页面代码:
测试结果:
2.JSP单页测试,编辑index.jsp文件,并将其放置test3,目录中
页面代码:
JSPtestpage.
测试结果:
3.JAVA站点测试,下载JEECMS网站系统,并将其部署在test2目录中
测试页面
4.PHP站点测试,下载Discuz网站系统,并将其部署在test4目录中
测试页面:
Oh,Yeah!完胜!
【博客话题】人在囧途之“运维囧”正在进行,欢迎大家参与,分享你运维工作中的囧事、趣事、经验谈!
详情查看:http://51ctotopic.blog.51cto.com/2009463/1254338
==============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
页:
[1]