Heim >Backend-Entwicklung >PHP-Tutorial >XP搭建Apache+Tomcat+JSP+PHP+MYSQL环境教程
一、环境说明
1、Window XP
2、apache_2.2.11-win32-x86-no_ssl.msihttp://httpd.apache.org/
3、Mod_jk-1.2.28-httpd-2.2.3.sohttp://tomcat.apache.org/download-connectors.cgi
4、apache-tomcat-6.0.18.ziphttp://archive.apache.org/dist/tomcat/tomcat-6/v6.0.18/src/
5、mysql-5.5.15-win32.msihttp://www.mysql.com/
6、php-5.4.35-Win32-VC9-x86http://windows.php.net/download/#php-5.4-ts-VC9-x86
7、jdk-7-ea-bin-b134-windows-i586-17_mar_2011
http://www.oracle.com/technetwork/java/javase/downloads/index.html
打包下载地址:
http://download.csdn.net/detail/itas109/8226595
我的程序分别安装到
D:\webserver\Apache2.2
D:\webserver\PHP5
D:\webserver\Tapache-tomcat-6.0.18
二、程序安装
Ⅰ、Apache安装
注:本例只截取需要注意的截图,其它默认则不显示。
1.服务器信息可以按照默认配置,如果服务器的80端口没被其他服务器程序占据。可选“for All Users,on Port 80,as a Service?Recommended.”如果仅为当前用户使用,使用8080端口,手动启动,选择“only for the Current User, onPort 8080, when started Manually.”。端口号是可以通过配置文件进行修改的。
2.“Typical”为默认安装,“Custom”为用户自定义安装。
可以选择“Change”来更改默认安装路径,本例按默认安装。
注:如果你安装后服务管理列表中没有出现apache的服务项就说明在安装过程中出现了错误,这时候可以手动进行安装。
使用cmd进入D:\webserver\Apache2.2\bin这是我本机安装的目录, 并执行httpd -k install命令,提示成功后即可在服务管理列表中看到apache服务。
3.运行
如果上面选得端口是8080,就输入http://localhost:8080/。
如果是80端口,就输入http://localhost/。
Ⅱ、MySQL安装
1.根据需要修改路径,默认安装即可,主要是MySQL配置。
2.选择配置方式:“DetailedConfiguration(手动精确配置)”、”Standard Configuration(标准配置)”,选择“Detailed Configuration”,
3. 选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”,一般选择“Server Machine”。 可根据实际情况进行选择。
4. 选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控,记数用,对MySAM数据类型的支持仅限于non-transactional)”,选择“Transactional Database Only”,本例选择的是通用多功能型。
5. 对InnoDB Tablespace进行配置,就是为InnoDB数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了。使用默认位置。
6. 选择网站的一半mysql访问量,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”,选择“Online Transaction Processing(OLTP)”。根据自己需要选择,这里选择手动设置。
7. 是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库,选择“Enable TCP/IP Networking”是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库,选择“Enable TCP/IP Networking”。
8. 设置数据库语言编码,“Standard Character Set”为西文编码、“Best SupportFor Multilingualism”为RTF-8编码、“ManualSelected Default Character Set/Collation”为手动设置编码,这里选择utf8。
9.”Install As Windows Service”选择安装MySql服务,可自定义服务的名称。
“Include Bin Directory in Windows PATH”是在机器上添加MySql的环境变量。
10. 选择“Modify Security Settings”,可根据实际要求勾选上“Enableroot access from remote machines”以便能够从其他机器上访问。
11.完成配置后点击“Execute”执行配置即可。
MySql安装操作已完成。
测试MySql
Ⅲ、PHP安装
1、将E:\Program Files\PHP中的php.ini-dist复制为php.ini。
如果没有php.ini-dist文件可使用php.ini-development文件并更改名称为php.ini(留个备份,好习惯)
php.ini-development 开发用的
php.ini-produciton 生产机用的
2、打开D:\webserver\PHP5\php.ini修改下列语句行:
3、extension_dir = "D:\webserver\PHP5\ext"
4、default_charset="utf-8"
5、将extension=php_exif.dll、php_gd2.dll、php_imap.dll、php_mbstring.dll、php_mcrypt.dll、php_mime_magic.dll、php_mysql.dll、php_mysqli.dll、php_pdf.dll前面的分号“;”去掉。
6、在【环境变量】的【Path】中加入:; D:\webserver\PHP5; D:\webserver\PHP5\ext两个值。
7、其它配置
a、在写php程序中有时会出现这样的警告:PHP Warning: date(): It is not safe to rely on the system's timezonesettings. You are *required* to use the date.timezone setting or thedate_default_timezone_set() function. In case you used any of those methods andyou are still getting this warning, you most likely misspelled the timezoneidentifier. We selected 'UTC' for '8.0/no DST' instead in D:\xxx\xxx\xxx.php online 10 。这是因为PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入格林威治标准时间和北京时间大概差8个小时左右,我们可以按照下面的方法解决:
①在页头使用date_default_timezone_set()设置我的默认时区为北京时间,即就可以了。
②在php.ini中设置date.timezone的值为PRC,设置好以后的为:date.timezone=PRC,同时取消这一行代码的注释,即去掉前面的分号就可以了。
8、httpd.conf的配置:
httpd.conf文件的位置:D:\webserver\Apache2.2\conf
这是我本机安装的目录。注:网上有好多教程说需要把php目录下的某某dll文件拷贝到system32下,其实这是不必要的,只需要在httpd.conf中加载php模块即可。
添加并修改下列语句行:
LoadModule php5_module "E:/PHP5/php5apache2_2.dll" PHPIniDir "E:/Program Files/PHP5"AddType application/x-httpd-php .php.phtml
注意:
① 如果你在链接MySql数据库的时候出现
Fatal error: Call to undefinedfunction mysql_connect() in C:\xxxxx.php
那就是因为你没有增加此属性。
② 如果php安装目录里没有php5apache2_2.dll,一定是下载的版本不对。
应该是php-5.4.35-Win32-VC9-x86
默认路径和默认index可以根据自己需要修改
注意:Apache Windows配置文件httpd.conf中要求的目录分隔符是用斜线”/”,而PHP Windows配置文件php.ini中书写目录时要求的是反斜线”\”,不要弄混了。
配置测试,在指定的目录(默认为htdocs)中创建index.php 打印php配置信息。
代码为
<?php phpinfo();?>
Ⅳ、tomcat与Apache整合
1、为什么需要整合?
整合的最主要原因是为了在现有的硬件条件下提供最大的负载。
如果单独使用Tomcat做JSP服务器,在工作效率上会存在问题,Tomcat处理静态HTML的能力不如Apache,并且所能承受的最大并发连接数也有一定的限制;
在测试中,当并发连接较多时,Tomcat就会处于“僵死”状态,对后继的请求连接失去响应。所以现在提出一个“整合”解决方案:将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache这个web
server处理。Apache与Tomcat各司其职,那么服务器的整体效率就能够得到提升。
因为我们做网站的时候不光需要PHP,还会用到JSP等,也需要tomcat与Apache整合。
2、java环境配置
Jsp运行必须呀java的支持
安装包正常安装,完成后进行环境变量配置。
在”我的电脑”的环境变量中,添加JAVA系统变量;具体操作是在“系统变量”区域新建变量名为“JAVA_HOME”的变量,变量值为JDK的安装路径,如“D:\Program Files\Java\jdk1.7.0”;接着将JAVA_HOME添加到系统变量Path之中,方法是编辑打开系统变量Path,在原有的变量值前添加双引号内的代码“%JAVA_HOME%/bin;”,其中的分号起分隔作用,不可缺少。
在cmd中运行javac,成功安装会出现下图信息。
3、tomcat环境配置
我们采用的是免安装版的tomcat,直接解压到D:\webserver。
在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在D:\webserver\apache-tomcat-6.0.18):
CATALINA_HOME: D:\webserver\apache-tomcat-6.0.18
CATALINA_BASE: D:\webserver\apache-tomcat-6.0.18
TOMCAT_HOME: D:\webserver\apache-tomcat-6.0.18
接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
4、Apache和tomcat整合
a. 将mod_jk-1.2.28-httpd-2.2.3.so复制到D:\webserver\Apache2.2\modules(我的apache安装目录)
b. 新建 workers.properties 文件,内容如下:
workers.tomcat_home=D:\webserver\apache-tomcat-6.0.18#让mod_jk模块知道Tomcat的位置workers.java_home=D:\ProgramFiles\Java\jdk1.7.0 #让mod_jk模块知道jre的位置 worker.list=ajp13 #模块版本worker.ajp13.port=8009 #工作端口,若没占用则不用修改worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改worker.ajp13.type=ajp13 #类型worker.ajp13.lbfactor=1 #代理数,不用修改
拷贝到D:\webserver\apache-tomcat-6.0.18\conf\jk下,这是我tomcat的安装目录。
c. 在apache的httpd.conf的内容底部添加配置:
#tomcatLoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.soJkWorkersFile"D:/webserver/apache-tomcat-6.0.18/conf/jk/workers.properties"JkLogFile"D:/webserver/apache-tomcat-6.0.18/logs/mod_jk2.log"JkLogLevel info <virtualhost localhost>ServerAdmin @hbu.cn#DocumentRoot D:/ServerName localhostDirectoryIndex index.html index.htm index.jspErrorLog logs/shsc-error_log.txtCustomLog logs/shsc-access_log.txt commonJkMount /servlet/* ajp13JkMount /*.jsp ajp13JkMount /*.do ajp13</virtualhost>
安全性,以及相对于tomcat而言快速的静态页处理速度,也可以提高网站的负载能力,前提是网站的静态页比较多,例如做了静态化。
d.apache和tomcat目录统一
这里统一为tomcat的目录
在D:\webserver\Apache2.2\conf下打开httpd.conf
找到DocumentRoot和Directory设置为tomcat的默认路径
5、tomcat性能优化
a.线程池优化
为了提高网站的访问性能,我们往往会在服务器端选择合适的部署环境。最简单的就是一个tomcat了,但是在高并发的情况下,非常
容易当机。因为tomcat配置的不优化。我最早也没有注意这些细节,因为我知道一个项目的性能不是通过搭建环境体现的,而是算法的高效,代码实
现的合理性,以及数据库的合理使用,优化技术的使用等等。不过通过优化部署环境应该说是最直接的一种方案了。目前我知道的一种tomcat优化
方案是使用tomcat线程池。只需要在server.xml中改改配置就可以了。核心配置代码:
<executor name="tomcatThreadPool" nameprefix="catalina-exec-" maxthreads="1000" minsparethreads="50" maxidletime="600000"></executor> <!-- A"Connector" represents an endpoint by which requests are received and responses arereturned. Documentation at : Java HTTPConnector: /docs/config/http.html (blocking & non-blocking) Java AJP Connector: /docs/config/ajp.html APR (HTTP/AJP)Connector: /docs/apr.html Define a non-SSLHTTP/1.1 Connector on port 8080 --> <!-- <Connectorport="8086" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> --> <!-- A"Connector" using the shared thread pool--> <connectorexecutor port="8080" protocol="HTTP/1.1" connectiontimeout="20000" redirectport="8443"></connectorexecutor>
参考文献:
1、PHP环境(apache,PHP,Mysql)详细配置方法
http://blog.csdn.net/jt521xlg/article/details/7533477
2、Apache2.2.11+Tomcat6.0.18整合与实战笔记、Tomcat的优化交流
http://www.cnblogs.com/shiyangxt/archive/2009/08/03/1537842.html
3、在windows XP下搭建Apache+Tomcat+JSP+PHP+MYSQL环境
http://blog.csdn.net/annkie/article/details/7588033
4、Apache与Tomcat集群配置
http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html
5、tomcat环境变量的配置
http://www.cnblogs.com/mingforyou/archive/2012/04/04/2432025.html
6、Windows环境配置Apache+Mysql+PHP
http://www.cnblogs.com/homezzm/archive/2012/08/01/2618062.html