今天开始学习dotnet core的开发,距离Visual Stuio 2017正式版的发布,也就是VS20周岁的生日还有三天,在我的电脑上安装的是VS2017 Enterprise RC版, 在VS2017RC版本中dotnet core的版本是1.1版本,很快随着VS正式版的发布,2.0也随之上线了,dotnet core 1.1版本和之前的1.0版本呢,很大的区别就在于,project.json文件的变化,在1.1版本上,是把project.json合并到了.csproj和MSBuild文件了,没错使用1.1创建的项目,我们熟悉的.csproj解决方案又回来了,project.json文件也不存在了,关于这个的变化在我其中一篇博客中也已经提到了,不多说。本人对刚开始的1.0版本也没过多深入研究,就直接从1.1入手了,说实话有点措手不及,网上教程大都是1.0的教程,还是慢慢摸索吧。

  学习一门语言之前,我们都是从“Hello World”入手的,作为我们这些撸了几年码的人来说,就算了吧,我就偷偷的自己尝试了一下,在这里就不多说了。言归正传,今天直接从网站发布开始学起,先看如何去创建我们的dotnet core web应用程序。

选择新建->项目->.NET Core->ASP.NET Core Web应用程序(.NET Core),这里.net Framework的版本默认的是4.5.2,我都保持默认,不作任何修改了

我选择了ASP.NET Core1.1版本,我也不知道选择1.0有什么不同,只是喜欢保持最新,就选了1.1版本,下面的模板选择Web应用程序,其他的身份验证还有Docker的支持,以后再说。

点击确定后,就看到我们创建好的项目了,看下解决方法的结构,是不是很熟悉的感觉

没错跟MVC是很相似的,MVC6在dotnet core中起了关键性的作用,我们在看下默认创建的HomeController,

在MVC中我们可以在Index右键转到视图,在这里已经不支持了,需要自己去View视图中查看了

为了好看我把这些默认的都删掉,写的简单些,修改后如下图:

下面直接右键在浏览器中查看,如图:

经测试我们的Web应用程序是可以正常运行的,下面我们将我们的Web发布下,发布的是方式跟Asp.Net传统的发布方式是相同的,也不能这么说,才发现在VS2017中发布的界面也改了,已经不是原来的容颜了,找不到之前的配置了,/苦笑,不过大同小异,右键我们的项目选择发布,如图:

我还是默默的选择了文件夹,以前习惯的方式是新建配置文件,现在没有了,在“文件夹”后面一项成了导入配置文件,我猜测当你选择了文件夹后,它会自动生成配置文件

点击发布,毫无疑问成功了,看下发布后的文件夹

我们使用cmd命令切换到这个目录下,输入dir,就可以看到当前文件夹下的所有目录

那么我们怎么测试我们发布的网站能否正常运行呢?继续使用我们的命令行来测试,为了防止VS的干扰,我们将VS关闭,还是保持命令行中切换到发布目录下,我们都知道,在发布的dll文件中,以我们的项目名称生成的dll文件就是我们的Web的主要的dll文件,我们就直接使用dotnet命令启动我们的Web,如图所示:

很明显其中的一句话“Now listening on : http://localhost:5000”,提示我们可以使用此地址进行访问我们的网站了,dotnet core 发布的网站默认端口是5000,

我已经将VS关闭了,所以刚才的地址已经失效了,我们重新使用5000端口进行访问,如图:

以上我们确定我们的Web是没有问题的,那么我们下面将我们的Web应用发布到Linux系统中,本想在Win10里面将Linux启用,谁承想下载了半天总是网络连接失败,使用Putty.exe,

害得我只能买了台阿里云服务器,还好老用户还有50块钱的券,Linux服务器安装的CentOS7.2,我登陆到了Linux 服务器,如图:

以上可以看到Linux的系统信息,这台服务器中呢是没有dotnet 环境的,可以使用命令“dotnet --version”测试,提示dotnet:command not found,

我们需要按照dotnet core官网,安装dotnet环境,这里的版本是CentOS 7.2,转到CentOS安装dotnet core ,安装命令如下:(注意要针对自己的Linux版本安装)

下面开始紧张的环境搭建,就怕会出现错误,最开始从朋友那儿借了台Ubuntu的服务器,一直出错,没有找到解决办法,放弃了。开始第一条命令:

