在 Linux“.NET研究” 操作系统中运行 ASP.NET 4 (下)

简介:   “在 Linux 操作系统中运行 ASP.NET 4 (中)”中已经配置好了 openSUSE 11.3 操作系统。  现在,我们进入“GNOME 终端”,使用 ifconfig 命令验证一下本虚拟的 IP 地址就是一开始我们在宽带路由器中为它分配的静态地址。

  “在 Linux 操作系统中运行 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上海徐汇企业网站制作span>: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 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

  这个 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 的版本:

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

 
 
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

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

  生成的 ben.skyiv.com.conf 文件如下所示:

 
 
< virtualhost * : 80 >
ServerName ben.skyiv.com
DocumentRoot
/ home /上海徐汇企业网站设计与制作span>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
</ifmodul上海闵行企业网站制作e>
</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 的内容如下所示:

 
 
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上海企业网站制作n style="color: #000000;">:
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.Web
info.aspx.cs

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

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

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

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

  相关文章:在 Linux 操作系统中运行 ASP.NET 4(上)

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

目录
相关文章
|
3天前
|
缓存 网络协议 Linux
Linux操作系统内核
Linux操作系统内核 1、进程管理: 进程调度 进程创建与销毁 进程间通信 2、内存管理: 内存分配与回收 虚拟内存管理 缓存管理 3、驱动管理: 设备驱动程序接口 硬件抽象层 中断处理 4、文件和网络管理: 文件系统管理 网络协议栈 网络安全及防火墙管理
20 4
|
1天前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
15 1
|
5天前
|
物联网 Linux 云计算
Linux操作系统的演变与未来趋势####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其在服务器、桌面及嵌入式系统领域的应用现状,并展望了云计算、物联网时代下Linux的未来趋势。通过回顾历史、剖析现状、预测未来,本文旨在为读者提供一个全面而深入的视角,以理解Linux在当今技术生态中的重要地位及其发展潜力。 ####
|
10天前
|
边缘计算 人工智能 运维
Linux操作系统:开源力量的崛起与影响###
一场技术革命的回顾 回溯至1991年,当Linus Torvalds宣布Linux操作系统的诞生时,世界或许并未意识到这一举措将如何深刻地改变技术领域的面貌。本文旨在探讨Linux操作系统的发展历程、核心特性、以及它如何引领了一场开源运动,重塑了软件行业的生态。从最初的个人爱好项目成长为全球最广泛采用的服务器操作系统之一,Linux的故事是技术创新与社区精神共同推动下的辉煌篇章。 ###
|
9天前
|
人工智能 安全 Linux
|
11天前
|
物联网 Linux 5G
Linux操作系统的演变与未来趋势####
本文深入探讨了Linux操作系统的发展历程,从最初的一个学生项目到如今全球最流行的开源操作系统之一。文章将分析Linux的核心优势、关键特性以及它在云计算、物联网和嵌入式系统中的应用前景。通过具体案例展示Linux如何推动技术创新,并预测其在未来技术生态中的角色。本文旨在为读者提供一个全面而深入的理解,帮助他们认识到Linux在现代计算环境中的重要性及其未来的潜力。 ####
|
11天前
|
人工智能 安全 物联网
Linux操作系统的演变与未来:从开源精神到万物互联的基石###
本文是关于Linux操作系统的演变、现状与未来的深度探索。Linux,这一基于Unix的开源操作系统,自1991年由林纳斯·托瓦兹(Linus Torvalds)学生时代创造以来,已经彻底改变了我们的数字世界。文章首先追溯了Linux的起源,解析其作为开源项目的独特之处;随后,详细阐述了Linux如何从一个小众项目成长为全球最广泛采用的操作系统之一,特别是在服务器、云计算及嵌入式系统领域的主导地位。此外,文章还探讨了Linux在推动技术创新、促进协作开发模式以及保障信息安全方面的作用,最后展望了Linux在未来技术趋势中的角色,包括物联网、人工智能和量子计算等前沿领域的潜在影响。 ###
|
15天前
|
运维 物联网 Linux
Linux操作系统的演变与未来趋势####
本文通过探讨Linux操作系统的历史沿革、当前主流版本的特点,以及其在服务器、云计算和物联网等新兴领域的应用,旨在揭示Linux在现代计算环境中的重要性。此外,文章还将分析Linux面临的挑战与机遇,预测其未来的发展趋势。希望通过这篇文章,读者能够更好地理解Linux的价值,并对其未来充满期待。 ####
|
15天前
|
存储 Linux Shell
深入理解Linux操作系统的启动过程
【10月更文挑战第21天】本文将深入浅出地介绍Linux操作系统的启动过程,包括BIOS、引导加载程序、内核初始化和系统服务启动等环节。通过阅读本文,您将了解到Linux启动过程中的关键步骤和相关概念,以及如何优化启动速度。
|
15天前
|
缓存 算法 安全
深入理解Linux操作系统的心脏:内核与系统调用####
【10月更文挑战第20天】 本文将带你探索Linux操作系统的核心——其强大的内核和高效的系统调用机制。通过深入浅出的解释,我们将揭示这些技术是如何协同工作以支撑起整个系统的运行,同时也会触及一些常见的误解和背后的哲学思想。无论你是开发者、系统管理员还是普通用户,了解这些基础知识都将有助于你更好地利用Linux的强大功能。 ####
27 1
下一篇
无影云桌面