2007年12月6日星期四

Windows XP 下安装整合Apache2+Mysql5+Tomcat5.5+PHP5+JSP+ASP


Windows XP 下安装整合Apache2+Mysql5+Tomcat5.5+PHP5+JSP+ASP
软件:
Apache(2.2.4):http://httpd.apache.org/download.cgi
PHP(5.2.3,zip包):http://www.php.net/downloads.php
MySQL(5.0.41):http://dev.mysql.com/downloads/
phpMyAdmin(2.10.2):http://www.phpmyadmin.net/home_page/downloads.php
Tomcat5.5 http://tomcat.apache.org/...


1. 安装PHP5,路径可以自己调整,记得在用到路径时使用自己设置的路径就没问题。
直接解压压缩包到c:\php
更改环境变量:我的电脑属性》高级》环境变量》双击"Path",追加c:\php;c:\php\ext


2.安装Apache2.2
双击msi安装包,domain和server可以用自己本地的ip或者localhost


配置Apache
用记事本打开%apache-root%/conf/httpd.conf,找到:
# LoadModule foo_module modules/mod_foo.so
追加:
LoadFile "c:/php/php5ts.dll"
LoadFile "c:/php/libmysql.dll"
PHPIniDir "c:/php"
LoadModule php5_module "c:/php/php5apache2_2.dll"


找到:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
追加:
AddType application/x-httpd-php .php
这样就可以支持php5和mysql


接下来更改网站目录:
DocumentRoot "c:/wwwroot"
更改为你的apache的web根目录,我的是D:/develop/apache2/htdocs
<Directory "D:/develop/apache2/htdocs">


更改默认页面:
DirectoryIndex index.html index.php (这里可以追加一堆你想要的,什么defult.hml,index.jsp...etc)


暂时没什么可以更改的了,稍后整合还要修改。


php的配置


把php.ini-dist复制一份,改名为 php.ini然后修改:


在Data Handling下找到post_max_size = 8M
这是PHP将接受的POST数据最大大小,可更改为20M。


在Paths and Directories下找到extension_dir=
这里设置的是PHP搜索扩展库的位置,将其路径设为extensions文件夹的位置,即改成:
extension_dir="c:\php\ext"


在File Uploads下找到upload_max_filesize = 2M,允许上传的的最大文件大小
可更改为20M。


Dynamic Extensions这里是PHP扩展设置部分,列出了PHP所有的可支持扩展,前面都加了分号注释,表示目前PHP配置不支持扩展,我们可以将分号去掉让PHP支持该扩展下面列出的是几个常用且较实用的PHP扩展把下面几句前面的分号去掉
;extension=php_mbstring.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_filepro.dll
;extension=php_gd2.dll
;extension=php_imap.dll
;extension=php_mysql.dll


好了一切准备就绪!
修改好之后COPY php.ini一份到C:\Windows下


3.重起APACHE,在主目录下新建一个记事本文件test在里面输入
<?php
phpinfo();
?>
保存后修改后缀名为PHP。在浏览器输入http://127.0.0.1/test.php是不是看到PHP版本信息,没错,这样PHP的配置就完成了。



4. 安装MYSQL5。
第一步:双击.exe文件出现的第一个需要选择的对话框是Setup Type 也就是
安装种类,这里我们可以选择Custom,根据自己的需要来安装组件和配置安装路径
点击Next,右键点击对话框出现几个硬盘形状的图标,根据自己的需要选择安装组件,
点击窗口右下的Change按钮更改安装路径的,设置好后,点击Next开始安装安装到最
后会有如下一个对话框在这里的三个选项分别是:
1:如果你没有MYSQL.com帐户,选第一个,创造一个新的免费的MYSQL.com帐户
2:如果你有MYSQL.com帐户,选第二个,填入已经注册好的邮箱名和密码(最好跳过,懒得麻烦,又没什么大用处)
3:跳过此步骤
我们选第一个


接下来会一次出现三个对话框,在三个对话框中有* 号的部分是必须要填的,
按顺序分别是邮箱名,密码,确认密码;first name ,last name;邮政编码,
国家,省名。国家名选china,省名选other or N/A即可4.1.x和4.0.x系列版
本很大一个区别就是在安装完毕后不是运行 mysql文件夹下面的winmysqladmin.exe来
启动服务器后设置选项,而是有一个设置的过程。


第二步:设置MYSQL


首先你会看到这样的一个窗口,这里有两个选项,分别是详细配置和标准配置,
小型应用选第二项就可以了点击Next后出现下面的对话框,这里是重要的,一定
要在下拉菜单里选择MySQL41,否则不能正常启动,下面的选项是是否应用命令行,
最好选上点击Next后设置数据库密码的对话框,中间偏右和下面的选项分别是是否
允许远程控制和是否允许匿名帐号登入,为了安全,不要选择好了,点击Next后出
现最后的对话框,点击Execute按钮数据库服务器便启动了,依次出现四个对号后
点击Finish结束安装


