在ubuntu16.04中初次体验.net core 2.0

  .net core运行在Linux中的例子、文章已经很多了,看了一些之后也想体验一下,顺便记录一下……

  环境:win10 1709、它内置的Linux子系统(这里安装的是Ubuntu 16.04)

  一、安装Ubuntu 16.04

  1、启用win10中内置的Linux

  到了win10 1709,内置的Linux已经不是Beta版了,"控制面板\程序\程序和功能",点击“启用或关闭Windows功能”,启用“适用于Linux的Windows子系统”

在ubuntu16.04中初次体验.net core 2.0

  2、安装Linux

  在cmd中输入bash,它会提示你到微软应用商店下载,网址:https://aka.ms/wslstore,在浏览器中输入该网址会自动打开微软应用商店

在ubuntu16.04中初次体验.net core 2.0

  在ubuntu16.04中初次体验.net core 2.0

  我选择的是Ubuntu,版本是16.04 LTS,文件很小只有不到200MB

在ubuntu16.04中初次体验.net core 2.0

在ubuntu16.04中初次体验.net core 2.0

在ubuntu16.04中初次体验.net core 2.0

  如上图,这样你就安装成功了,这里固定到了开始屏幕方便下次使用……第一次打开,首先会让你输入用户名和密码:

在ubuntu16.04中初次体验.net core 2.0

  之后你可以输入:lsb_release -a 查看Linux的版本:

在ubuntu16.04中初次体验.net core 2.0

  没想到就像装软件一样简单,软件有他的安装目录,也想知道Linux的文件系统放在什么地方......找了半天终于找到了:C:\Users\XXX\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs

在ubuntu16.04中初次体验.net core 2.0

在ubuntu16.04中初次体验.net core 2.0

  二、安装.net core2

  这个比较简单,参照官方的基本上没问题,参考网址:https://github.com/dotnet/core/blob/master/release-notes/download-archive.md

在ubuntu16.04中初次体验.net core 2.0

在ubuntu16.04中初次体验.net core 2.0

  安装.NET Core SDK 2.0.2 with .NET Core 2.0.0

在ubuntu16.04中初次体验.net core 2.0

  安装成功之后,查看dotnet 信息 : dotnet --info

在ubuntu16.04中初次体验.net core 2.0

  查看dotnet自带的模板:dotnet new --list

在ubuntu16.04中初次体验.net core 2.0

  三、跑一个MVC模板

  1、新建一个工作目录

在ubuntu16.04中初次体验.net core 2.0

  2、新建一个MVC应用程序: dotnet new mvc -n test1   新建成功并跑一下程序,切换到程序根目录之后执行命令: dotnet run

在ubuntu16.04中初次体验.net core 2.0

  3、在浏览器键入 http://localhost:5000/ (大神说:Linux和win10共享网络)

在ubuntu16.04中初次体验.net core 2.0

  4、停止应用程序

在ubuntu16.04中初次体验.net core 2.0

  5、之后我们发布一下 dotnet publish -c release

在ubuntu16.04中初次体验.net core 2.0

  6、切换到“publish”目录,执行命:dotnet test1.dll

在ubuntu16.04中初次体验.net core 2.0

  四、安装nginx

  1、sudo apt-get install nginx

在ubuntu16.04中初次体验.net core 2.0

  2、查看一下 nginx是否安装成功,并顺便看一下帮助:nginx -h

在ubuntu16.04中初次体验.net core 2.0

  3、启动nginx :sudo service nginx start

在ubuntu16.04中初次体验.net core 2.0

  第一次失败了,不知道什么原因,由于是linux小白,查了半天,才知道nginx有 -t 这种命令,试了一下

在ubuntu16.04中初次体验.net core 2.0

  检测发现80 端口被占用,安装Ubuntu之后什么都没干怎么就80被占用呢?在印证了和win10共享网络。修改了一下nginx的配置文件 etc\nginx\sites-available\default

在ubuntu16.04中初次体验.net core 2.0

  再次检查就没有问题了

在ubuntu16.04中初次体验.net core 2.0

在ubuntu16.04中初次体验.net core 2.0

  4、配置代理,再次修改配置文件

在ubuntu16.04中初次体验.net core 2.0

  5、访问10020

在ubuntu16.04中初次体验.net core 2.0

  哦,MVC应用程序关了!!!再次启动

在ubuntu16.04中初次体验.net core 2.0

  又报了一大推错误,原来应用程序的根目录没有配置(上面有张图中已经圈出),在修改nginx配置文件

在ubuntu16.04中初次体验.net core 2.0

在ubuntu16.04中初次体验.net core 2.0

  再次访问终于搞定了,这次的错误就不管了……

  五、安装supervisor

  1、安装 sudo apt-get install supervisor

在ubuntu16.04中初次体验.net core 2.0

  2、查看supervisor是否安装成功

在ubuntu16.04中初次体验.net core 2.0

  3、配置

  在 etc/supervisor/conf.d 目录下 新建test.conf 输入以下内容,根据你的应用程序而定

在ubuntu16.04中初次体验.net core 2.0

  启动supervisor 服务:sudo service supervisor start ,在执行以下这个命令:sudo supervisord -c /etc/supervisor/supervisord.conf  如果遇到这个错误

Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h

    可以先执行这个命令:sudo unlink /var/run/supervisor.sock  然后在检查就没问题了

  在检测以下你的配置程序是否成功:ps -ef|grep test1

  如果出现dotnet test1.dll 则说明成功了。

在ubuntu16.04中初次体验.net core 2.0

  现在我们试试访问http://localhost:5000 ,可以正常访问,这里就不截图了,图片太多了…… 至此在没有手动在publish目录下执行dotnet test1.dll的情况下就可以访问http://localhost:5000/ 了

  现在我们在启动nginx ,利用IP地址访问:http://192.168.1.8:10020/

在ubuntu16.04中初次体验.net core 2.0

  至此,安装Ubuntu、.net core2、mvc demo、安装并配置nginx代理、安装并配置supevisor守护进程全部,操练完毕。哈哈

  2017-11-10 更新

  1、https://github.com/Microsoft/WSL

  2、win10 安装Linux子系统官方文档:https://msdn.microsoft.com/zh-cn/commandline/wsl/install-win10

  3、使用 Nginx 在 Linux 上为 ASP.NET Core 设置托管环境,并对其进行部署

  4、本来也想为supevisor守护进程设置开机启动,但是没有弄出来,所以本文也没有提供。今天发现了这个:Failed to get properties: Launch helper exited 。不知道是不是win10中的Linux 还不支持systemctl? Linux方面不是很了解。如果有了解的,请不吝赐教,非常感谢!!!

上一篇:IO流入门-第十一章-PrintStream_PrintWriter


下一篇:IO流入门-第八章-BufferedWriter