我的内心是鸡冻的,很完美的成功了,继续下一条命令:

悄无声息,不过应该是成功的节奏,继续:

还是悄无声息,再继续:

索性一次性都执行完了,最后看到Hello World,我笑了。我们可以看下他生成了什么文件:

当然这里还是用的project.json文件,之后的版本不知道是怎么样的,慢慢学习吧。到这里,还学习了下怎么通过命令去修改文件的内容,原谅我是Linux小白,

使用命令 vi Program.cs,直接进入这个文件的编辑模式:

通过光标移动,然后修改要修改的内容,编辑完成后,按ESC退出编辑模式,输入“::wq”命令进行保存退出。我们再来执行下这个示例程序

下面我们将刚开始的网站发布到CentOS上,使用了个类似FTP的工具,叫做WinsCP,大家可以直接搜索下载,上图:

这里我们可以看到刚创建的hwapp这个项目的目录,还有个压缩包,那是

安装dotnet时的压缩包,看到这个应该明白了那几天安装命令的含义了。跟使用FTP一样,我们把本地发布的Web应用先上传到服务器上,就不用说怎么用了。

当我们登陆以后,默认显示的是root目录,这里相当于系统的根目录,所以下面在进入相应的文件目录时,注意相对的路径问题。上传完成以后,如图:

下面我们开始启动我们的Web,使用命令行去调用DotNetCoreWebDemo01.dll,我这里是运行成功的。

很奇怪的是,我最开始直接执行dotnet DotNetCoreWebDemo01.dll命令时是报错的,大概的意思是提示找不到project.json文件,如果大家遇到了这个问题的话,

可以把刚刚我们生成的hwapp测试项目中的project.json文件拷贝到web目录下,然后执行“dotnet restore”命令进行还原,会把项目中用到程序包还原到project.json

文件中(或者直接运行dotnet restore命令,我未尝试过,由于做的过程中出现了无法解释的错误,我刚把服务器恢复到了初始状态,再进行发布的时候,居然

不出错了,我也没找到原因,居然直接就执行成功了。。。),我们现在就去运行下我们的Web,好期待。。。

真是当头一棒,很多事真的是经常跟我们想象的相差甚远啊,根据以往的经验,或许是服务器防火墙的原因,应为Web应用程序本身是启动正常的,那我们就看下防火墙。

执行命令:firewall-cmd --state 查看当前防火墙的状态 执行结果为Not Runing,意思就是未运行,现在也不知具体的原因导致为何无法运行。使用命令:

firewall-cmd --list-all 查看当前开放的端口,由于当前FirewallD is not Runing ,所以这些命令都是无法使用的,需要将防火墙开启,相关命令如下:

systemctl start firewalld         # 启动,
systemctl enable firewalld         # 开机启动
systemctl stop firewalld           # 关闭
systemctl disable firewalld       # 取消开机启动,执行start命令后再执行firewall-cmd --list-all 命令,如图所示,没有开放的端口,那我们就把5000端口给开放。

使用命令行:firewall-cmd --zone=public --add-port=5000/tcp --permanent,依次执行

firewall-cmd --reload立刻生效,filrewall-cmd --list-all 显示所有开放端口,此时可以看到 prots那项中,存在5000/tcp,此时已经开放了5000端口,我们再运行

看能否启动我们的Web,首先还是要使用dotnet .dll命令运行Web,再进行端口访问,如图:

还是同样的问题,写到这里,具体的原因我还是不清楚,这里的解决方法在下一篇博客中介绍,解决方案使用Nginx代理服务器,明天见。

扫描二维码关注我的公众号,共同学习,共同进步!

