分享
 
 
 

Windows Apache Tomcat PHP mysql work together

王朝java/jsp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

# title : Windows Apache Tomcat PHP mysql work together

#

# Author H819

# 2005.08.19

**********

*过程分析*

**********

apache 的 httpd.conf 文件调用一个 mod_jk.conf 文件,mod_jk.conf 文件声明了加载的 mod_jk.so 模块,并且定义该模块的一些设置参数,其中就包括和 tomcat 连接的时候的一些参数,而这些参数又在 works.properties 中声明。

php 是独立的模块,加载即可。

******

*环境*

******

window xp sp2

Apache server: http://httpd.apache.org/ 2.0.50

Tomcat server: http://jakarta.apache.org/site/downloads/downloads_tomcat.html Tomcat 5.0.28 (Binary)

Jdk1.4.2_08 http://java.sun.com

jk-1.2.14: http://jakarta.apache.org/site/downloads/downloads_tomcat.html 选择 JK windwos 版本 (JK Binary Releases)

php-5.0.0-Win32.zip http://www.php.net/

MySQL 4.1 http://dev.mysql.com/downloads/

MySQL Connector/J http://dev.mysql.com/downloads/ for connecting to MySQL from Java

**********

*注意事项*

**********

1. 安装过程,任何目录和文件名都不要使用空格,如不要使用D:\Program Files 而使用D:\ProgramFiles。空格问题可能使软件访问出现问题,也许随着版本的提高,这个问题不会再出现,但是我们需要注意这一点。

2. 把上面所有的安装程序和网站的文档都保存到同一个目录下面如 D:\www,这样也方便日常管理配置和将来移植到别的服务器上去。

3. jk or jk2 ?

jk2 已经停止开发 , jk 是目前推荐的连接器。

4. 每个配置文件,我都用英文做了一些注释,要注意阅读。具体应用的时候,修改相关的配置,直接拷贝过去即可。

*************

*安装 Apache*

*************

1. apache_2.0.52-win32-x86-no_ssl

双击安装到D:\www\Apache2 注意,目录名不要包含空格,否则下面设置php会出错。

安装结束后,apache自动运行,在浏览器里输入http://127.0.0.1,应该显示出了默认的欢迎网页。

(在 管理->服务 中,可以设定为手工运行方式,在开发阶段很有用处,不用的时候,可以停止他,以节省资源,并且可以随时重启等)

(unix 下面的运行命令,待完善)

2. 修改 httpd.conf 中的默认配置

2.1 ServerRoot 如果安装过程顺利的话,这个参数的值会自动设置正确(在unix 中,不是安装的,要手工改写);

2.2 DocumentRoot 默认的应用目录(如 E:/www/Apache2/MyDocRoot);

2.3 AddDefaultCharset 使 apache 支持中文:AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset GBK

......

3. 注意事项

3.1 httpd.conf 中,目录分隔符用的是“/”,不是 windows 的反斜杠"\"

3.2 检测 httpd.conf 语法的工具 apache.exe

3.2.1 检测 httpd .conf 语法 apache.exe -t

3.2.2 检测 httpd.conf 中虚拟机的设置 apache.exe -S

3.2.3 ...

全部命令列表: apache.exe -h

****************

*安装 Java2 SDK*

****************

1. 如果从 sun 官方网站上面下载安装版本(.exe),安装完成之后,相应的会在系统的环境变量中设置相应的变量。

2. jbuilder 带有 jdk (或者其他的免安装的 jdk),tomcat 直接指定该 jdk 即可。(推荐)

附注:如果想要在命令行执行 javac,java,jar 等 java 命令,需要设置环境变量,方法如下:

共有三个环境变量需要设置 JAVA_HOME, path 和 classpath

(假定 jdk1.4 安装在 E:/www/jdk1.4 下面)

桌面上右击"我的电脑"属性,弹出"系统特性"对话框,选择"高级"标签,单击"环境变量"按钮,弹出"环境变量"对话框,在"系统变量"中,单击"新建"按钮,在弹出的"新建系统变量"对话框中:

