博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一起谈.NET技术,在 Linux 操作系统中运行 ASP.NET 4 (下)
阅读量:7220 次
发布时间:2019-06-29

本文共 9231 字,大约阅读时间需要 30 分钟。

  “”中已经配置好了 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
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
/
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 的内容如下所示:

 
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.Web
info.aspx.cs

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

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

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

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

  相关文章:

                     

转载地址:http://geqym.baihongyu.com/

你可能感兴趣的文章
ufw--使用说明
查看>>
PostgreSQL新手入门
查看>>
经典的python代码
查看>>
vmware10 虚拟机克隆 centos7 完整步骤
查看>>
linux命令行安装VmwareTools(CentOS)
查看>>
Linux常用命令收集整理
查看>>
Sublime Text 2 使用心得
查看>>
我的友情链接
查看>>
Property文件读取的Util类
查看>>
WEBService
查看>>
samba服务器的搭建
查看>>
IO端口和IO内存
查看>>
zookeeper安装
查看>>
第五周作业
查看>>
linux ssh使用深度解析(key登录详解)
查看>>
查询数据库信息
查看>>
mysql主从复制
查看>>
初探Java Builder模式--组装复杂的实力
查看>>
Netty笔记二(发送对象--服务端客户端附可运行源码)
查看>>
ros 设置hotspot认证网段
查看>>