5.装上PHPMYADMIN
安装很简单,解压缩即可,放在...yourapacheinstallationpath/htdocs/下,通过web访问,http://localhost/phpmyadmin/
如果遇到如下提示,do not worry.
#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
在开始菜单找到刚刚安装的MYSQL命令行工具,输入root的密码后键入如下的字样:
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('刚才设置的ROOT密码')
-> WHERE Host = 'localhost' AND User = 'root';
mysql> FLUSH PRIVILEGES;(注意FLUSH后有空格)
然后浏览"http://localhost/phpmyadmin"
OH YEAH! 测试成功!


6。安装Tomcat5.5
好了,以上安装好了Apache2+PHP5+Mysql5.下面接着要安装Tomcat5来支持JSP啦。
tomcat需要JAVA支持,所以要先安装JDK1.5,(JDK1.6太新了,最好不要用,不过你可以尝试,呵呵),从SUN网站上下载安装即可,要把路径写入环境变量
这个就不要我说了吧。稍微用过Java的地球人的知道,大家都是从"Hello World!"过来的。
从apache2上下载tomcat5.5的windows安装文件,文件名为"apache-tomcat-5.5.20.exe" ,一路安装,应该没什么问题。
默认端口是8080,不必修改。安装好之后启动tomcat5,在browser下访问http://localhost:8080
我猜你一定看到熟悉的tomcat界面了。


7。整合apache2+tomcat5
不要采用传统的JK模块进行整合了,用apache2自带的模块很不错的
因为apache2.2.4采用mod_proxy连接apache与tomcat,所以配置非常简单。
这里我们只需要改动...yourpath\Apache2.2\conf\ 下的httpd.conf的两个地方即可:
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
去掉"#"
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
然后加上如下两行,意思是将apache2/htdocs/下的所有文件转发给JSP处理
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
或许这并不是你想要的。如果你的WEB服务主要用来出来JSP,那么当然你可以这样,加入如下这句
ProxyPass /img ! img是htdocs下的目录名,你可以修改为你自己的
意思img目录下的文件不转发给tomcat处理,由apache+php自己处理。
另外,还要修改tomcat的server.xml配置文件,使tomcat端口和根目录指向htdocs.有多种方法修改指向,一是在server.xml中写明
而是配置conf\Catalina\localhost\下的ROOT,文件,在这里我修改ROOT文件为:
<?xml version='1.0' encoding='utf-8'?>
<Context path="" reloadable="ture" docBase="D:\Develop\Apache2.2\htdocs\jsp\" >
</Context>

为了方便大家,我也贴出我的server.xml文件。


<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="7443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="conf/tomcat.keystore" keystorePass="pea4ch"/>
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
</Server>

我做得比较整洁。并且有使用SSL配https,
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="conf/tomcat.keystore" keystorePass="pea4ch"/>
这段是可以忽略的。
---------------------××××××××××××××××××××××××××××××××----------------------------

我自己是这样的。因为我使用了apache2的虚拟主机,
两个虚拟主机
www.zhuheng.com 的根目录在 D:\Develop\Apache2.2\htdocs
www.zhuheng.org 的根目录在 G:\WWW 下
我的JSP文件放在D:\Develop\Apache2.2\htdocs\jsp下。
于是我在httpd-vhosts文件中这样设置:
#henry added @2007-11-26 for virtual hosts test
<VirtualHost *:80>
ServerName www.zhuheng.com
DocumentRoot "D:/Develop/Apache2.2/htdocs"
ProxyPass /jsp/ ajp://localhost:8009/
ProxyPassReverse /jsp/ ajp://localhost:8009/
</VirtualHost>
<VirtualHost *:80>
ServerName www.zhuheng.org
DocumentRoot "H:/www"
</VirtualHost>

-------------
解释:
ProxyPass /jsp/ ajp://localhost:8009/
ProxyPassReverse /jsp/ ajp://localhost:8009/
这两句的意思是把D:\Develop\Apache2.2\htdocs\jsp的文件交给tomcat解析。成功啦!


当然之前要修改httpd.conf,打开load proxy mod的功能:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

就是这样啦。也还蛮简单的。