1) 在"变量名"中写:JAVA_HOME,在"变量值"中写:D:\www\JDK1.4,然后确定;

2) 在变量名中写入:path,变量值中写入:追加 .;%JAVA_HOME%\bin 然后确定;

3) 在变量名中写入: classpath ,变量值中写入:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 然后确定;

4) 命令 path 检验 path 的设置情况;

5) 验证设置是否正确,在命令行中输入 java ,如果返回提示信息,则表明设置正确。

说明:

1) classpath 变量: 用命令行执行java命令的时候,class 加载的寻径路径,注意,不要漏写圆点 . , 这是指当前路径,同样 path 也不要忘记圆点。

2) 变量引用 %% ,这是 dos 命令引用的格式,在设置其他的环境变量的时候,也可以用此方法来简写变量。

.;%JAVA_HOME%\bin 等同 .;D:\www\JDK1.4\bin

3) windows 中,用户变量只对当前的用户有效,而系统变量对所有的用户都有效。(为了使设置的环境变量生效,用户变量需要注销系统,而系统变量需要重新启动系统 --- 不能确定,有时候即时生效 JH)

*************

*安装 Tomcat*

*************

选择 zip 版(Binary releases): jakarta-tomcat-5.0.28.zip

1.解压至 D:\www\tomcat5

2.设置JAVA_HOME、CATALINA_HOME环境变量(假定 jdk1.4 安装在 E:/www/jdk1.4 下面)

桌面上右击"我的电脑"属性,弹出"系统特性"对话框,选择"高级"标签,单击"环境变量"按钮,弹出"环境变量"对话框,在"系统变量"中,单击"新建"按钮,在弹出的"新建系统变量"对话框中:

1)在"变量名"中写:JAVA_HOME,在"变量值"中写:D:\www\JDK1.4,然后确定;(如果在 jdk 中已经设置完毕,此步骤就可以省略了)

2)在变量名中写入:CATALINA_HOME,在"变量值"中写入:D:\www\tomcat5 然后确定。

3) Tomcat的启动、关闭:双击 D:\ApacheGroup\tomcat5\bin\setup.bat启动Tomcat服务器,双击 D:\ApacheGroup\tomcat5\bin\shutdown.bat关闭Tomcat服务器(或者在控制台 ctr+c) 。

(unix 下面的运行命令,待完善)

4) 测试:启动Tomcat,在IE地址中输入:http://localhost:8080出现 tomcat 欢迎页面,则说明安装成功 。

************************************

*Apache Tomcat 结合,虚拟目录的实现*

************************************

假定应用情况:

定义两个虚拟主机:testa , testb(testa: 一个虚拟主机,两个应用;testb :一个虚拟主机一个应用)

虚拟主机 testa 有两个应用(数目无限制),testa 和 testa/a/

testa 应用的根目录在 E:/tomcat-5.0.18/webapps/servlets-examples

testa/a/ 应用的根目录在 E:/tomcat-5.0.18/webapps/jsp-examples/

testb 应用的根目录在 E:/ApacheGroup/Apache2/DocumentRoot

testa 可以通过 http://testa 访问

testa/a/ 可以通过 http://testa/a/ 访问(对于有多个子应用的系统,非常有用处,域名不用变化)

testb 可以通过 http://testb 访问

注:

应用目录所在位置任意,但是要注意,用绝对路径;

这里只是为了说明目录可以随意设定,才举例应用位置在上面比较复杂的目录,实际开发的时候,要统一到一个目录中:D:\www\webapp\testa

D:\www\webapp\testa.a

D:\www\webapp\testb

http://apache.justdn.org/jakarta/tomcat-connectors/jk/binaries/win32/jk-1.2.14/

apache:

1. 选择 mod_jk-1.2.14-apache-2.0.54.so ,重命名为 mod_jk.so,拷贝到APAHCE_HOME\modules目录下面;

2. 拷贝 workers.properties , mod_jk.conf , VirtualHost.conf 三个文件到 APAHCE_HOME\conf 中;

