威尼斯真人网上娱乐使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用,api分析器

使用Api分析器与Windows兼容包来编写智能的跨平台.NET Core应用,api分析器

本文翻译自Scott Hanselman博客:

正文:

这是最近这几周你应该知道的一对.Net
Core界的优秀工具。我们在编写或者移植跨平台代码时,它们非常有帮助。

前言首先提一下微软更名后的叫法:

1.开篇说明

  a 上篇博客简单的说明了一下 使用.NET
Core开发的一个总结,地址是:(),那么这篇博客我们就在上一篇博客的基础上对其代码进行部署,将其部署在Linux
Centos7下。

  b
这周周二,也就是3月7号,微软发布了最新的开发工具(Visual Studio
2017),简单看了一下,带来了更好的开发体验,也推动了跨平台开发的一大步,未来.NET的跨平台将更加的成熟。

  c 下面我们将一个.NET
Core项目利用Jexus部署到linux下,那么如果我们要将一个.NET
Core项目部署到linux服务器下,需要准备下面的几个东西(Linux服务器,Jexus,安装数据库的服务器,其它(Redis)等)。

  d 下面我们开始大致演示一下如何将.NET
Core项目部署到linux服务器下,测试地址:

.NET API 分析器

首先是API
分析器。如你所知,有时候我们会遇到过时的API,或者一个方法你可以在Windows下使用,但是在Linux下却不能工作。API分析器是一个Roslyn(Roslyn是C#/.NET编译器的名称)分析器,它可以很容易地添加到你的项目,通过一个NuGet包。你所要做的就是添加这个包,之后你将立即得到警告,或者波浪线表示API有问题。

看看这个简单地例子。我将生成一个简单地控制台应用,它已经添加了API分析器。注意这个版本号是目前的,以后会改变。

C:\supercrossplatapp> dotnet new console
C:\supercrossplatapp> dotnet add package Microsoft.DotNet.Analyzers.Compatibility --version 0.1.2-alpha

 然后我将使用一个只能在Windows下使用的API。但是我依旧希望在任何平台下都可以运行。

static void Main(string[] args)

{

    Console.WriteLine(“Hello World!”);

 

    if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))

    {

        var w = Console.WindowWidth;

        Console.WriteLine($”Console Width is {w}”);

    }

}

之后我使用“dotnet
build”命令(或者运行命令,运行也包含build动作)然后我得到了一个漂亮的警告,这个API不能工作在所有平台下。

C:\supercrossplatapp> dotnet build

Program.cs(14,33): warning PC001: Console.WindowWidth isn’t supported on
Linux, MacOSX [C:\Users\scott\Desktop\supercr

ossplatapp\supercrossplatapp.csproj]

  supercrossplatapp ->
C:\supercrossplatapp\bin\Debug\netcoreapp2.0\supercrossplatapp.dll

Build succeeded.

.NET团队的Olia做了一个很好的YouTube视频,她的视频展示了API分析器是如何工作的。API分析器的代码已经上传到Github。如果你发现了bug请在上面提issue!

  • ASP.NET 5更名为ASP.NET
    Core 1.0
  • .NET Core更名为.NET Core
    1.0  
  • Entity Framework
    7更名为Entity Framework Core 1.0 或者简称 EF Core 1.0

    现在伴随着ASP.NET Core 1.0
    RC2版的更新速度,许多官方文档都跟不上,还停留在RC1版的使用方式上(RC1版是继Beta版之后第一个发布的稳定版本)。RC1和RC2的区别在于RC1版使用dnvm、dnx来restore
    packages和run(dnu是包含在dnx中的),而RC2版会基于.NET Core
    CLI,使用dotnet命令来进行building,compiling, NuGet package management,
    running, testing。如果想了解更多ASP.NET Core 1.0
    的发布进度和里程碑可以查看:ASP.NET Core 1.0 Schedule and
    Roadmap。就目前而言,在某些系统中我们已经可以遗弃mono,只使用.NET
    Core 和.NET Core CLI
    就可以提供对.Net程序进行生成编译运行环境(同时包含.NET
    Core 和.NET Core CLI的.NET Core
    SDK二进制包,可以在这里下载)。至于mono的未来,微软的SocttHunter和Scott
    Hasnselman说到:切换到MIT开源许可协议的mono将作为公司未来构建一个统一.NET库的计划中的一部分,了解详情。可见开源的mono会逐步融入.NET
    Core体系中。

  • .NET Core SDK=.Net
    Core+.NET Core command-line(简称CLI\.NET CLI\.NET Core CLI,dotnet
    commands)

  • .NET Core=基础类库.NET
    Core Framework+运行时.NET Core
    Runtime+编译器管理(如管理编译器Roslyn)+More