8。整合ASP
也是用apache下面的一个模块,叫mod_aspdotnet 2.0.0
我的安装过程如下:
下载安装windows asp.net framework2.0
URL:http://www.microsoft.com/downloa ... &DisplayLang=en,选择网络类型下载
默认安装即可,缺省安装路径是:C:\WINDOWS\Microsoft.NET
http://sourceforge.net/project/d ... r2.msi&50319130
下载apache2支持ASP的模块mod_aspdotnet 2.0.0
默认安装在apache2的路径下。
安装完成之后,修改httpd.conf
在httpd.conf最后追加如下内容:
#asp.net
LoadModule aspdotnet_module "modules/mod_aspdotnet.so"
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
<IfModule mod_aspdotnet.cpp>
# Mount the ASP.NET example application
AspNetMount /active/ "D:/ASP"
# Map all requests for /active to the application files
Alias /active "D:/ASP"
# Allow asp.net scripts to be executed in the active example
<Directory "D:/ASP">
Options FollowSymlinks ExecCGI
Order allow,deny
Allow from all
DirectoryIndex Default.htm Default.aspx
</Directory>
# For all virtual ASP.NET webs, we need the aspnet_client files
# to serve the client-side helper scripts.
AliasMatch /aspnet_client/system_web/(d+)_(d+)_(d+)_(d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles/$4"
<Directory "C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles">
Options FollowSymlinks
Order allow,deny
Allow from all
</Directory>
</IfModule>


-------×××××××××××××××××××××××××-------------------------
因为我使用了虚拟主机,所以我又在httpd-vhost.conf文件中添加了如下内容:
<VirtualHost *:80>
ServerName www.zhuheng.com
DocumentRoot "D:/Develop/Apache2.2/htdocs"
ProxyPass /jsp/ ajp://localhost:8009/
ProxyPassReverse /jsp/ ajp://localhost:8009/
<IfModule mod_aspdotnet.cpp>
AspNetMount /active/ "D:/ASP"
Alias /active "D:/ASP"
<Directory "D:/ASP">
Options FollowSymlinks ExecCGI
Order allow,deny
Allow from all
DirectoryIndex Default.htm Default.aspx index.htm index.html
</Directory>
<Directory "C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles">
Options FollowSymlinks
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>

-------×××××××××××××××××××××××××-------------------------
解释:
在apache2/htdocs下建一个active的空目录,然后通过【AspNetMount /active/ "D:/ASP"】指向到ASP的工作路径,
当然你可以修改为你自己的。active也是可以自己随意命名的,只是起一个转向作用。


写到这里基本上几完成了,在整合过程中,你需要不断重启apache,用"net stop|start apache2"命令,你也可以不断在控制台中使用"apache2\bin\httpd.exe -S" 这个命令,检查你的的httpd.conf配置文件
是否有错误。它会给你很好的提示。最后我贴出我的httpd.conf,httpd-vhosts.conf,server.xml,ROOT.xml ,希望对你有帮助。更多详情,请访问我的个人网站http://www.2008kid.cn:8888
httpd.conf
###########below is my httpd.conf##############


ThreadsPerChild 250
MaxRequestsPerChild 0
ServerRoot "D:/Develop/Apache2.2"
Listen 80
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule php5_module "D:\Develop\PHP5\php5apache2_2.dll"
PHPIniDir "D:\Develop\PHP5\"
LoadFile "D:\Develop\PHP5\libmysql.dll"
LoadFile "D:\Develop\PHP5\libmcrypt.dll"
LoadFile "D:\Develop\PHP5\php5ts.dll"
ServerAdmin zh1229@gmail.com
ServerName www.zhuheng.com:80
DocumentRoot "D:/Develop/Apache2.2/htdocs"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
Satisfy all
</Directory>
<Directory "D:/Develop/Apache2.2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php index.jsp default.jsp default.php default.aspx
</IfModule>
#2007-11-26 henry 整合apache2.2.4和tomcat5.5 ,不用jk2模块
#<IfModule mod_proxy.c>
#ProxyRequests On
#ProxyVia On
#<Proxy /*>  
#Order deny,allow
#Deny from all
#Allow from localhost
#</Proxy>
#ProxyPass /img ! 
#ProxyPass / http://localhost:8009/
#ProxyPassReverse / http://localhost:8009/
#</IfModule>


<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
ErrorLog logs/error.log
LogLevel warn


<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog logs/access.log common
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "D:/Develop/Apache2.2/cgi-bin/"
</IfModule>
<Directory "D:/Develop/Apache2.2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain


<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
Handler cgi-script .cgi
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html
AddType application/x-httpd-php .htm
</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>


#asp.net
LoadModule aspdotnet_module "modules/mod_aspdotnet.so"
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
<IfModule mod_aspdotnet.cpp>
Mount the ASP.NET example application
AspNetMount /active/ "D:/ASP"
Alias /active "D:/ASP"
<Directory "D:/ASP">
Options FollowSymlinks ExecCGI
Order allow,deny
Allow from all
DirectoryIndex Default.htm Default.aspx
</Directory>
AliasMatch /aspnet_client/system_web/(d+)_(d+)_(d+)_(d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles/$4"
<Directory "C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles">
Options FollowSymlinks
Order allow,deny
Allow from all
</Directory>
</IfModule>


2.httpd-vhosts.conf
################below is my httpd-vhosts.con#################
<VirtualHost *:80>
ServerName www.zhuheng.com
DocumentRoot "D:/Develop/Apache2.2/htdocs"
ProxyPass /jsp/ ajp://localhost:8009/
ProxyPassReverse /jsp/ ajp://localhost:8009/
<IfModule mod_aspdotnet.cpp>
AspNetMount /active/ "D:/ASP"
Alias /active "D:/ASP"
<Directory "D:/ASP">
Options FollowSymlinks ExecCGI
Order allow,deny
Allow from all
DirectoryIndex Default.htm Default.aspx index.htm index.html
</Directory>
<Directory "C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles">
Options FollowSymlinks
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>
<VirtualHost *:80>
ServerName www.zhuheng.org
DocumentRoot "H:/www"
</VirtualHost>


server.xml & ROOT.xml文件已经贴过了


That's ALL. Good Luck to you. more information, please browse my personal website, http://www.2008kid.cn:8888.