文档章节

[NET] Begin ASP.NET Core

张鲸落
 张鲸落
发布于 2016/07/17 00:24
字数 1888
阅读 67
收藏 0
点赞 0
评论 0

先搞一个linux

之前的教程里,我用过cygwin和bash on windows,但都有一个缺点,就是事实上底层还是windows的,所以这次搞.net core 我决定还是上虚拟机然后用 bash on windows的ssh来控制。所以先装个虚拟机。 既然底子是软狗,那就先用hyper-v吧,简单的说一下教程吧。

  • 打开程序和功能,在添加window功能里添加 hyper v虚拟机。
  • 添加完成之后重启,打开hyper v 虚拟机管理器。先不要建虚拟机,先到右边新建一个虚拟交换机,如图:

输入图片说明

然后点击新建出来的虚拟交换机,进行设置

输入图片说明

这样就可以了。

  • 然后新建虚拟机,在配置网络那一栏里看到有新建的这个虚拟交换机,选择那个就可以了,其他的跟 vm 差不多。

输入图片说明

  • 进入 ubuntu 安装 sshd

    sudo apt-get install openssh-server

  • 打开bash on windows,连一下并测试。

    ssh root@192.168.1.113 sudo apt-get update

ok,测试成功。

输入图片说明

准备测试项目

方法一 在windows上安装vs2015和dotcore开发包,新建一个 asp.net core mvc 项目,就默认的就行。

然后直接点击publish,发布出来。

方法二 安装dotnet core 开发包,并使用文本编辑器+命令行编译。

不管怎样还是要首先安装 .net core sdk

不想装vs2015,于是还是用文本编辑器吧,这里我用的也是微软的 vs code。

微软使用了nodejs的npm作为依赖管理项,不过我有点奇怪这是出于什么考虑,大概与微软全面转向json格式有关?

先不管,那就要先安装npm了。我准备了网盘,下载解压,加到PATH目录就可以了,当然,自己在网上找也可以。

然后在npm中安装插件,其中glup插件依赖git,所以要先安装git for windows,安装的时候注意勾选在windows console中使用。 然后以管理员打开命令行安装插件。

npm install -g yo bower grunt-cli gulp
npm install -g generator-aspnet

项目模板

安装完成之后就可以直接用模板生成项目了。cd 到项目目录,执行

## 先新建一个目录
cd Code
mkdir DotnetCore
cd DotnetCore
yo aspnet

在生成过程中会再让你输入项目名称,我输入了CoreTest,所以之后会生成一个CoreTest的文件夹。自后不用修改程序,继续在命令行里执行。

cd CoreTest
## 处理依赖(因为要下载可能会有点慢)
dotnet resotre  
## 测试运行(dotnet会启动内置服务器)
dotnet run

输入图片说明
最后,使用 dotnet publish 发布项目。

一点感想 事实上npm不止是新建项目的时候用到,在 dotnet publish 的时候也会用到,我拷贝过vs里默认生成的asp.net core项目进行 dotnet publish,也会报错缺少npm的模块,所以估计vs内置了某些包管理器的功能。

安装部署 - Linux

拷贝程序

我用的linux的 scp 命令把本地包拷贝到了linux服务器上。命令的具体用法还是大家自行查询吧,这一步需要在 bash on windows 中进行(因为用到的是linux 命令嘛),如果目录不存在,需要先ssh进去新建目录(然后退出ssh执行scp)。如有其它好办法请留言告诉我 ^_^

scp -r /mnt/p/Code/DotnetCore/CoreTest/bin/Debug/netcoreapp1.0/publish henry@192.168.1.113:/home/henry/Documents/Code

在运行环境下安装 dotnetcore

因为是最常见的ubuntu,所以安装也是格外简单,微软提供了全程脚本可用,而且我安装的还是最新的16.04lts,所以直接按照官方教程打命令就可以了。

点我查看如何在ubuntu上安装dotnet core

虽然教程很明显,但我还是把16.04的安装语句写一下吧。

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-dev-1.0.0-preview2-003121

这篇文章还提到了如何写一个hello world ,所以大家自行测试。

Kestrel

这是dotnet core 自带的 web 服务器的名字,在安装 dotnet 的时候会自行安装,所以大家并不需要安装tomcat那样的java服务器。而运行这个服务器也很简单,就是运行命令。

## Asp.net Core 的程序入口也是 Main 方法,所以运行的这个dll是包含 Main方法的那个。随后的输入应该跟windows下运行dotnet run 的效果是一样的。
sudo dotnet /home/henry/Documents/Code/CoreTest.dll 

不过因为服务器的默认设置,在外部好像无法访问到5000端口,所以,官方建议我们使用反向代理,就是下面的nginx。

nginx

所谓的“反向”代理就是说服务器的代理,因为我们常见的代理都是客户端代理,浏览器输入一个代理服务器,服务器看到的其实是客户端的代理服务器,而这个反向代理其实就是说我们访问的某网站服务器,其实是转发到其他服务器上再返回的,真实的服务器地址客户端其实并不清楚,这对分布式部署格外重要,而集群化负载均衡当然是需要分布式部署的。

nginx就是这么一个web服务器,它可以配置对它的请求转交给某个具体的应用服务器,并自动负载均衡。 ubuntu上安装nginx也十分简单,直接 执行命令:

