“”中已经配置好了 openSUSE 11.3 操作系统。
现在,我们进入“GNOME 终端”,使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址。
ben@linux - nyhn: ~> / sbin / ifconfigeth0 Link encap:Ethernet HWaddr 08 : 00 : 27 : 51 :5B:0B inet addr: 192.168 . 1.251 Bcast: 192.168 . 1.255 Mask: 255.255 . 255.0 inet6 addr: fe80::a00:27ff:fe51:5b0b / 64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU: 1500 Metric: 1 RX packets: 853 errors: 0 dropped: 0 overruns: 0 frame: 0 TX packets: 807 errors: 0 dropped: 0 overruns: 0 carrier: 0 collisions: 0 txqueuelen: 1000 RX bytes: 853227 ( 833.2 Kb) TX bytes: 90376 ( 88.2 Kb)lo Link encap:Local Loopback inet addr: 127.0 . 0.1 Mask: 255.0 . 0.0 inet6 addr: :: 1 / 128 Scope:Host UP LOOPBACK RUNNING MTU: 16436 Metric: 1 RX packets: 22 errors: 0 dropped: 0 overruns: 0 frame: 0 TX packets: 22 errors: 0 dropped: 0 overruns: 0 carrier: 0 collisions: 0 txqueuelen: 0 RX bytes: 1300 ( 1.2 Kb) TX bytes: 1300 ( 1.2 Kb)ben@linux - nyhn: ~> sudo vim / etc / hosts 如上所示,再使用 vim 编辑器编辑 /etc/hosts 文件,增加一个域名 ben.skyiv.com,如下图所示:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet30.png)
注意上图中的 IP 地址必须是 127.0.0.1,而不能是 192.168.1.251。在宿主机的 Windows Vista 操作系统中以管理员身份进入命令提示符,使用记事本编辑 C:\Windows\System32\drivers\etc\hosts 文件,增加一个同样的域名 ben.skyiv.com,注意此时 IP 地址必须是 192.168.1.251,而不能是 127.0.0.1,如下图所示:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet28.png)
我们的 openSUSE 11.3 操作系统已经安装好了 apache 软件,但尚未启用,如下所示:
ben@linux - nyhn: ~> sudo / sbin / service apache2 statusChecking for httpd2: unused 那么,现在,让我们设置 apache 为开机随系统启动,并且现在就启动它吧:
ben@linux - nyhn: ~> sudo / sbin / chkconfig - add apache2apache2 0 :off 1 :off 2 :off 3 :on 4 :off 5 :on 6 :offben@linux - nyhn: ~> sudo / sbin / service apache2 startStarting httpd2 (prefork) doneben@linux - nyhn: ~> sudo / sbin / service apache2 statusChecking for httpd2: running 现在让我们在宿主机的 Windows Vista 操作系统的谷歌浏览器中打开 ben.skyiv.com 网站试试看吧:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet31.png)
如上图所示,我们的 Apache 2.2.15 已经正常工作在 Linux/SUSE 操作系统上了。只不过现在该网站还没有内容而已。
在 openSUSE 操作系统中,Apache 的默认文档是放在 /srv/www/htdocs 目录下的。
openSUSE 操作系统已经为每个用户建立了 public_html 目录,例如我的用户就是 /home/ben/public_html 目录,用以放置该用户的网站的内容。可以通过 ben.skyiv.com/~ben 访问,这里 ben 是我的用户名,如下图所示:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet32.png)
从上图中可以看出,这个目录是空的,需要用户自己放里放东东。那么,我们就编写如下一个 index.html 吧:
ben@linux - nyhn: ~> cd public_htmlben@linux - nyhn: ~/ public_html > vim index.html ![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet33.png)
再次在 Windows Vista 操作系统中访问 ben.skyiv.com/~ben 网页:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet34.png)
现在让我们来看看 mono 的版本:
ben@linux - nyhn: ~> mono -- versionMono JIT compiler version 2.6 . 4 (tarball Mon Jul 5 13 : 53 : 45 UTC 2010 )Copyright (C) 2002 - 2010 Novell, Inc and Contributors. www.mono - project.com TLS: __thread GC: Included Boehm (with typed GC and Parallel Mark) SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: noneben@linux - nyhn: ~> ben@linux - nyhn: ~> gmcs -- versionMono C# compiler version 2.6 . 4.0 这个 mono 2.6.4 的版本太低了。根据 mono 官方下载页面的指示,按如下步骤进行升级:
ben@linux - nyhn: ~> sudo zypper addrepo http: // ftp.novell.com/pub/mono/download-stable/openSUSE_11.3 mono-stable 正在添加安装源 ' mono-stable ' [done]Repository ' mono-stable ' successfully addedEnabled: YesAutorefresh: NoURI: http: // ftp.novell.com/pub/mono/download-stable/openSUSE_11.3 ben@linux - nyhn: ~> sudo zypper refresh -- repo mono - stableRetrieving repository ' mono-stable ' metadata [done]正在构建 ' mono-stable ' 安装源缓存 [done]Specified repositories have been refreshed.ben@linux - nyhn: ~> zypper dist - upgrade -- repo mono - stable =================> 在这里进行漫长的升级 <================= ben@linux - nyhn: ~> 升级完成,再次查看 mono 的版本:
果然已经升级到最新的 mono 2.8.1 版本了。
ben@linux - nyhn: ~> mono -- versionMono JIT compiler version 2.8 . 1 (tarball Fri Nov 12 14 : 37 : 21 UTC 2010 )Copyright (C) 2002 - 2010 Novell, Inc and Contributors. www.mono - project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: amd64 Disabled: none Misc: debugger softdebug LLVM: yes( 2 .8svn - mono) GC: Included Boehm (with typed GC and Parallel Mark)ben@linux - nyhn: ~> dmcs -- versionMono C# compiler version 2.8 . 1.0 在 Apache mod_mono configuration tool 网页可以生成运行 ASP.NET 所需要的 Apache 软件的配置文件,如下图所示:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet35.png)
生成的 ben.skyiv.com.conf 文件如下所示:
< virtualhost * : 80 > ServerName ben.skyiv.com DocumentRoot / home / ben / www # MonoServerPath can be changed to specify which version of ASP.NET is hosted # mod - mono - server1 = ASP.NET 1.1 / mod - mono - server2 = ASP.NET 2.0 # For SUSE Linux Enterprise Mono Extension, uncomment the line below: # MonoServerPath ben.skyiv.com " /opt/novell/mono/bin/mod-mono-server2 " # For Mono on openSUSE, uncomment the line below instead: MonoServerPath ben.skyiv.com " /usr/bin/mod-mono-server2 " # To obtain line numbers in stack traces you need to do two things: # 1 ) Enable Debug code generation in your page by using the Debug = " true " # page directive, or by setting in the # application ' s Web.config # 2 ) Uncomment the MonoDebug true directive below to enable mod_mono debugging MonoDebug ben.skyiv.com true # The MONO_IOMAP environment variable can be configured to provide platform abstraction # for file access in Linux. Valid values for MONO_IOMAP are: # case # drive # all # Uncomment the line below to alter file access behavior for the configured application MonoSetEnv ben.skyiv.com MONO_IOMAP = all # # Additional environtment variables can be set for this server instance using # the MonoSetEnv directive. MonoSetEnv takes a string of ' name=value ' pairs # separated by semicolons. For instance, to enable platform abstraction * and * # use Mono ' s old regular expression interpreter (which is slower, but has a # shorter setup time), uncomment the line below instead: # MonoSetEnv ben.skyiv.com MONO_IOMAP = all;MONO_OLD_RX = 1 MonoApplications ben.skyiv.com " /:/home/ben/www " < location " / " > Allow from all Order allow,deny MonoSetServerAlias ben.skyiv.com SetHandler mono SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI " \.(?:gif|jpe?g|png)$ " no - gzip dont - vary </ location > < ifmodule mod_deflate.c > AddOutputFilterByType DEFLATE text / html text / plain text / xml text / javascript </ ifmodule > </ virtualhost > 这个 ben.skyiv.com.conf 文件需要放在 /etc/apache2/conf.d 目录下:
ben@ben: ~> ll / etc / apache2 / conf.d总计 8 - rw - r -- r -- 1 ben users 2037 01 - 04 01 : 21 ben.skyiv.com.conf - rw - r -- r -- 1 root root 1239 10 - 01 02 : 12 mod_mono.conf 然后创建 /home/ben/www 目录,并重启 Apache 服务:
ben@ben: ~> mkdir wwwben@ben: ~> sudo / etc / init.d / apache2 restartSyntax OKShutting down httpd2 (waiting for all children to terminate) doneStarting httpd2 (prefork) doneben@ben: ~> 现在让我们建立一个网站:
ben@ben: ~> cd wwwben@ben: ~/ www > vim index.html ![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet37.png)
在 openSUSE 11.3 操作系统中访问 ben.skyiv.com 网站,如下图所示:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet38.png)
点击上图中的“服务器信息”,出现“The resource cannot be found”错误:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet39.png)
这是预料之中的,因为我们还没有编写 info.aspx 文件呢。从上图中可以看出,ASP.NET 是 2.0 版的。
现在,我们修改 /etc/apache2/conf.d/ben.skyiv.com.conf 文件,如下所示:
ben@ben: ~/ www > sudo vim / etc / apache2 / conf.d / ben.skyiv.com.conf ![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet40.png)
如上图所示,将 mod-mono-server2 改为 mod-mono-server4 。然后重启 Apache 服务:
ben@ben: ~> sudo / etc / init.d / apache2 restartSyntax OKShutting down httpd2 (waiting for all children to terminate) doneStarting httpd2 (prefork) doneben@ben: ~> 然后重新访问 ben.skyiv.com/aspx/info.aspx 网页:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet41.png)
从上图中可以看出,已经运行在 ASP.NET 4 了。
现在,让我们来编写 info.aspx 程序吧:
ben@linux - nyhn: ~/ www > mkdir aspx src binben@linux - nyhn: ~/ www > vim aspx / info.aspxben@linux - nyhn: ~/ www > vim src / info.aspx.csben@linux - nyhn: ~/ www > vim src / info.rsp 网页文件 aspx/info.aspx 的内容如下所示:
01: <% @ Page Language = " C# " inherits = " Skyiv.Ben.Web.InfoPage " %> 02: <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > 03: < html xmlns ="http://www.w3.org/1999/xhtml" > 04: < head runat ="server" > 05: < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" /> 06: < title > 服务器信息 </ title > 07: </ head > 08: < body > 09: < form id ="form1" runat ="server" > 10: < a href ="http://ben.skyiv.com" > 返回 </ a > 11: < hr /> 12: < asp:GridView id ="dgMain" runat ="Server" > 13: < AlternatingRowStyle BackColor ="#FFFFCD" /> 14: < HeaderStyle BackColor ="#AAAADD" /> 15: </ asp:GridView > 16: </ form > 17: </ body > 18: </ html > 对应的 C# 源程序 src/info.aspx.cs 的内容如下所示:
01 : using System; 02 : using System.Data; 03 : using System.Web.UI; 04 : using System.Web.UI.WebControls; 05 : 06 : namespace Skyiv.Ben.Web 07 : { 08 : public class InfoPage : Page 09 : { 10 : protected GridView dgMain; 11 : 12 : public void Page_Load( object sender, EventArgs e) 13 : { 14 : if (IsPostBack) return ; 15 : dgMain.DataSource = GetInfo(); 16 : dgMain.DataBind(); 17 : } 18 : 19 : DataTable GetInfo() 20 : { 21 : DataTable dt = new DataTable(); 22 : dt.Columns.Add( " 项目 " , typeof ( string )); 23 : dt.Columns.Add( " 内容 " , typeof ( string )); 24 : AddRow(dt, " 操作系统 " , Environment.OSVersion); 25 : AddRow(dt, " 公共语言运行库 " , Environment.Version); 26 : return dt; 27 : } 28 : 29 : void AddRow(DataTable dt, string name, object value) 30 : { 31 : DataRow dr = dt.NewRow(); 32 : dr[ 0 ] = name; 33 : dr[ 1 ] = value.ToString(); 34 : dt.Rows.Add(dr); 35 : } 36 : } 37 : } 编译响应文件 src/info.rsp 的内容如下所示:
- out :.. / bin / info.dll - t:library - r:System.Data - r:System.Webinfo.aspx.cs 然后就是使用以下命令进行编译了:
ben@linux - nyhn: ~/ www > cd srcben@linux - nyhn: ~/ www / src > dmcs @info.rsp 编译完成,网站的运行效果如下图所示:
![](https://images.cnblogs.com/cnblogs_com/skyivben/242150/o_LinuxAspnet42.png)
至此,我们成功地在 Linux 操作系统中运行 ASP.NET 4。
相关文章: