Windows服务器,在不影响数据的前提下,抛弃IIS,采用Apache

该日志由 Kevin 发表于 2007, November 15, 3:52 PM

windows 2003的服务器,一直采用iis+PHP+mysql,虽然Linux+Apache才是PHP的元配,但是因为我不熟Linux,而且IIS从我学生时代用到现在,可谓驾轻就熟,所以沿用IIS+PHP+Mysql这种似乎有些奇怪的组合,虽然一直也有想过换用Apache,但一直没有太好的”理由“,以至于下不了决心,直到这几天因为ISAPI下的Rewrite缺憾而被烦死,才决定改用Apache,希望这个选择是对的!

之前虽然有装过Apache,但都是“点到即止”,今天第一次应用,发现一些细节上的问题,记录一下,以待后用:

之前的服务器环境:Windows 2003+IIS6+PHP5+Mysql5

很久之前看过一些资料,发现IIS是可以跟Apache“和平相处”的,而且可以利用Apache强大的rewrite功能实现“共用”80端口,但是觉得有些“变态”,放弃,就用Apache就好了,反正现在几乎都不碰ASP了。

禁用IIS,安装Apache:
因为服务器上已经有几个网站在运行,所以我要保证在不影响网站数据的情况下用Apache代替IIS,为了保险起见,不删除IIS(以防万一,必要时暂时用回IIS),在服务里直接禁用了IIS的服务项,这样就解决了安装Apache时端口冲突的问题。。。安装Apache2.2,除了Window本身,我不允许其它任何程序安装在系统盘,然后自定义了Apache的安装路径,比如e:\Apache2.2,一切顺利,浏览localhost,见到了“It works!”,安装Apache成功。

配置Apache 2.2来运行PHP5:
打开httpd.conf,找到:

XML/HTML代码
  1. <IfModule dir_module>  
  2.     DirectoryIndex index.html   
  3. </IfModule>  

替换为:

XML/HTML代码
  1. <IfModule dir_module>  
  2.     DirectoryIndex index.html index.php   
  3. </IfModule>  

当然,这只是一个例子,可以添加更多的默认页。

再查找:

XML/HTML代码
  1.     #AddType text/html .shtml   
  2.     #AddOutputFilter INCLUDES .shtml  

在这下面增加以下内容:

XML/HTML代码
  1. AddType application/x-httpd-php .php  

接下来这一步,是要允许Apache将PHP程序作为模块来运行!

继续查找:

XML/HTML代码
  1. #LoadModule ssl_module modules/mod_ssl.so  

在这行下面添加:

XML/HTML代码
  1. LoadFile "E:/PHP/libmysql.dll"   
  2. LoadModule php5_module "E:/PHP/php5apache2_2.dll"   
  3. PHPIniDir "E:/PHP/php.ini"  

在这一步,走了好多弯路,一开始我在网上搜过到的都是类似下面这样的描述:

XML/HTML代码
  1. 在Httpd.conf中找到LoadModule小节,自己添加下面这一行:    
  2.   
  3. LoadModule php4_module “c:/php/php4apache2.dll”   
  4.     
  5. 如果你出于某种原因而需要在CGI模式中运行PHP程序(使用Php.exe),请将上面这一行变成注释,并在Httpd.conf中添加下面这些行:   
  6.     
  7. ScriptAlias /php/ "c:/php/"   
  8. Action application/x-httpd-php "/php/php.exe"  

按网上的这个到处被转载的“教程”做,把类似"php4apache2.dll"的文件改为"php5apache2.dll"也是不行的,至于我用的APache 2.2是肯定运行出错的:

1、注意php4apache2.dll、php5apache2.dll以及php5apache2_2.dll是很大差别的,一开始我依样画葫芦,把LoadModule php4_module “c:/php/php4apache2.dll”改为LoadModule php4_module “e:/php/php5apache2.dll”,重启Apache的时候提示启动失败,试了很多方法都行不通,后来想起在此之前有下载一个APMServ(点击这里去APMServ官方下载APMServ5.2.0),进去一看,php目录下php5apache2.dll和php5apache2_2.dll这两个文件都有,说明是有区别的,而我的PHP里面竟然没有php5apache2_2.dll,汗死,就这样浪费了好多时间。

2、下面这两行我按服务器的情况修改以后加到httpd.conf里面,运行php程序的时候会提示路径错误,不知是什么原因,还是不加为妙,,网上的误导真多!

让Apache支持自定义Rewrite:

查找:

XML/HTML代码
  1. #LoadModule rewrite_module modules/mod_rewrite.so  

去掉前面的#。

同样要注意一下,按网上大部分四处转载的“教程”的说法,这样可以使用自定义rewrite了,其实要能够每个站点“自定义”Rewrite,还需要查找:

XML/HTML代码
  1. AllowOverride None  

把它改为:

XML/HTML代码
  1. AllowOverride All  

到此,Apache最吸引力的rewrite模块可以让你自定义每个站点的Rewrite规则了!

对了,似乎很多教程都没有提到怎样让Apache支持多站点(虚拟主机),这里记录一下:

在httpd.conf最后加入以下类似的内容:

这个就是基于主机名的虚拟主机(一个IP地址,多个网站) 了。

到此,所有的问题完美解决!

其实,看Apache的官方文档是最好的选择,虽然E文的技术类文章看起来有些吃力,但是起码比网上那些以讹化讹的教程有用得多,建议初学者看一下官方的文档再去参考其实中文的资料,这样会少走一些弯路!

 点击这里打开中文版的Apache官方手册

XML/HTML代码
  1. <VirtualHost 172.0.0.1>  
  2. ServerAdmin webmaster@bluefeel.com   
  3. DocumentRoot d:/WwwRoot/bluefeel.com   
  4. ServerName bluefeel.com   
  5. ErrorLog logs/bluefeel.com-error_log   
  6. TransferLog logs/bluefeel.com-access_log   
  7. </VirtualHost>  

注意:以上纯属初学者记录,可能错误百出!

 蓝风网络日志标签:    windows, 服务器, iis, apache, mysql
网摘: Yahoo Baidu Google Bolaa 365Key Yesky Wozhai POCO ViVi YouNote Hexun Del.icio.us Yeeyoo igooi I2Key Cn3 Bytemen Furl Blinklist Blogmarks Technorati 分享到饭否
相关文章: (最多只显示10条记)
引用: 点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5
» 我要发表评论 你的参与是我最大的动力!    访客评论: (3条记录)
  1. 1 Marshal :
    2008, January 1, 10:38 PM   引用此文发表评论
    其实你可以用phpnow等集成环境
  2. 2 Kevin :
    2008, January 1, 11:43 PM   引用此文发表评论
    谢谢!我现在本地有用APMServ,但是服务器不想装这种集成的东西。另外,很多东西,“钻一下牛角”也未尝是不好的!^_^
    引用 Marshal 说过的话:
    其实你可以用phpnow等集成环境
  3. 3 ge :
    2008, January 4, 10:19 AM   引用此文发表评论
    不错的说
 
发表评论:( 来了就留个脚印吧!你的参与是我最大的动力!)