Apache 代替IIS,Apache下运行 ASP.NET,并且打包,实现一键安装

西安河豚软件科技有限公司             Apache代替IIS运行ASP.net,并实现一键安装

 
前言

  众所周知Asp.net运行,是仰仗IIS的。但是IIS有很大的弊端,安装维护太麻烦,不太稳定经常出一些奇奇怪怪的

误,对于经常用的开发人员来讲尚有难度,更何况是刚入门的新手那就更难了。而且IIS能不能实现和工程一键安

这个博主目前没有研究过也不知道。所以博主准备使用Apache来运行ASP.NET ,并且实现一键安装。

 

准备工作

  首先要准备好一个发布后的ASP.NET工程,然后下载Apache,博主使用的是Apache2.2,一下都是以Apache2.2为例说

的。

 

第一步:实现在Apache下运行APS.NET
1、配置Apache文件

  在 “Apache\Apache Software Foundation\Apache2.2\conf\httpd.conf”下增加ASP.NET模块,代码如下:

 

</pre><pre class="html" name="code"><span style="font-size:14px;">#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>    
AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"       
    <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">        
	Options FollowSymlinks        
	Order allow,deny        
	Allow from all    
    </Directory>
</IfModule>

# 配置虚拟主机
<VirtualHost *:80>    
    ServerName 127.0.0.1
    DocumentRoot "<<span style="color:#ff0000;">AppPath</span>>/htdocs/aspweb/"
    AspNetMount / "<<span style="color:#ff0000;">AppPath</span>>/htdocs/aspweb/"
    <Directory "<<span style="color:#ff0000;">AppPath</span>>/htdocs/aspweb/">
        Options Indexes FollowSymLinks Includes ExecCGI
        Order allow,deny
        AllowOverride All
        Allow from all
        DirectoryIndex index.html default.aspx
    </Directory>
</VirtualHost></span>
</pre>

 

上面的代码是段,第一段是增加ASP.net的运行模块,这里解释下第二段代码,
<VirtualHost *:80> :意思是配置端口为80端口;
ServerName 127.0.0.1:这个很明显服务名称
DocumentRoot htdocs/aspweb/:这里应该写的是你ASP.net工程方的路径,这里红色的是博主自己加的,后面有用处。
如果不是想一键安装可以直接去掉,此处的主要目地是后面打包的时候,用来代替客户选择的安装路径。
2、运行ASP.NET 拷贝你发布后的ASP.NET工程到文件夹 "Apache\Apache Software Foundation\Apache2.2\htdocs\" 下,
在浏览器直接输入http://127.0.0.1就可以看到你的工程了。这样就实现了Apache代替IIS的工作

第二步:实现Apache打包一键安装(这里安装博主在解决遇到的问题以及思路顺序写)
1、博主使用的打包工具是Inno Setup 其实这个和使用什么打包工具没有任何关系,方法是直接打包Apache文件和
ASP.NET 文件,文件存放的位置按照上面提到的位置放,打包完成后发生无法自动启动Apache服务。所以...
2、博主写了2个bat文件在安装Apache的时候直接启动Apache服务,一个为停止服务。代码如下
加载、启动Apache服务 


 

按道理说,这样就可以实现了,但是在安装的时候出现问题了。所以...

    3、具体报的什么错,忘记了,总体的意思就是没有在windows注册成功Apache.web,下来怎么解决问题呢?

博主发现为什么用Apache官方的exe安装后把工程拷贝的路径下,就可以运行,而我们只是打包进去为什么就不行

了呢?于是博主发现问题在官方安装的时候在你的计

算机 【C:\Windows\assembly】下有一个叫做Apache.web,而我安装后没有这个东西,于是博主想用DOS命令写

一个拷贝进去不就行了吗?所以...

  4、博主准备写拷贝的时候发现,我要把什么文件给拷贝进去?博主想把