2017-03-04 dotnet core网站发布到Linux系统中的更多相关文章

  1. ASP.NET Core 网站发布到Linux服务器(转)

    出处;ASP.NET Core 网站发布到Linux服务器 长期以来,使用.NET开发的应用只能运行在Windows平台上面,而目前国内蓬勃发展的互联网公司由于成本的考虑,大量使用免费的Linux平台 ...

  2. ASP.NET Core 网站发布到Linux服务器

    长期以来,使用.NET开发的应用只能运行在Windows平台上面,而目前国内蓬勃发展的互联网公司由于成本的考虑,大量使用免费的Linux平台,这就使得.NET空有一身绝技但无法得到广大的施展空间,.N ...

  3. 如何将dotnet core webapi发布到docker中…

    如何将dotnet core webapi发布到docker中 今天想起来撸一下docker,中途还是遇到些问题,但是这些问题都是由于路径什么的导致不正确,在这儿还是记录下操作过程,今天是基于wind ...

  4. 关于.net Core项目发布在Linux上的填坑

    本文主要记录.net Core项目发布在Linux服务器上面所遇到的问题,防止遗忘是 1.在发布文件中执行 dotnet xxxxxx.dll的时候提示如下错误: An assembly specif ...

  5. .Net Core 项目发布到Linux - CentOS 7(一)

    由于项目的需求,需要发布到Linux服务器上,在这里记录一下我发布的过程. 安装Linux 安装liunx系统很简单,网上也有很多教程,我是直接使用阿里云的CentOS 7.7 64位 部署环境 Li ...

  6. AspNet Core 发布到Linux系统和发布IIS 注意项

    AspNet Core 发布到Linux系统和发布IIS 注意项 1.发布时需要注意的 2.Windows Server 2012 api-ms-win-crt-runtime-l1-1-0.dll ...

  7. code first网站发布后数据表中没有数据问题

    code first网站发布后数据表中没有数据问题 (1).将internal sealed class Configuration类访问修饰符改为public  class Configuratio ...

  8. CYQ.Data 正式支持 DotNET Core 版本发布

    闲话几句: 自从上周开始,IOS人员逝去,就开始接手IOS的代码了. 并开始整理IOS的代码(包括当时一开始设计的开发框架). 在未来不远的日子里,设想是有一个系列详细的介绍I恋App和IT连App及 ...

  9. 将Windows系统编译的.NET Core程序发布到Ubuntu系统

    在可移植方面.NET Core应用程序分为两种,Portable application(便捷,需要目标机器安装.NET Core Runtime)和Self-contained applicatio ...

随机推荐

  1. <2013 08 26> 雅思听力相关

    近两日开始接触雅思题型,初步做了6套剑桥雅思题的听力部分,完成情况还可以,这里做个总结. 1.听力总共约40左右道题目,30min左右完成,结束后有十分钟把答案写到答题卷上.所有听力材料都只播放一遍! ...

  2. <2013 08 20> -----澳大利亚博士研究生申请-----

    1.澳大利亚昆士兰大学博士的申请一年中什么时间都可以,但奖学金的评选每年只有四轮.和美国不同的是,在提交申请材料之前,个人必须联系好愿意接收你的导师,这个可以自己套磁联系,也可以和那边学院的小秘联系, ...

  3. python系列六:Python3元组tuple

    '''元组与列表类似,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号.''''''uple元素不可变有一种特殊情况,当元素是可变对象时.对象内部属性是可以修改的!tuple的不可变限制 ...

  4. c#调用c++带有回调函数方法的实现

    最近完成了一个C++版本的对外sdk程序,其中有部分回调函数使用. C++程序使用时没有异常,但是在C#环境下使用时出了点问题,简单总结下. 感谢博客:http://blog.csdn.net/son ...

  5. Django中间件,信号,缓存

    中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项 ...

  6. Unity3D游戏开发从零单排(六) - 人物运动及攻击连击

    提要 今天要实现的是一个简单人物控制器. 包括用w,a,s,d来控制人物上下左右跑动,鼠标左击发出连招,都是基于老的lagacy的动画.尽管unity3d自带有charactorcontroller, ...

  7. jqprint 打印网页 jQuery print plugin

    ref://jQuery print plugin <!DOCTYPE html> <html lang="en"> <script src=&quo ...

  8. HAProxy安装及简单配置

    一.HAProxy简介 代理的作用:web缓存(加速).反向代理.内容路由(根据流量及内容类型等将请求转发至特定服务器).转码器(将后端服务器的内容压缩后传输给client端).缓存的作用:减少冗余内 ...

  9. when you are old

    When you are old william Butler Yeats When you are old and grey and full of sleep And nodding by the ...

  10. pandas(零)数据结构

    pandas的两个主要的数据结构: Series series是一种类似于一维数组的对象,它由一组数据(NumPy数组类型的数据)和一组与之相关的数据标签(索引)组成. from pandas imp ...