sudo apt-get install nginx
sudo service nginx start

然后对nginx进行配置,使对其的访问转发到Kestrel的5000端口上。

sudo nano /etc/nginx/sites-available/default

编辑配置文件如下

server {
  listen 80;
  location / {
    proxy_pass http://localhost:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}

然后重新读取配置文件并重启nginx

## 这一句是先测试配置文件是否正确
sudo nginx -t
sudo nginx -s reload

输入图片说明

好了,测试成功! 我们已经成功的在linux上部署了asp.net core 程序!

supervisor

官网的教程中还提到了 supervisor 程序,这是基于python的进程管理小程序,最开始好像是用来管理某些python脚本的执行。

官网提到因为Kestrel服务并不能自行启动,所以最好部署一个进程管理工具来管理初始化进程。当然,好像写脚本也是可以的。因为我目标不是作为生产环境的测试而只是学习,所以此次到此为止。官博上还写了一些关于安全性方面的改进,如防火墙配置等,有兴趣详细了解请到 asp.net core 官方博客

最后的话

前一阵子有个段子,说微软在忙着开源,oracle在忙着作死。 java8如果是java的最后一个版本,那 dotnet core 还是有点机会的。C#的语法糖很多,支持的特性也更多,所以我个人还是倾向于写C#代码的,只是现在已经是优先考虑整个解决方案的时代,微软由于过于其服务器价格昂贵,所以在云时代已经被java甩开了太远,不过还是希望dotnet可以发展的更好,不要让我失业啊 ^_^

PS. HyperV这个随系统自启动的效果相当不错,感觉不到自己跑了虚拟机 ^_^

© 著作权归作者所有

共有 人打赏支持
张鲸落
粉丝 1
博文 14
码字总数 16228
作品 0
杭州
程序员
asp.net core系列

在开发asp.net core过程中,记录下使用知识的点点滴滴,方便初次接触的人参考学习。技术有你,共同前行。 asp.net core下的RequestBody和RequestForm提交 asp.net core跨域访问ajax的验证访问...

桂素伟 ⋅ 2017/02/07 ⋅ 0

ASP.NET 5 已终结,迎来 ASP.NET Core 1.0 和 .NET Core 1.0

命名是非常困难的事情。 在计算机科学里面有两件非常艰难的事情:缓存失效和命名 - Phil Karlton ASP.NET 在过去的 15 年里是个非常不错的“品牌”。 ASP.NET 4.6 已经支持在生产环境使用:h...

oschina ⋅ 2016/01/20 ⋅ 63

Asp.net Core介绍

ASP.NET Core is a significant redesign of ASP.NET. This topic introduces the new concepts in ASP.NET Core and explains how they help you develop modern web apps. Asp.net Core是重......

sshpp ⋅ 2017/07/20 ⋅ 0

ASP.NET Core: 全新的ASP.NET !

背景 最新版本的 ASP.NET 叫做 ASP.NET Core (也被称为 ASP.NET 5) 它颠覆了过去的 ASP.NET。 什么是 ASP.NET Core? ASP.NET Core 1.0 是一个开源跨平台的开发框架,用于构建基于云的现代 We...

葡萄城控件技术团队 ⋅ 2016/07/08 ⋅ 0

发布到ASP.NET CORE项目到 Windows server 2012

原文: https://github.com/zeusro/MarkdownBlog/blob/master/2018/2018-01-17-01.md 发布到ASP.NET CORE项目到 Windows server 2012 装软件 .NET Core Windows Server 托管捆绑包 ASP.NET Co......

amiba.org ⋅ 01/17 ⋅ 0

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

ASP.NET Core是微软新推出支持跨平台、高性能、开源的开发框架,相比起原有的ASP.NET来说,ASP.NET Core更适合开发现代应用程序,如跨平台、Dorker的支持、集成现代前端开发框架(如npm、bow...

dotNET跨平台 ⋅ 04/19 ⋅ 0

用分布式缓存提升ASP.NET Core性能

得益于纯净、轻量化并且跨平台支持的特性,ASP.NET Core作为热门Web应用开发框架,其高性能传输和负载均衡的支持已广受青睐。实际上,10-20台Web服务器还是轻松驾驭的。有了多服务器负载的支...

⋅ 04/13 ⋅ 0

Sending SMS Using ASP.NET Core With the Twilio SMS API

In this article, we will explain how to send SMS using ASP.NET Core with the Twilio SMS API. Twilio provides a third-party SMS API for sending SMS over the global network. Befor......

Rajeesh Menoth ⋅ 2017/12/14 ⋅ 0

实现对ASP.NETMvc及Asp.NetCore的权限控制

AccessControlHelper Intro 由于项目需要,需要在 基于 Asp.net mvc 的 Web 项目框架中做权限的控制,于是才有了这个权限控制组件。 项目基于 .NETStandard,同时支持 asp.net mvc(.NET fa...

⋅ 05/28 ⋅ 0

ASP.NET 5 Target framework dnx451 and dnxcore50

中文不知如何定义标题,所以干脆就直接贴出关键字,在 ASP.NET 5 项目的 project.json 配置文件中,会有这样的定义: frameworks 配置的是什么东西?dnx451 和 dnxcore50 又是什么鬼? 可能了...

技术小哥哥 ⋅ 2017/06/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部