2.Jexus简单说明

  a
官网地址:

  b
关于Jexus的安装,我以前也写过一篇文章,地址是(),我写的这篇文章是基于Mono安装的,什么意思呢,也就是说要安装Jexus,就要安装Mono,但是现在Jexus提供了免Mono安装的方案,非常方便,大家可以体验一下,如果安装遇到什么问题,大家可以在官网或者其他地方进行查询解决。

  c
Jexus快捷安装((一对命令将会安装成功Jexus))

    1.安装:sudo curl jexus.org/release/install | sh

    2.更新:sudo curl jexus.org/release/upgrade | sh

    说明:使用这种命令的安装方法将会吧Jexus安装到/usr/jexus 位置。

.NET CORE的windows兼容包

第二个,.NET Core的Windows兼容包是一个很好的补充技术。当.NET Core
2.0开发完成并推出后,它包含3.2万个很好地兼容现有.NET
Framework代码的API。实际上,它们确实兼容地非常好,我之前可以很容易地将一个15年前的.NET程序移植到.NET
Core2.0上,这个过程中都没有碰到什么麻烦。

从.NET Standard1.6的1.3万个api到.NET
Standard2.0的3.2万个API,他们增加了一倍多的可用API

.NET Standard非常的酷炫,因为它支持如下平台:

  • .NET Framework 4.6.1

  • .NET Core 2.0

  • Mono 5.4

  • Xamarin.iOS 10.14

  • Xamarin.Mac 3.8

  • Xamarin.Android 7.5

当你迁移代码到.NET
Core时会有大量的Windows平台特有的依赖,你可能会遇到有些API在.NET
Standard找不到的情况。这时,这个新的NuGet包Microsoft.Windows.Compatibility(预览),它可以提供原先只在.NET
Framework可用的API。

在这个兼容包里面的API会包含两种类型。一种是这个API原先就是Windows的一部分,但是也可以跨平台工作。另外一种是只能在windows下工作,因为他们是操作系统特有的。例如,API访问WIndows注册表这是Windows下独有的。但是System.DirectoryServices或者System.Drawing他们却可以在任何平台都工作的很好。Windows兼容包在.NET
Core现在可用Api的基础上新增呢20000多个API。可以参阅Immol录制的视频。

问题在于,如果这些不可用API是你使用.NET
Core的拦路虎,那么现在你可以借助兼容包,耶!但是你要知道你为什么需要迁移到.NET
Core。.NET Core与完整版.NET
Framework都可以在Windows上工作。如果你的程序目前工作的很好,并且不需要.NET
Core的新特性,那么就不需要移植到.NET Core。这是规则列表:

使用.NET Core的情况:

  • 你有跨平台需求

  • 你的目标是微服务

  • 你使用Dorcker容器

  • 你有高性能与可拓展需求

  • 你需要同步.NET版本

使用.NET Core的情况:

  • 你的程序当前使用.NET Framework(推荐采用拓展来替代迁移)

  • 你的程序使用第三方.NET库或者NuGet包,它们的.NET Core版本还不可用

  • 你所使用的.NET技术在.NET Core上还没有支持

  • 你的程序所使用的操作系统平台目前.NET Core还不支持

本文章主要介绍ASP.NET Core 1.0
RC2版的跨平台部署,作为第一步,有助于理解程序的运行环境和机理)。如果想了解跨平台部署RC1版,请查看

3.Visual Studio 2015本地发布并且测试

  a
在本地系统开发完成之后,首先我们需要在本地发布进行测试一下,如果不报错,则上传到服务器

  b