3. 仔细阅读之后,修改 workers.properties , mod_jk.conf , VirtualHost.conf 中的参数为实际应用的数值;

4. 修改 httpd.conf ,在文件的最后,引入配置文件

include conf/mod_jk.conf

include conf/VirtualHost.conf

(httpd.conf 支持 include 命令,这样可以做到尽量少的修改原文件,易于管理。在 httpd.conf 中,默认的根路径为 apache_home,设置的相对路径,均从此目录开始。)

5. 检查 httpd.conf 语法和虚拟主机的设置

apache.exe -t apache.exe -S

tomcat:

6. 修改 Tomcat_home/conf/server.xml

6.1 确保

<Connector port="8009"

enableLookups="false" redirectPort="8443" debug="0"

protocol="AJP/1.3" />

没有被注释掉。

6.2 在 <Engine></Engine> 中,<Host></Host> 同级,加入如下内容

<Host name="testa" debug="0" appBase="E:/tomcat-5.0.18/webapps/servlets-examples"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

<Logger className="org.apache.catalina.logger.FileLogger"

directory="E:/tomcat-5.0.18/webapps/servlets-examples/logs" prefix="standard_log." suffix=".txt"

timestamp="true"/>

</Host>

<Host name="testb" debug="0" appBase="E:/ApacheGroup/Apache2/DocumentRoot"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

<Logger className="org.apache.catalina.logger.FileLogger"

directory="E:/ApacheGroup/Apache2/DocumentRoot/logs" prefix="standard_log." suffix=".txt"

timestamp="true"/>

</Host>

注意:

这是两个虚拟主机,appBase 指定的是绝对路径,修改成自己实际应用;

如果 server.xml 设置的不正确,tomcat 启动会发生异常。

7. 在 Tomcat_home/conf/Catalina 中,建立两个目录 testa ,testb,表示两个虚拟主机,目录名称要和虚拟主机的名字一致( tomcat 启动的时候,可以根据 server.xml 中设定的虚拟主机的名字自动建立相应的文件夹,但是有的时候不会,需要检查);

在 testa 目录中,建立两个文件 testa.xml, a.xml(文件的名字随意,为了便于记忆,和应用名相同)

在 testb 目录中,建立 testb.xml

注:

testa.xml , a.xml , testb.xml 文件内容见示例文件,注意不同的目录中的文件内容,要对应相应当主机;

三个文件的内容也可以加到 server.xml 中,相应的虚拟主机下面,单独的文件,便于管理。

注:

步骤 6,7是 tomcat 的虚拟主机的设置方法,可以独立使用,和 apache 的设置没有关系;

在虚拟主机中加一个应用,在相应的文件夹下面声明一个配置文件即可;

如果和 apache 联合应用,两者的虚拟主机的设置要一致。

8. 测试

访问

http://testa

http://testa/a/

http://testb

********************

*apache 和 PHP 结合*

********************

http://www.php.net/ 下载 php-5.0.0-Win32.zip

解压缩其内容到 D:\www\php5

1. 找到 php5 目录下的 php.ini-dist 重命名为 php.ini 并复制到 C:\WINDOWS 目录下;

2. 找到 php5 目录下的 php5ts.dll,libmysql.dll 并复制到 C:\windows\system 目录下;

//libmysql.dll 用以支持 mysql

3. 找到DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php index.php3 ;

4. LoadModule php5_module D:/www/php5/php5apache2.dll //加入模块

5. 查找 #AddEncoding x-gzip .gz .tgz ,在下面的行中加入 AddType application/x-httpd-php .php .phtml .php3 .php4

//即增加解析文件类型为php.phtml.php3.php4

6. 测试

建立一个文本文件,info.php, 加入一句 <?php phpinfo(); ?>

浏览 http://yourhost/info.php ,如果看见 php 信息页面,php 安装成功。

****************************

*Apache Tomcat PHP 综合测试*

****************************

如果上述步骤都完成了,三者结合即完成。