C:\Windows\assembly\Apache.web】给拷贝出来,结果是不行的,这里面的文件是不

能拷贝的只有一个卸载和查看和属性。这次我们最急切的就是要在windows下注册Apache.web简单的说就是要

在【C:\Windows\assembly\】文件夹下出现Apache.web,博主不知道怎么能注册进去,于是就行拷贝,但是

这个文件夹不能拷贝,那么DOS有个命令【Subst】直接把它虚拟成一个驱动器B盘不就能操作了吗?

下来博主先写一个bat把【C:\Windows\assembly\】个虚拟成一个驱动器,然后手动进去把Apache.web给拷

贝出来放在一个文件夹 【file】面去 这个下面的路径给大家看看

Apache\Apache Software Foundation\Apache2.2

\regasmnet\file\Apache.Web\2.2.0.2006__9b9b842f49b86351】这个文件

夹下有3个文件分别是 【 __AssemblyInfo__.ini】 、【Apache.Web.dll】 、

【Apache.Web.Helpers.netmodule】这样我们有了这个文件了 ,下来继续打包..

 

      5、写一个DOS命令,意思就是先把【C:\Windows\assembly\】虚拟成一个驱动器【B】,然后把刚才 【file】直

接拷贝进去,然后把驱动器B删除。代码如下:

<span style="font-size:18px;">Subst b: %windir%\assembly 
xcopy /e file B:\GAC
Subst b: /d</span>

这里为什么要这么费劲的虚拟成驱动器然后在拷贝在删除,原因就是这个文件夹不能操作,说白了博主不知道怎么注

册进去。这个是个歪招但是问题解决了,如果谁知道

正招记得留言或者发邮件哦。

6、这样打包就没有问题了,主要要把以上3个【Bat】和文件夹【Fiel】放进去一起打包进去

 

7、下来附上Inno setup 打包脚本,有注释的

 

<span style="font-size:14px;">; -- Example1.iss --
; Demonstrates copying 3 files and creating an icon.</span>
<span style="font-size:14px;">[Setup]
AppName=XXX系统
AppVerName=XXX系统 1.0
DefaultDirName={pf}\Training
DefaultGroupName=XXX系统
UninstallDisplayIcon={app}\SetUp.exe
Compression=none
SolidCompression=yes
OutputDir=c:\output

[Files]
Source: "E:\Apache\Apache Software Foundation\Apache2.2\*"; DestDir: "{app}"; Excludes: "*\conf\httpd.conf"; Flags:recursesubdirs createallsubdirs;
Source: "E:\Apache\mod_aspdotnet-2.2.0.2006-setup-r2.msi.msi"; DestDir: "{app}"
Source: "F:\httpd.conf"; DestDir: "{app}\conf\";AfterInstall: AfterMyProgInstall('httpd.conf');
Source: "E:\Apache\register.bat"; DestDir: "{app}" ;
Source: "E:\Apache\register.bat"; DestDir: "{app}";AfterInstall: AfterMyProgInstall('register.bat');
Source: "E:\Apache\unregister.bat"; DestDir: "{app}" ;
Source: "E:\Apache\unregister.bat"; DestDir: "{app}";AfterInstall: AfterMyProgInstall('unregister.bat');

;安装完成后执行bat文件启动服务
[Run]
Filename: "{app}\regasmnet\regestAspnet.bat";
Filename: "{app}\register.bat";

;卸载完成后执行bat文件停止并且卸载服务
[UninstallRun]
Filename: "{app}\unregister.bat";
  
[Icons]
Name: "{group}\在线培训系统"; Filename: "{app}\在线培训系统"

; -- 替换<novesoftAppPath>为用户安装时选择的路径的方法
[Code]
var
  sFn: String;
  sConfig: String;
procedure AfterMyProgInstall(S: String);
begin
  sFn := ExpandConstant(CurrentFileName);
  LoadStringFromFile(sFn, sConfig);
  StringChange(sConfig, '<AppPath>', ExpandConstant('{app}'));
  SaveStringToFile(sFn, sConfig, false);
