《在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
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
如上所示,再使用 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
- 1.
- 2.
那么,现在,让我们设置 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
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
现在让我们在宿主机的 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
- 1.
- 2.
再次在 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 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: none
ben@linux-nyhn:~>
ben@linux-nyhn:~> gmcs --version
Mono C# compiler version 2.6.4.0
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
这个 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:~>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
升级完成,再次查看 mono 的版本:
ben@linux-nyhn:~> mono --version
Mono 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 --version
Mono C# compiler version 2.8.1.0
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
果然已经升级到最新的 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>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
这个 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
- 1.
- 2.
- 3.
- 4.
然后创建 /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:~>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
现在让我们建立一个网站:
ben@ben:~> cd www
ben@ben:~/www> vim index.html
- 1.
- 2.
在 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
- 1.
如上图所示,将 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:~>
- 1.
- 2.
- 3.
- 4.
- 5.
然后重新访问 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
- 1.
- 2.
- 3.
- 4.
网页文件 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>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
对应的 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);
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
编译响应文件 src/info.rsp 的内容如下所示:
-out:../bin/info.dll
-t:library
-r:System.Data
-r:System.Web
info.aspx.cs
- 1.
- 2.
- 3.
- 4.
- 5.
然后就是使用以下命令进行编译了:
ben@linux-nyhn:~/www> cd src
ben@linux-nyhn:~/www/src> dmcs @info.rsp
- 1.
- 2.
编译完成,网站的运行效果如下图所示:
至此,我们成功地在 Linux 操作系统中运行 ASP.NET 4。
原文链接:http://www.cnblogs.com/skyivben/archive/2011/01/04/1925385.html
- 详解ASP.NET MVC 3 beta新特性
- ASP.NET MVC 3让依赖注入实现得更简单
- 详解ASP.NET MVC 3 beta新特性
- ASP.NET MVC 3新特性与NuPack功能详解
- .NET开发人员应该关注的七个开源项目