*****************

*PHP mysql 结合 *

*****************

安装到 D:\www\mysql4.1 中(可以象管理 apache 一样来控制其启动)

1. 如果 php 的版本为 php5 ,需要把 php 安装目录中的 libmysql.dll 和 libmysqli.dll 拷贝到 windows/system32 下;

2. 进入C:\WINDOWS 打开 php.ini

2.1 找到extension_dir = "./" 改为extension_dir = "D:/www/php5/ext"

//实际的 php 目录

2.2 找到 ;extension=php_mysql.dll

将';'去掉改为

extension=php_mysql.dll

2.3 找到 ;session.save_path = "/tmp"

将';'去掉 设置你保存session的目录,如

session.save_path = " D:/www/php5/session_temp";

3 php.ini 的一些高级配置

3.1 php.ini 配置

register_globals = On

有些程序需要该项支持,否则无法上传文件

******

*附录*

******

*******

* F&Q *

*******

1. localhost 放在 httpd.conf 中定义的 DocumentRoot 指定的目录中的 jsp 文件怎么不能访问?

apache 默认 locahost 根目录是 httpd.conf 中定义的 DocumentRoot 指定的目录, tomcat 默认得 localhost 根目录是 tomcat_home/webapps/ROOT

apache 转发到 tomcat 的请求,都会到 ROOT 目录中,如

访问 http://localhost/index.html 会到 DocumentRoot 中寻找 index.html

访问 http://localhost/index.jsp apache 会把请求转发到 ROOT 中寻找

2. 如何在本地机器上面测试不同域名的虚拟主机?

在 windows 下,有个 hosts 文件,当浏览器进行域名解析的时候,首先到该文件中查找,如果找到记录,直接返回,找不到再到系统定义的域名服务上面去找。利用 windows 这个特性,在该文件中加入如下内容:

# All below are added by jh,only for test virtualhost

127.0.0.1 testa

127.0.0.1 testb

就可以进行虚拟主机测试了。

hosts 文件在 C:\WINDOWS\system32\drivers\etc 中,没有扩展名

********************

*主要参考文章和书目*

********************

http://boot.blogchina.com/835336.html

http://www.nihaoblog.com/15_11248.html

http://dev.csdn.net/develop/article/45/article/45/45858.shtm

Tomcat 与 Java Web 开发技术详解 孙卫琴 李洪成 电子工业出版社 2004

附加文件

********************************

mod_jk.conf

# The config document is at the url

# http://jakarta.apache.org/tomcat/connectors-doc/config/apache.html

#

# It is suitable for JK 1.2.4,uesed with workers.properties file write by H819.

# Rewrite the parameters as your application

#

# Author H819

# 2005.08.19

#JkMountFile is a new directive available from JK 1.2.9 version. It is used for dynamic updates of mount points at runtime. When the mount file is changed, JK will reload it's content.

# Load mount points

#JkMountFile conf/uriworkermap.properties

# Load mod_jk module

LoadModule jk_module modules/mod_jk.so

# JkWorkersFile specify the location where mod_jk will find the workers definitions.

JkWorkersFile conf/workers.properties

# JkLogFile specify the location where mod_jk is going to place its log file.

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

# info log will contains standard mod_jk activity (default).

# error log will contains also error reports.

# debug log will contains all informations on mod_jk activity

JkLogLevel info

# JkLogStampFormat will configure the date/time format found on mod_jk logfile.

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

# send all requests ending in .jsp to worker1