本地项目结构如下图所示:我们就基于本项目进行发布部署到Linux下。

    威尼斯真人网上娱乐 1

    b.1
首先打开cmd,切换到项目所在盘符下,将项目切换到src根目录下(../src/项目名称下),运行命令dotnet publish,运行不报错则本地发布成功,如图所示执行成功之后也展示了将项目发布到什么地方的路径。

    威尼斯真人网上娱乐 2

    b.2
如上图所示,我们跳转到发布的路径下(项目根目录下/bin/Debug/netcoreapp1.0/publish下/),运行命令:dotnet ProgrammersLiveShow.dll ,根据提示访问地址,可本地测试吗,如图所示:

    威尼斯真人网上娱乐 3

  c
如上图所示,我们按照访问路径(),如果访问成功,则证明本地发布没有任何问题,如下图所示:如有操作登录的功能,则进行系统登录测试,确认没有任何问题在进行发布。 

    威尼斯真人网上娱乐 4 

  • Installing ASP.NET 5 On
    Cross-Platform
  • Running ASP.NET 5 applications in Linux
    Containers with Docker
  • .NET Core + ASP.NET Core
    1.0 RC1 bits

4.配置Jexus并且部署.NET Core说明

  a
上述步骤中我们简单说明了一下系统的一些功能以及本地发布,现在我们来简单说明一下如何配置Jexus,因为以前安装过jexus,我们直接在Linux下找到安装的路径,如图所示:

    威尼斯真人网上娱乐 5

  b
如上图所示,我们看到了jexus的安装目录,Jexus的配置其实也很简单,首先我们打开网站配置文件夹siteconf,然后打开默认的default文件,看到如下图所示的配置,配置上简单的说明如下:

    威尼斯真人网上娱乐 6        

  c 如上图所示,我们将其项目部署到系统(/var/www/default/publish)下

    威尼斯真人网上娱乐 7

  d
首先我们将本地发布的文件上传到服务器上,直接将本地的publish文件夹上传到/var/www/default下,如下图所示

    威尼斯真人网上娱乐 8

  e 因为我现在系统本身已经发布,所以需要将现在后台运行的线程关闭(执行下面两条命令之后,则已经上线的系统会不能访问),如果是首次发布,则不需要进行这一步,命令如下,如图所示:

    (1):ps -ef | grep ProgrammersLiveShow.dll  

    (2):kill -9 PID

    威尼斯真人网上娱乐 9

  f
上传完成之后,系统跳转到publish下,执行dotnet ProgrammersLiveShow.dll,运行成功并且可以访问,则说明发布才成功,但是这样有一个弊端,就是发布之后不能关闭Xshell,如果关闭则默认程序会推出,所以,我们可以使用下面的命令直接将其设置为在后台运行

        命令如下:nohup dotnet ProgrammersLiveShow.dll &

    威尼斯真人网上娱乐 10

  g
上述步骤全部执行完成之后使用服务器域名加80端口号既可以进行访问,这里可能存在配置80端口号对外访问的权限,在下面会简单说明

下面会分别介绍在Dokcer、CentOS、Ubuntu环境中的部署方式,Windows比较简单,就不作介绍。运行的ASP.NET
Core程序以cli-samples的HelloMvc为例。一、在Docker中运行

5.其它知识点总结

    a
在系统频繁的更新中,做好备份是很关键的一件事情,在每次的上线替换系统之前都要执行如下命令进行备份:

     
  tar zcvf /var/www/default/remark/(日期)publish.tar.gz /var/www/default/publish/

    b Centos7开放端口,Centos7和7以前开放端口的实现不一致.

       
b.1 Centos升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口

       
b.2 开启端口: firewall-cmd –zone=public –add-port=80/tcp –permanent   –zone #作用域  –add-port=80/tcp #添加端口,格式为:端口/通讯协议 –permanent #永久生效,没有此参数重启后失效 

        b.3 重启防火墙 firewall-cmd –reload 

        b.4 开启防火墙: systemctl start firewalld

 

  一个学习.NET
Core权限配置的源码购买地址:

        每天一点点都是进步

           
 如果文章哪里存在问题,欢迎大家指出来,我会在第一时间修改。