end;</span>

 

 

8、说明

使用Inno Setup 5 打包工具打包,“安装配置.txt”是打包使用的脚本。

regestAspnet.bat 是注册Asp.net运行必要文件脚本,在“安装配置.txt”中使用,路径要根据情况修改。

register.bat 是Apache服务注册以及服务启动的命令脚本,在“安装配置.txt”中使用

unregister.bat 是Apache服务卸载已经服务停止的命令脚本,在安装配置.txt”中使用.

Apache Software Foundation\Apache2.2\ 下的文件时Apache的安装后的文件。

Apache Software Foundation\Apache2.2\htdocs\aspweb\ 放置的是 “在线学习系统”的发布文件。

regasmnet文件夹下的文件时Asp.net运行Apache的必要文件不可缺少。

Apache Software Foundation\Apache2.2\conf\httpd.conf 是Apache的配置文件,要在Apahce下运行Asp.net

 

注释:以上为本博主一个字一个字敲出来的,如果有什么不对的地方还请大家指正,博主最希望的就是有人用

其他的办法也实现了该功,希望您不要吝啬,发布出来博主学习学习。博主认为技术是为商业服务的,但是

术人员应该Open的,这样大家才能相互学习,一起提高!

博主邮箱Lia_77@163.com

博主网址http://www.hetunsoft.com/
 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Tomcat是一个开源的Java Servlet容器,是目前最流行的轻量级Web服务器。它具有以下特点: 1. 简单易用:Tomcat相对于其他Web服务器来说,配置和使用都非常简单,适合初学者使用。 2. 跨平台性:Tomcat可以在不同的操作系统上运行,如Windows、Linux和Mac OS等。 3. 支持Servlet和JSP技术:Tomcat通过Java Servlet和JSP技术提供动态网页服务,并且支持Java的相关技术和框架。 4. 高性能:Tomcat具有高度优化的处理机制,可以处理大量并发的请求,保证网站的高性能和响应速度。 Nginx是一个高性能的开源Web服务器和反向代理服务器,具有以下特点: 1. 异步非阻塞架构:Nginx采用事件驱动、异步非阻塞的设计模式,能够高效处理大量并发请求,具备较好的吞吐能力。 2. 高可扩展性:Nginx作为反向代理服务器,可以对后端服务器做负载均衡,实现高可用性和可扩展性。 3. 内存占用低:Nginx具有较低的内存占用,适合在资源有限的服务器上使用。 4. 高可靠性:Nginx具备自动故障恢复和自动负载均衡功能,可以实现服务器的高可靠性和稳定性。 IIS(Internet Information Services)是微软开发的Web服务器软件,具有以下特点: 1. Windows平台特化:IIS只能在Windows操作系统上运行,与Windows系统高度集成,提供了丰富的功能和易用的配置界面。 2. 支持ASP.NETIIS是与Microsoft ASP.NET技术紧密结合的,可以轻松托管ASP.NET应用程序。 3. 安全性高:IIS提供了多层次的安全措施,可以保护Web应用程序的安全性,如SSL加密、IP地址过滤等。 4. 集成性强:IIS与其他Microsoft产品(如SQL Server、Exchange Server)集成紧密,可以实现更简便的管理和开发。 WebLogic是Oracles开发的企业级应用服务器,具有以下特点: 1. 强大的事务处理能力:WebLogic支持可靠的JTA事务处理,可以处理复杂的企业级应用程序。 2. 高度可靠性和可扩展性:WebLogic提供了集群和负载均衡功能,可以实现高可靠性和可扩展性的分布式架构。 3. 支持Java EE技术:WebLogic支持Java EE规范,并提供了丰富的Java EE组件和API。 4. 安全性强:WebLogic具有高度的安全性控制和认证机制,能够保护企业级应用程序的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值