2000/XP/2003 下 IIS+PHP+MySQL+Zend Optimizer+GD库+phpMyAdmin安装配置
(假设 C:\ 为你现在所使用操作系统的系统盘,如果你目前操作系统不是安装在 C:\ ,请自行修改。)
一、安装 IIS(Windows2003只要安装“应用程序服务器(IIS,ASP.NET)”即可跳过此步):
(1)插入系统盘;
(2)进入控制面板-》添加或删除程序-》添加/删除Windows组件-》在“Internet信息服务(IIS)打勾-》下一步安装。
(3)安装完成后在浏览器地址栏输入 htt://127.0.0.1 检查是否安装正常。
如果没有系统盘,那么下载 IIS 5.1 的安装包(for XP),重复上述步骤,安装时指定路径即可。
IIS下载地址:http://soft.mumayi.net/downinfo/2597.html
二、安装 PHP:
(1)官方下载:http://www.php.net/downloads.php。
(2)下载后得到 php 的 zip 压缩包,解压至 C:\php(这个路径可以随意,下面要是用到这个路径,请相应修改);
(3)将 C:\php\libmysql.dll 和 C:\php\ext\php_mysql.dll 复制到 C:\Windows\system32 下;
将 C:\php\php.ini-recommended 复制到 C:\Windows (Windows 2000 下为 C:\WINNT)并将改名为php.ini,
然后用记事本打开,利用记事本的查找功能搜索:
搜索“; Windows Extensions”并仅打开需要的模块以节省内存(去掉每个模块前的;号即可):
extension=php_gd2.dll
GD库支持,支持水印。
extension=php_mbstring.dll
支持phpMyAdmin
extension=php_mysql.dll
支持MySQL。
(4)配置 IIS 使其支持 PHP
在“控制面板”的“管理工具”中选择“Internet 服务管理器”,
然后在左侧选择你需要支持 PHP 的 Web 站点上单击右键选择“属性”,
在打开的“Web 站点属性”窗口的“ISAPI 筛选器”标签里找到并点击“添加”按钮,在弹出的“筛选器属性”窗口中的“筛选器名称”栏中输入:PHP,再将可执行文件指向 php5isapi.dll 所在路径,如:C:\php\php5isapi.dll。
打开“Web 站点属性”窗口的“主目录”标签,找到并点击“配置”按钮,在弹出的“应用程序配置”窗口中找到并点击“添加”按钮,在弹出的窗口中新增一个扩展名映射,扩展名为 .php ,单击“浏览”将可执行文件指向 php5isapi.dll 所在路径,如:C:\php\php5isapi.dll,然后一路确定即可。
再打开“Web 站点属性”窗口的“文档”标签,找到并点击“添加”按钮,向默认的 Web 站点启动文档列表中添加 index.php 项。您可以将 index.php 升到最高优先级,这样,访问站点时就会首先自动寻找并打开 index.php 文档。
确定 Web 目录的应用程序设置和执行许可中选择为纯脚本,然后关闭 Internet 信息服务管理器。
2003系统配置:在“Internet 服务管理器”左边的“WEB服务扩展”中设置:
ISAPI 扩展允许
开始-》运行-》输入“iisreset”,重启IIS。
在 IIS 根目录下新建一个 phpinfo.php,内容如下:
<?php
phpinfo();
?>
打开浏览器,输入:http://127.0.0.1/phpinfo.php,将显示当前服务器所支持 PHP 的全部信息。
三、安装 MySQL:
(1)官方下载:http://dev.mysql.com/downloads/mysql/5.2.html
custom
安装
Skip Sign-Up
Finish
Next
Standard Comfiguration
设置数据库密码
(重要)重新启动电脑!
四、安装 Zend Optimizer :(有需要时安装)
(1)官方下载:http://www.zend.com/products/zend_optimizer
(2)安装时只需选择Web服务器为iis,指定php.ini路径即可。
五、安装 phpMyAdmin:(用于管理MYSQL数据库,可选择)
下载 http://www.phpmyadmin.net,将其解压到站点根目录,
找到 ./libraties/config.default.php,做以下修改:
方案一:
搜索 $cfg['Servers'][$i]['auth_type'] 设置为config
搜索 $cfg['Servers'][$i]['user'] 用户名一般为root
搜索 $cfg['Servers'][$i]['password'] 设置MySQL的密码
打开浏览器,输入:http://127.0.0.1/phpMyAdmin/ ,若 IIS 和 MySQL 均已启动,即可浏览数据库内容。
(此设置允许任何人通过以上路径登录管理数据库,安全性极低)
方案二:
搜索 $cfg['Servers'][$i]['auth_type'] 设置为cookie
搜索 $cfg['Servers'][$i]['user'] 用户名一般为root
搜索 $cfg['PmaAbsoluteUri'] 访问路径,设置为http://127.0.0.1/phpmyadmin/
搜索 $cfg['blowfish_secret'] 这是cookie作用域,设置为127.0.0.1
(此设置只允许本机上登录,并且需要输入用户名密码才能登录,安全性极高)
-----------------------------------------------------------------------------------
至此所有安装完毕。以上配置在所有老版本软件中不一定有效,强烈推荐下载最新版本的软件。
学 ASP.NET 已经有些时候了,也经常利用 AJAX TOOLKIT 所提供的控件为自己的项目增添功能和特效,AJAX 总能给用户非常良好的体验。
今天开始,我会陆陆续续把 ASP.NET AJAX 1.0 开发和部署方面的一些要点摘录下来,以便自己今后方便使用,并给 .net 初学者提供一些学习参考,文中有不正确的地方,希望各位批评指正。我的编程语言使用
C#,使用 VB.NET 的朋友相信也能看得懂。网上有许多在线翻译 C# 和 VB 代码的工具,不用我说知道怎么做了吧~
这里使用 Microsoft Visual Studio 2005 作为 Web 开发的平台,从微软官方下载 VS2005 以及 VS2005 SP1 进行安装。当然也可以使用
Visual Web Developer 2005 Express Edition 进行开发。
首先从 ASP.NET AJAX 官方网站http://www.asp.net/ajax/下载最新的
Framework。
安装 AJAX.NET Extensions v1.0,很简单,按提示操作即可。
启动 VS,新建网站,选择 ASP.NET AJAX Enabled Web Site。
接下来做个简单的演示功能:
打开 Default.aspx 的设计器视图,从工具箱拖入一个 ScriptManager 控件到界面,这是任何一个 ASP.NET AJAX 网页所必需的,并且在放在所有其它控件的上面,它可以放在母板页,但也要保证在所有其它控件的最上面。
往设计器视图拖入三个 Label 控件和一个 Button 控件。在 Page_Load 事件中写入:
Label1.Text = DateTime.Now.ToString();
Label2.Text = DateTime.Now.ToString();
Label3.Text = DateTime.Now.ToString();这时运行程序并点击按钮,三个 Label 都同时更新时间。
然后从工具箱拖入一个 UpdatePanel 到页面,把 Label2 和 Button1 移入 UpdatePanel 中,再运行一次,这时发现当点击按钮时只有
Label2 的内容是更新的,另外两个 Label 的值不变。这就是 UpdatePanel 的作用:局部更新。
这是一种方法,如果我们的界面设计必需把这个 Button1 放在 UpdatePanel 外面,而当点击按钮时只需更新 UpdatePanel 的内容时,可以这样做:
把 Button1 从 UpdatePanel 中移出到外面,转到“源”视图,在 asp:UpdatePanel 标签内部加入 Triggers 标签,再内建标签
asp:AsyncPostBackTrigger 代码如下:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
运行,点按钮试试,是不是跟刚才一样的效果呢?
安装ASP.NET AJAX
安装Toolkit:
下载解压AjaxControlToolkit.zip移至
C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\AjaxControlToolkit
安装模板C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\AjaxControlToolkit\AjaxControlExtender\AjaxControlExtender.vsi
若安装失败,手工建立以下文件夹:
\My Documents\Visual Studio 2005\Templates\ItemTemplates\Visual C#
\My Documents\Visual Studio 2005\Templates\ItemTemplates\Visual Basic
\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual C#
\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual Basic
把SampleWebSite\Bin下的AjaxControlToolkit.dll和AjaxControlToolkit.pdb
复制至Binaries下。
打开VS,添加选项卡AjaxControlToolkit,添加项浏览至Binaries\AjaxControlToolkit.dll
现成的工具有 Xenocode 的postbuidle或者vas,还有 Salamander .NET Linker .另外还有 MaxToCode 作者以前做的 framework linker. 以及一些支持注册表模拟和文件模拟的打包工具molebox,thinstall等.
最后还有某网友(应其要求隐去网名) 兜售的一个实现方法.
Xenocode的是使用了一个虚拟机环境,模拟框架需要的注册表信息和文件信息.Xenocode号称的生成native代码功能实际上就是指的这个功能.我测试了几个程序打包,兼容性似乎不怎么好. 不知道是不是因为机器上已经安装了框架的原因。
Jason做的 framework linker,以前我也使用过, 他的实际上是利用了Remotesoft的内核文件,然后自己实现了一个loader。好像是使用的早期的内核文件,兼容性也不太好。
Salamander .Net Linker ,Remotesoft的一个产品,没有可以下载的,但是其兼容性似乎很不错。移动的飞信软件就利用了它的核心。
某网友的方法似乎是利用remotesoft的核心和飞信的框架,因为他并没有免费公开方法,从他给出的样例可以看到有remotesoft的核心文件以及飞信的框架程序。
这里要介绍的方法是直接利用飞信的框架来实现脱离 .Net framework运行。
首先下载一个飞信的程序安装。在安装目录中会有 VMDotNet 目录。这个就是.Net框架虚拟环境需要的文件。直接把整个目录提取出来。
如何利用这个虚拟环境运行 自己的 .Net 程序呢?
很简单,一个命令行搞定。在 VMDotNet 目录里面会找到一个 FetionVM.exe 。这个是虚拟环境的loader。
使用方法: FetionVM.exe pathtoyoureexe
就是直接把你的 .Net 程序 作为命令行参数传递给 FetionVM.exe 就可以在这个虚拟环境中执行你的。net程序了。
最好再自己写一个启动程序,首先检查系统是否安装了。Net框架,如果有直接运行。没有调用虚拟环境运行。
这个启动程序飞信也有,如果不想自己写就直接拿飞信安装目录中的 Feition.exe,但是这样的话 你自己的.Net程序的名字必须叫 FeitionFX.exe 。把它和Feition.exe 放在同一目录下,直接执行 Feition.exe 即可。
另外,如果你对。Net程序使用了加密保护,需要注意一下,目前市面上的大部分。Net加密工具加密后的程序集不能在这个虚拟环境中运行的。 这个东西除了能实现脱离 。net框架运行外,还有另外一个副作用--让.net程序运行在指定版本的 。net 框架中(虽然机器上安装了。net框架,仍然可以让。net程序在这个虚拟框架下运行)。
前面介绍了让.Net程序脱离.net framework框架 运行的方法 ,但是有些朋友应用中还是遇到了一些问题,主要时需要自己提取框架程序以及应用的dll问题。这里介绍一个偷懒提取方式。
我们可以利用 Remotesoft linker的试用版来提取,试用版的获取
http://www.remotesoft.com/linker/try.html
试用版提取时可以用 mdeploy 方式或者 native 方式。如果时 mdeploy 方式,比较简单,直接提取出来了基本能用了。他提取的是你系统当前的 框架环境。也就是你安装了 .Net 3.0那么提取出来的核心文件也就是 3.0的。
提取完后会有一个 exe文件和 rsm 文件,你只需要用fetion框架里面的 fetionvm.exe替换这里生成的exe文件即可。
实际上这个文件是一个预先写好了的模板程序,自己可以修改一下资源属性,就OK了。
native 模式提取出来的虚拟框架目录结构和 fetion的那个一样的。把文件复制到fetion的框架里面覆盖。然后自己可以改改 fetionvm.srm文件,这个文件在前面已经还原出他的代码了。这样就省去了自己提取dll文件的麻烦。
providerName="System.Data.Odbc" />
推荐参考更新的文章:.NET 5 / ASP.NET Core / ASP.NET Frameworks 从纯真 IP 数据库(QQWry.Dat)中查询 IP 归属地
纯真IP数据库官方下载地址:http://www.cz88.net/
之前我写过将 QQWry.Dat 转为 Access 格式后,在 ASP.NET 中通过简单算法去查询,缺点是 IP 数据库体积变大。现在有了更简单的方法:
1,下载 IPLocation.dll (备用地址),将它放在网站的 Bin 目录下,将 QQWry.Dat 放在网站的任何位置(一般为 App_Data 目录)。刷新解决方案管理器。
2,在使用的页面加入引用
using IPLocation;
或者在 web.config 文件中,节点 pages -> controls 添加
<add tagPrefix="IPLocation" namespace="IPLocation" assembly="IPLocation"/>
3,调用方法:
Label1.Text = IPLocation.IPLocation.IPLocate(Server.MapPath("~/App_Data/QQWry.Dat"), TextBox1.Text.Trim());
方法 IPLocate() 参数一为 QQWry.Dat 路径,参数二为 IP 地址,返回 IP 归属地。
够简单吧,补充一点,在 VS2003 需要在项目中添加 IPLocation.dll 的引用。
需要 URLRewriter.dll,它可以在微软官方下载到:取出Bin里面的文件
接下来配置 Web.Config 文件:
在 <configSections> 节点下添加:
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
在 <configuration> 节点下添加:
<RewriterConfig>
<Rules>
<RewriterRule>
<!--测试-->
<LookFor>~/(\d{2})/(\d{2})\.aspx</LookFor>
<SendTo>~/Default.aspx?m=$1&d=$2</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
在 <httpHandlers> 节点下添加:
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
完成以上步骤即可以实现URL重写的。但是它只能实现 ~/11/11.aspx 到 ~/Default.aspx?m=11&d=11 的重写,如果要实现 ~/11/11.html 到 ~/Default.aspx?m=11&d=11 的重写,那么需要通过设置 IIS 来实现 .html 文件的筛选。(适合 IIS5 IIS6,在 IIS7 中不用这么麻烦,具体见本文末尾的链接,scott 的文章)
进入:Internet 信息管理服务 -》网站属性 -》主目录 -》配置 -》映射 -》添加 -》把扩展名 .html 映射到 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll。
然后在 <httpHandlers> 节点中,把 *.html 也交给 URLRewriter 处理就行了。
OK,试试看,访问 ~/11/11.html 确实是 ~/Default.aspx?m=11&d=11 的内容,可是只要 postback 一下,地址栏又显示实际路径了。只要在你的/app_browsers文件夹里添加一个.browser文件,注册使用一个控件适配类即可输出新的action属性。

你可在这里查看一个我创建的样例实现,其展示了该如何实现与URL重写协作的表单控件适配器(Form Control Adapter) 。
参考:http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
译文:http://blog.joycode.com/scottgu/archive/2007/03/01/94004.aspx
| MasterPage | UserControlOnTop | Page | UserControlInPage | UserControlOnButtom |
| Init | ||||
| Init | ||||
| Init | ||||
| Init | ||||
| Init | ||||
| Load | ||||
| Load | ||||
| Load | ||||
| Lod | ||||
| Load | ||||
| ControlEvents | ControlEvents | ControlEvents | ControlEvents | ControlEvents |
| PreRender | ||||
| PreRender | ||||
| PreRender | ||||
| PreRender | ||||
| PreRender | ||||
| UnLoad | ||||
| UnLoad | ||||
| UnLoad | ||||
| UnLoad | ||||
| UnLoad |