1、环境

这里演示的Docker宿主机环境是CentOS7,下面介绍Docker在CentOS7上的安装。在其他系统中安装Docker,请查看Install
Docker Engine提示:CentOS在7中已经启用firewalld作为新的防火墙,替换掉原先的iptables。而Docker对firewalld的兼容性虽然不太好,但对下面的例子运行中暂时没发现有影响。
威尼斯真人网上娱乐 11

2、安装docker

首先查看CentOS的内核版本(CentOS7系统必须为64位,内核必须3.10及以上)

uname -r3.10.0-229.el7.x86_64

更新已经安装的包

sudo yum update  

安装docker

curl -fsSL https://get.docker.com/ | sh

启动docker

sudo service docker start 或 systemctl start docker

运行docker hello world
demo

sudo docker run hello-world

3、创建docker用户组

此用户组具备管理员权限,以后执行docker命令可以不加sudo(这里只做演示,直接使用root)
以带有管理员权限的用户登入控制台
sudo usermod -aG dockeryour_username

登出再登入控制台

不带sudo执行docker
run
hello-world,看是否正确输出Hello world

设置开机启动sudo
chkconfig docker on 或 systemctl enable
docker

4、docker相关概念

container:容器,用来加载各种image,可以看成操作系统。加载各种app。允许多个容器同时运行,并且容器一般无法相互访问宿主服务器资源,除非挂载数据卷volume之类的,数据卷的使用可以参照:
威尼斯真人网上娱乐 12威尼斯真人网上娱乐 13

docker images //显示所有镜像文件docker ps -q -a //显示所有容器docker run -it --name dn_container -d -p 5000:5000  microsoft/dotnet:latest //新增一个容器用于加载 microsoft/dotnet:latest镜像文件,-p host port:container portdocker run -it --name dn_container -d -p 127.0.0.1:5000:5000  microsoft/dotnet:latestdocker start dn_container //启动容器docker attach dn_container //关联并进入启动容器,需要先启动容器docker stop dn_container //停止容器docker kill $(docker ps -a -q) //强制停止所有容器docker rm $(docker ps -a -q) //删除所有容器doker commit ContainerID NewImageName //将容器里的内容提交为新的镜像文件docker rmi -f 7d9495d03763 //删除所有容器//标记镜像,push到Docker Hubdocker imagesdocker tag a66b7258f574 sobit17/sobit-dotnet:1.0.0-beta-002252docker imagesdocker login --username=test --email=test@qq.comdocker push sobit17/sobit-dotnet

docker常用命令

5、制作HelloMvc image

在运行cli-samples的HelloMvc例子前,需要把HelloMvc打包成docker
image文件。
5.1
首先安装git,克隆cli-samples下来

mkdir appcd appgit clone https://github.com/aspnet/cli-samples.gitcd cli-samples

需要显式指定HelloMvc的端口(即使指定的是5000端口),目前尝试过不加下面这段代码,发现默认的5000并不起作用

威尼斯真人网上娱乐 145.2
在HelloMvc的当前目录执行,并备好NuGet.config和Dockerfile文件NuGet.config:读取package下载的源地址(nuget
seeds);Dockerfile:制作image必须;5.2.1创建NuGet.config文件可以从上级目录cli-samples中拷贝一个NuGet.config到HelloMvc目录中,如果没有这个NuGet.config
在还原package时会默认到.nuget/NuGet/加载NuGet.config。因为源不对,会导致某些packeage下载不到。

//拷贝命令cp -p  /root/app/cli-samples/NuGet.Config  /root/app/cli-samples/HelloMvc/NuGet.Config  

威尼斯真人网上娱乐 15

威尼斯真人网上娱乐 165.2.2创建Dockerfile文件在创建image时,.NET CLI Preview
Docker Image提供了两个基础dotnet
image用于继承(里面装载的其实是部署了.NET
Core的Ubuntu系统),区别在于它们的Dockerfile不同

  • dotnet:0.0.1-alpha

  • dotnet:0.0.1-alpha-onbuild

