Linux操作系统中运行ASP.NET 4

作者:控件中国网   出处:控件中国网   2015-07-22 11:20:16   阅读:3

们之前已经讨论过在openSUSE 11.3 操作系统配置ASP.NET 4开发环境的问题了,下面将更介绍后续步骤。


 

AD: eDocEngine VCL - PDF控件 —正版、购买、下载、价格、销售、代理、授权、技术支持尽在控件中国网

 

 

《在openSUSE下ASP.NET 4开发环境配置》中已经配置好了 openSUSE 11.3 操作系统。


 

现在,们进入 GNOME 终端 ,使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始们在宽带路由器中为它分配的静态地址。


 

ben@linux-nyhn:~  /sbin/ifconfig  eth0 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,如下图所示:


 


 

注意上图中的 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,如下图所示:


 


 

们的 openSUSE 11.3 操作系统已经安装好了 apache 软件,但尚未启用,如下所示:


 

ben@linux-nyhn:~  sudo /sbin/service apache2 status  Checking for httpd2: unused 


 

那么,现在,让们设置 apache 为开机随系统启动,并且现在就启动它吧:


 

ben@linux-nyhn:~  sudo /sbin/chkconfig -add apache2  apache2 0:off 1:off 2:off 3:on 4:off 5:on 6:off  ben@linux-nyhn:~  sudo /sbin/service apache2 start  Starting httpd2 (prefork) done  ben@linux-nyhn:~  sudo /sbin/service apache2 status  Checking for httpd2: running 


 

现在让们在宿主机的 Windows Vista 操作系统的谷歌浏览器中打开 ben.skyiv.com 网站试试看吧:


 


 

如上图所示,们的 Apache 2.2.15 已经正常工作在 Linux/SUSE 操作系统上了。只不过现在该网站还没有内容而已。


 

在 openSUSE 操作系统中,Apache 的默认文档是放在 /srv/www/htdocs 目录下的。


 

openSUSE 操作系统已经为每个用户建立了 public_html 目录,例如用户就是 /home/ben/public_html 目录,用以放置该用户的网站的内容。可以通过 ben.skyiv.com/~ben 访问,这里 ben 是用户名,如下图所示:


 


 

从上图中可以看出,这个目录是空的,需要用户自己放里放东东。那么,们就编写如下一个 index.html 吧:


 

ben@linux-nyhn:~  cd public_html  ben@linux-nyhn:~/public_html  vim index.html 


 


 

再次在 Windows Vista 操作系统中访问 ben.skyiv.com/~ben 网页:


 


 

现在让们来看看 mono 的版本:


 

ben@linux-nyhn:~  mono --version  Mono JIT compiler version 2.6.4 (tarball Mon Jul 5 13:53:45 UTC 2015)  Copyright (C) 2002-2015 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: none  ben@linux-nyhn:~    ben@linux-nyhn:~  gmcs --version  Mono 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 added  Enabled: Yes  Autorefresh: No  URI: http://ftp.novell.com/pub/mono/download-stable/openSUSE_11.3  ben@linux-nyhn:~  sudo zypper refresh --repo mono-stable  Retrieving 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 的版本:


 

ben@linux-nyhn:~  mono --version  Mono JIT compiler version 2.8.1 (tarball Fri Nov 12 14:37:21 UTC 2015)  Copyright (C) 2002-2015 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 --version  Mono C# compiler version 2.8.1.0 


 

果然已经升级到最新的 mono 2.8.1 版本了。


 

在 Apache mod_mono configuration tool 网页可以生成运行 ASP.NET 所需要的 Apache 软件的配置文件,如下图所示:


 


 

生成的 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 www  ben@ben:~  sudo /etc/init.d/apache2 restart  Syntax OK  Shutting down httpd2 (waiting for all children to terminate) done  Starting httpd2 (prefork) done  ben@ben:~  


 

现在让们建立一个网站:


 

ben@ben:~  cd www  ben@ben:~/www  vim index.html 


 


 

在 openSUSE 11.3 操作系统中访问 ben.skyiv.com 网站,如下图所示:


 


 

点击上图中的 服务器信息 ,出现 The resource cannot be found 错误:


 


 

这是预料之中的,因为们还没有编写 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 


 


 

如上图所示,将 mod-mono-server2 改为 mod-mono-server4 。然后重启 Apache 服务:


 

ben@ben:~  sudo /etc/init.d/apache2 restart  Syntax OK  Shutting down httpd2 (waiting for all children to terminate) done  Starting httpd2 (prefork) done  ben@ben:~  


 

然后重新访问 ben.skyiv.com/aspx/info.aspx 网页:


 


 

 


 

从上图中可以看出,已经运行在 ASP.NET 4 了。


 

 


 

现在,让们来编写 info.aspx 程序吧:


 

ben@linux-nyhn:~/www  mkdir aspx src bin  ben@linux-nyhn:~/www  vim aspx/info.aspx  ben@linux-nyhn:~/www  vim src/info.aspx.cs  ben@linux-nyhn:~/www  vim src/info.rsp 


 

网页文件 aspx/info.aspx 的内容如下所示:


 

  %@ Page Language= C#  inherits= Skyiv.Ben.Web.InfoPage  %   !DOCTYPE html PUBLIC  -//W3C//DTD XHTML 1.0 Transitional//EN   http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd     html xmlns= http://www.w3.org/1999/xhtml     head runat= server   meta http-equiv= Content-Type  content= text/html; charset=utf-8  /     title 服务器信息 /title   /head   body   form id= form1  runat= server   a href= http://ben.skyiv.com 返回 /a   hr /   asp:GridView id= dgMain  runat= Server     AlternatingRowStyle BackColor= #FFFFCD  /   HeaderStyle BackColor= #AAAADD  /   /asp:GridView   /form   /body   /html  


 

对应的 C# 源程序 src/info.aspx.cs 的内容如下所示:


 

using System;  using System.Data;  using System.Web.UI;  using System.Web.UI.WebControls;  namespace Skyiv.Ben.Web  {  public class InfoPage : Page  {  protected GridView dgMain;  public void Page_Load(object sender, EventArgs e)  {  if (IsPostBack) return;  dgMain.DataSource = GetInfo();  dgMain.DataBind();  }  DataTable GetInfo()  {  DataTable dt = new DataTable();  dt.Columns.Add( 项目 , typeof(string));  dt.Columns.Add( 内容 , typeof(string));  AddRow(dt,  操作系统 , Environment.OSVersion);  AddRow(dt,  公共语言运行库 , Environment.Version);  return dt;  }  void AddRow(DataTable dt, string name, object value)  {  DataRow dr = dt.NewRow();  dr[0] = name;  dr[1] = value.ToString();  dt.Rows.Add(dr);  }  }  } 


 

编译响应文件 src/info.rsp 的内容如下所示:


 

-out:../bin/info.dll  -t:library  -r:System.Data  -r:System.Web  info.aspx.cs 


 

然后就是使用以下命令进行编译了:


 

ben@linux-nyhn:~/www  cd src  ben@linux-nyhn:~/www/src  dmcs @info.rsp 


 

编译完成,网站的运行效果如下图所示:


 


 

至此,们成功地在 Linux 操作系统中运行 ASP.NET 4。

eDocEngine VCL - PDF控件 —正版、购买、下载、价格、销售、代理、授权、技术支持尽在控件中国网

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat