zoukankan      html  css  js  c++  java
  • 在Linux上运行ASP.NET vNext

    在Linux上运行ASP.NET vNext

    最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希望对其他想要尝鲜的人有所帮助。

    运行环境

    Ubuntu Server 14.04

    VirtualBox

    Mono >= 3.4.1

    *由于Ubuntu库中的Mono版本比较陈旧,满足不了最低要求,所以第一步要做的就是安装最新版本的Mono。

    安装Mono

    1. 首先从GitHub上取得mono代码:git clone git://github.com/mono/mono.git

    *未安装过git程序的话,你首先需要在Ubuntu中执行sudo apt-get install git命令。

    2. 这一步有点奇怪,编译新版本的mono需要旧版本的支持,如果未安装过mono的话,请先在Ubuntu执行sudo apt-get install mono-complete命令。

    3. 进入mono目录,编译程序:

    cd mono
    ./autogen.sh --prefix=/usr/local
    make

    *这里可能需要预先安装其它的程序,比如autoconf,libtool,g++,make等等。

    4. 安装:make install

    5. 执行mozroots --import --sync命令以避免认证问题。

    6. 通过mono –version命令确认所安装的mono是最新的版本。

    安装KRE

    只需要简单的一句命令:

    curl https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh && kvm upgrade

    kvm upgrade命令会自动下载最新的KRE包, 将其解压到.kre/packages目录下并添加bin文件夹路径至你的环境变量PATH中。

    *因为涉及解压的操作,所以unzip程序必须预先安装:sudo apt-get install unzip

    安装完成后可以通过kpm –version命令检查是否安装正确。

    Hello World

    完成所有准备工作之后,即可以尝试运行第一个程序了。按照传统,第一个程序应该是“Hello World!”

    1. 首先建立HelloWorld文件夹:mkdir HelloWorld

    2. 进入文件夹后:cd HelloWorld,再建立两个文件Program.cs和project.json。

    3. 编辑这两个文件(推荐使用vim),在Program.cs加入以下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    using System;
     
    public class Program
    {
        public static void Main()
        {
            Console.WriteLine("Hello World!");
        }
    }

    而在project.json文件中加入下列配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
      "dependencies": {
        "System.Console": "4.0.0.0"
      },
      "configurations": {
        "net45": {},
        "k10": {}
      }
    }

    4. 执行kpm restore -s https://www.myget.org/F/aspnetvnext/命令。

    *该命令会根据配置文件中的描述,从指定nuget仓库中取得必要的依赖项。

    5. 运行程序:k run

    以上步骤都正确的话,应该就能在shell中看到“Hello World!”的显示。

    简单的MVC

    接着试一个较复杂的程序,代码可以直接从GitHub中取得。

    git clone git://github.com/aspnet/Home.git

    取得HelloMvc代码并不能直接使用,因为其指定的Web服务器在Linux中并不存在,我们还需要添加一个工程用于生成Web服务器。

    https://github.com/Alxandr/Nowin.vNext/tree/master/src中取得Nowin.vNext文件夹,将其置于与HelloMvc同级的目录下。

    然后修改HelloMvc的project.json文件:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {
      "version": "0.1-alpha-*",
      "dependencies": {
        "Microsoft.AspNet.Mvc": "0.1-alpha-*",
        "Nowin.vNext": ""
      },
      "commands": {
        "web": "Microsoft.AspNet.Hosting --server Nowin.vNext"
      },
      "configurations": {
        "net45": {
          "dependencies": {
            "System.Runtime": "",
            "System.ComponentModel.DataAnnotations": ""
          }
        },
        "k10": {}
      }
    }

    这样运行kpm restore命令下载依赖项后,执行k web命令,就可以在浏览器中查看网页了。

    *其实以上执行时还是会有错误,需要把Startup.cs文件中的app.UseErrorPage();app.UseWelcomePage();语句注释掉才行。猜测是Nowin.vNext服务器中未实现所产生的问题。

    客户端访问

    因为在这个试验中所用的Ubuntu Server未安装桌面环境,所以也就不能在虚拟机中查看以上的结果。不过既然虚拟机已然成了服务端,不妨就把宿主机当成客户端吧。

    在VirtualBox的网络设置中将连接方式改成桥接网卡,这样宿主机就可以通过IP地址访问虚拟机。

    上一例子的Web服务器端口号为8080,所以在宿主机的浏览器上输入“虚拟机ip地址:8080”并轻击回车后也就能看到最终的成果了。Smile

     

     

     

     

     

    分类: ASP.NET

  • 相关阅读:
    day25:接口类和抽象类
    vue1
    How the weather influences your mood?
    机器学习实验方法与原理
    How human activities damage the environment
    Slow food
    Brief Introduction to Esports
    Massive open online course (MOOC)
    Online learning in higher education
    Tensorflow Dataset API
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3809776.html
Copyright © 2011-2022 走看看