dotnet:0.0.1-alpha的Dockerfile,基于buildpack-deps:trusty-scm威尼斯真人网上娱乐 17威尼斯真人网上娱乐 18dotnet:0.0.1-alpha-onbuild基于dotnet:0.0.1-alpha,(ONBUILD<Dockerfile关键字>ONBUILD指定的命令在构建镜像时并不执行,而是在它的子镜像中执行)威尼斯真人网上娱乐 19威尼斯真人网上娱乐 20所以HelloMvc的Dockerfile可以有两种写法,各选其一 基于dotnet:0.0.1-alpha

FROM microsoft/dotnet:latestRUN mkdir -p /webappCOPY . /webappWORKDIR /webappRUN ["dotnet", "restore"]RUN sudo apt-get -y update \    && sudo apt-get install -y dialog make automake libtool curl  RUN curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src \     && cd /usr/local/src/libuv-1.8.0 \     && sudo sh autogen.sh \    && sudo ./configure \     && sudo make \     && sudo make install \     && sudo rm -rf /usr/local/src/libuv-1.8.0 \     && cd ~/ \     && sudo ldconfig  EXPOSE 5600 ENTRYPOINT ["dotnet", "run"]

基于dotnet:0.0.1-alpha-onbuild

FROM microsoft/dotnet:0.0.1-alpha-onbuild RUN sudo apt-get -y update \    && sudo apt-get install -y dialog make automake libtool curl RUN curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src \    && cd /usr/local/src/libuv-1.8.0 \    && sudo sh autogen.sh \    && sudo ./configure \    && sudo make \    && sudo make install \    && sudo rm -rf /usr/local/src/libuv-1.8.0 \    && cd ~/ \    && sudo ldconfig  EXPOSE 5600

5.2.3
检测Dockerfile是否能正常使用
由于.NET
Core时刻在更新,所以导致官网NET CLI Preview Dockerimage提供的dotnet
image更新不及时而在执行dotnet restore时候会报错:unknown keyword platform(主要是dotnet
image内部的.NET
Core和CLI版本过旧,且存在bug),会导致基于它的咱们的Dockefile执行失败。如果不确定你当前的dotnet
image是否有上述问题,下面会介绍一种检测方法和问题的解决方案检测方法
执行下面命令加载dotnet
image,且一般会自动启动test_container并进入到image内部环境中,如果你服务器上没有dotnet
image,下面命令也会自动下载docker run –name test_container
-it microsoft/dotnet:latest
如果test_container未启动,则执行下面命令启动并关联进入docker start
test_containerdokcer
attach test_container进入到image内部环境中

mkdir testcd testit clone https://github.com/aspnet/cli-samples.gitcd cli-samplesdotnet restore

查看是否报错

清除测试文件

cd ~rm -r test

解决方案

手工制作一个使用最新.NET
Core SDK的dotnet image,也可以使用我已经做好的image
sobit17/sobit-dotnet:1.0.0-beta-002252,当然如果没报错可以省略这一步,用回原来的dotnet
image.制作新的image这里选用dotnet:0.0.1-alpha为原型,也可以使用dotnet:
0.0.1-alpha-onbuild加载dotnet image

docker run --name dotnet_container -it microsoft/dotnet:0.0.1-alpha 

如果dotnet_container未启动,则执行下面命令启动并关联进入

docker start dotnet_container dokcer attach dotnet_container 

查看.NET Core版本(dotnet
image中使用的是Ubuntu14.04系统)

dotnet --version或dotnet --info

