zoukankan      html  css  js  c++  java
  • 一起谈.NET技术,在 Linux 操作系统中运行 ASP.NET 4 (下) 狼人:

      “在 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: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。

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

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

  • 相关阅读:
    return
    debug_backtrace final catch
    Exponential Backoff
    2014 MapReduce
    Extract, Transform, Load
    Factorization of a 768-bit RSA modulus
    奇偶校验 汉明码 如果一条信息中包含更多用于纠错的位,且通过妥善安排这些纠错位使得不同的出错位产生不同的错误结果,那么我们就可以找出出错位了。 crc CRC 循环冗余校验
    An Explanation of the Deflate Algorithm
    通过极限手续定义正数的无理指数方幂
    算术根的存在唯一性
  • 原文地址:https://www.cnblogs.com/waw/p/2163080.html
Copyright © 2011-2022 走看看