JkMount /*.jsp worker1

# send all requests ending servlet/* to worker1

JkMount /servlet/* worker1

#### examples

# Send servlet for context /examples to worker named worker1

#JkMount /examples/servlet/* worker1

# send all requests jsp requests to files located in /otherworker will go worker2

# JkMount /otherworker/*.jsp worker2

# send all requests ending in .do to worker1

#JkMount /*.do worker1

*******************************

VirtualHost.conf

# VirtualHost config

#

# visit url http://httpd.apache.org/docs/2.0/vhosts/ for details.

#

# Rewrite the parameters as your application.

# DocumentRoot define: If your application files are located in DocumentRoot (httpd.conf defined),your can use relative path , otherwise you should use absolute path.

# "NameVirtualHost *:80" should not be commented,otherwise only one VirtualHost works.

#

# Author H819

# 2005.08.19

NameVirtualHost *:80

<VirtualHost *:80>

# visit http://testa

ServerAdmin webmaster@testa

DocumentRoot E:/tomcat-5.0.18/webapps/servlets-examples

ServerName testa

ErrorLog logs/testa.com-error_log

CustomLog logs/testa.com-access_log common

# visit http://testa/a/

Alias /a/ "E:/tomcat-5.0.18/webapps/jsp-examples/"

<Directory "E:/tomcat-5.0.18/webapps/jsp-examples">

Options Indexes FollowSymlinks MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost *:80>

# visit http://testb

ServerAdmin webmaster@testb

DocumentRoot E:/ApacheGroup/Apache2/DocumentRoot

ServerName testb

ErrorLog logs/testb.com-error_log

CustomLog logs/testb.com-access_log common

</VirtualHost>

******************************

workers.properties

# The workers.properties file config document is at the url

# http://jakarta.apache.org/tomcat/connectors-doc/howto/workers.html

# http://jakarta.apache.org/tomcat/connectors-doc/config/workers.html

#

# It is suitable for JK 1.2.4

# Rewrite the parameters as your application

#

# Author H819

# 2005.08.19

# the list of workers

worker.list=worker1

# Worker connection pool maintain timeout in seconds.This feature has been added in jk 1.2.13

worker.maintain=60

# Set properties for worker1

# Defines a worker named "worker1" that uses the ajpv13 protocol to forward requests to a Tomcat process.

# Ajp13 is now the only out-process protocol supported by Tomcat 4.0.x, 4.1.x and 5.

worker.worker1.type=ajp13

# worker "worker1" will talk to Tomcat listening on machine localhost (it can be www2.x.com) at port 8009

# Notes: In the ajpv13 protocol, the default port is 8009

worker.worker1.host=localhost

worker.worker1.port=8009

#

# for all detail configurable items , please refer to http://jakarta.apache.org/tomcat/connectors-doc/config/workers.html

# This directive should be used when you have a firewall between your webserver and the Tomcat engine, who tend to drop inactive connections.

worker.worker1.socket_keepalive=False

# worker "worker1" use up to 10 sockets, which will stay no more than 10mn in cache

worker.worker1.cachesize=10

worker.worker1.cache_timeout=600

# worker "worker1" ask operating system to send KEEP-ALIVE signal on the connection

worker.worker1.socket_keepalive=1

# worker "worker1" want ajp13 connection to be dropped after 5mn (recycle)

worker.worker1.recycle_timeout=300

# load balancer .please refer to http://jakarta.apache.org/tomcat/connectors-doc/config/workers.html

***********************

testa.xml

<!--

# This file should be in Tomcat_home/conf/Catalina/testa/ path.

#

# visit http://testa

#

# Author H819

# 2005.08.19

-->

<Context path="/" docBase="E:/tomcat-5.0.18/webapps/servlets-examples"

debug="0" privileged="true">

</Context>

***************************

a.xml

<!--

# This file should be in Tomcat_home/conf/Catalina/testa/ path.

#

# visit http://testa/a/

#

# Author H819

# 2005.08.19

-->

<Context path="/a" docBase="E:/tomcat-5.0.18/webapps/jsp-examples"

debug="0" privileged="true">

</Context>

***************************

testb.xml

<!--

# This file should be in Tomcat_home/conf/Catalina/testb/ path.

#

# visit http://testb

#

# Author H819

# 2005.08.19

-->

<Context path="/" docBase="E:/ApacheGroup/Apache2/DocumentRoot"

debug="0" privileged="true">

</Context>

*****************************

讨论请到

http://108studio.91x.net/BBS/read.php?fid=3&tid=27&fpage=1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有