威尼斯真人网上娱乐 21
由于对应Ubuntu的dotnet
package最高只到1.0.0-beta-00.1793,但这个版本也有上述bug。(查找可以使用apt-cache search
XX|grep
XX(XX为你知道的一部份软件名),也可以从这里查看 dotnet 或apt-get remove dotnet
=1.0.0.001598-1apt-get install
dotnet=1.0.0.002252-1(Ubuntu没这个最新版本)
只能从github下载二进制文件,安装到最新版本(最新版本可以从github上面查到:

apt-get updatewget https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/Latest/dotnet-dev-ubuntu-x64.latest.tar.gztar -zxf dotnet-dev-ubuntu-x64.latest.tar.gz -C /usr/bin 

或

apt-get updatewget https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/Latest/dotnet-dev-ubuntu-x64.latest.tar.gztar -zxf dotnet-dev-ubuntu-x64.latest.tar.gzln -s /dn_new/dotnet /usr/bin/dotnet

接下来执行下面命令

dotnet --info //查看版本exit //退出容器docker images //查找dotnet_container 的ConrainerIDdocker commit 3a09b2588478(ContainerID) dotnet_new(new image name) //commit成一个新的image 

至此base
image制作完毕。

接下来只要修改HelloMvc的Dockerfile以指定这个新的image作为基础镜像

FROM dotnet_new 或 sobit17/sobit-dotnet:1.0.0-beta-002252RUN mkdir -p /webappCOPY . /webappWORKDIR /webappRUN ["dotnet", "restore"]##备注:安装libuv这一过程其实可以在制作dotnet_new镜像时也安装进去,就不需要下面这段【注释在Dockerfile中需删掉】RUN sudo apt-get -y update \    && sudo apt-get install -y dialog make automake libtool curl RUN curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src \    && cd /usr/local/src/libuv-1.8.0 \    && sudo sh autogen.sh \    && sudo ./configure \    && sudo make \    && sudo make install \    && sudo rm -rf /usr/local/src/libuv-1.8.0 \    && cd ~/ \    && sudo ldconfigEXPOSE 5600ENTRYPOINT ["dotnet", "run"]

所有把HelloMvc制作成image的资料已经准备完毕。

威尼斯真人网上娱乐 225.2.4 制作 HelloMvc
image,当前目录移动到HelloMvc中,执行下面命令(制作过程中可能会因为网络问题报错,可以重复执行下面这个命令直到成功就可以了)

docker build -t hellomvc-image . //记得命令最后有'.'

威尼斯真人网上娱乐 23
6、编译运行HelloMvc

  • 编译试运行:docker run
    –rm -w /webapp hellomvc-image
  • 运行:dockerrun-t–nameweb_container-d-p5100:5600hellomvc-image

打开浏览器
威尼斯真人网上娱乐 24威尼斯真人网上娱乐 25
二、在CentOS
7中运行

1、环境

这里演示的环境是CentOS7,64bit

2、安装.NET Core
SDK

sudo yum updatemkdir dn_clicd dn_cliwget https://dotnetcli.blob.core.windows.net/dotnet/beta/Binaries/Latest/dotnet-dev-centos-x64.latest.tar.gztar -zxf dotnet-dev-centos-x64.latest.tar.gz 

尝试执行命令:.
/dotnet

提示错误:

Failed to
load /root/dotnet/bin/libcoreclr.so, error: libunwind.so.8: cannot open
shared object file: No such file or directory

解决方法:

yum install
-ylibunwind

尝试执行命令:.
/dotnet

提示错误:

Failed to
initialize CoreCLR, HRESULT: 0x80131500

解决方法:

yum install -yicu

尝试执行命令:. /dotnet
–info,正常。威尼斯真人网上娱乐 26

永久保存环境变量

找到/etc/profile文件(当用户第一次登录时,该文件被执行.),在最后面添加:

PATH=~/dn_cli:$PATHexportPATH即时生效source/etc/profile

3、下载cli-samples的HelloMvc例子

cd ~
sudo yum -y install gitmkdir appcd appgit clone https://github.com/aspnet/cli-samples.gitcd cli-samplesdotnet restorecd HelloMvc

需要显式指定HelloMvc的端口(即使指定的是5000端口),目前尝试过不加下面这段代码,发现默认的5000并不起作用

威尼斯真人网上娱乐 27

4、编译运行HelloMvc

将执行命令的当前目录定位到HelloMvc,并执行下面命令

dotnet run


打开浏览器 http://IP:5600(防火墙和查看网络相关命令请查看本篇文章第四点)

三、在Ubuntu
14.04中运行

1、安装Ubuntu
Installers

apt-get update
mkdir dn_clicd dn_cliwget https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-host-ubuntu-x64.latest.debwget https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-sharedframework-ubuntu-x64.latest.debwget https://dotnetcli.blob.core.windows.net/dotnet/beta/Installers/Latest/dotnet-sdk-ubuntu-x64.latest.deb//安装dpkg -i dotnet-host-ubuntu-x64.latest.debdpkg -i dotnet-sharedframework-ubuntu-x64.latest.debdpkg -i dotnet-sdk-ubuntu-x64.latest.deb

//如果执行上述安装语句后提示缺少依赖包,可以执行下面命令会自动补全依赖包,然后再重新执行报错的安装语句
apt-get -f install

2、下载cli-samples的HelloMvc例子

cd ~
apt-get -y install gitmkdir appcd appgit clone https://github.com/aspnet/cli-samples.gitcd cli-samplesdotnet restorecd HelloMvc

需要显式指定HelloMvc的端口(即使指定的是5000端口),目前尝试过不加下面这段代码,发现默认的5000并不起作用

威尼斯真人网上娱乐 28

3、编译运行HelloMvc

dotnet run

打开浏览器 http://IP:5600(防火墙和查看网络相关命令请查看本篇文章第四点)

威尼斯真人网上娱乐 29威尼斯真人网上娱乐 30

四、其他1、开启、禁用firewalld等相关命令(iptables、docker相同)威尼斯真人网上娱乐 31威尼斯真人网上娱乐 32

systemctl status firewalld或firewalld.service  ##查看firewalld是否启动。active代表启动systemctl start firewalld  ##如果firewalld没启动,可以使用此命令启动systemctl enable firewalld  ##设置为随机器启动systemctl stop firewalld  ##关闭firewalldsystemctl disable firewalld ##清除随机器启动systemctl restart firewalld ##重启firewalld

View Code2、防火墙firewalld常用命令威尼斯真人网上娱乐 33威尼斯真人网上娱乐 34

firewall-cmd --state           ##查看防火墙状态,是否是runningfirewall-cmd --list-all         ##查看所有规则firewall-cmd --reload         ##重新载入配置,比如添加规则之后,需要执行此命令firewall-cmd --get-zones   ##列出支持的zonefirewall-cmd --get-services##列出支持的服务,在列表中的服务是放行的firewall-cmd --query-service ftp##查看ftp服务是否支持,返回yes或者nofirewall-cmd --add-service=ftp  ##临时开放ftp服务firewall-cmd --add-service=ftp --permanent##永久开放ftp服务firewall-cmd --add-service=http --permanent##永久开放http服务firewall-cmd --remove-service=ftp --permanent##永久移除ftp服务firewall-cmd --add-port=80/tcp --permanent  ##永久添加80端口  firewall-cmd --zone=public --add-port=80/tcp --permanent   ##--zone #作用域

View Code3、防火墙iptables常用命令威尼斯真人网上娱乐 35威尼斯真人网上娱乐 36

iptables -L -n  --line-number     #查看防火墙的规则链iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPTiptables -I INPUT -d 172.16.100.1 -p tcp --dport 22 -m state --state NEW -j ACCEPTiptables -A INPUT -i lo -j ACCEPT              #测试不加此条会导致mysql在内部无法连接查看/etc/sysconfig/iptables文件(记录着防火墙的规则链)如果没有这个文件,请执行下面命令保存iptables-save > /etc/sysconfig/iptables查看保存后的规则cat /etc/sysconfig/iptables

View Code

4、部分网络端口查询命令

威尼斯真人网上娱乐 37威尼斯真人网上娱乐 38

netstat -tunlp -a # 查看所有网络端口情况netstat -l -n  #查看监听的端口,-n 代表显示端口数字而不是名称netstat -antp #查看所有建立的TCP连接

View Code

相关资料:

  • Getting started with .NET Core
  • Running ASP.NET 5 applications in Linux Containers with Docker
  • Get Started with Docker Engine for Linux
  • .NET CLI Preview Docker Image
  • Installing ASP.NET 5 On Linux
  • Docker Dockerfile详解
  • 最新版dotnet-cli下的ASP.NET
    Core和asp.net mvc
  • ASP.NET Core 1.0 Hello World
  • CentOS 7.1下安装dotnet core

作者:B.it
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

相关文章