前言:以前一直在winserver的环境里从事web工作,安装一个sqlserver,iis,把项目部署上面就OK了,简单轻松
一.结缘nginx
以前一直听说nginx这个反向代理的web服务器,当玩nginx时才知道,iis为我们做了两件事
1.应用程序服务器(nfx),解析动态程序,例如aspx
2.反向代理,将解析后的资源或静态资源,代理出去
.net core使用iis做反向代理与用nginx有区别呢(只说手感,手感你懂的)
nginx 配置可简单,可灵活,可负载,可集群,可过滤,方便查阅日志.........更多牛逼的功能就没有用到了

简单配置(把本地7711端口代理到8852端口)

 server {
listen ;
server_name localhost;
location / {
proxy_pass http://localhost:7711;
index /project1/toIndex;
}
}

简单命令

service nginx start
service nginx restart
service nginx stop

iis 没啥优点,工程使用iis跑出错后,我就统一改成控制台了,在linux上稳的一逼

二.supervisor
这是干嘛的呢,就是守护你的程序的
你可能在想,我程序好好的,要它守护个鸡毛
就你这臭脾气,也就只有winserve惯着你,当你服务器重启的时候,winserver的iis会自动启动站点,sqlserver的服务设置自动的,也会自动启动
linux可就不惯着你了,当服务器重启的时候,那你得手动一个个start你的服务
为了解决这个麻烦,supervisor闪亮登陆,只要在supervisor里配置你要守护的服务,服务器每次启动的时候,它都会去给你启动服务,并且记录了你服务控制台的日志,不光如此,它还提供了图形化管理界面,你可以手动启动关闭你的服务

每个服务新增一个配置文件

配置如下(看的懂配置,其它的服务都是照着copy,简单的很)

 [program:Tibos.Api]
command=/bin/bash -c "dotnet Tibos.Api.dll"
directory=/home/wwwroot/NH.Core/Tibos.Api/PublishOutput/
autorestart=true
stderr_logfile=/var/log/Tibos.Api.err.log
stdout_logfile=/var/log/Tibos.Api.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT

介绍了上面这对黄金搭档,接下来介绍另一对黄金搭档

三.Ocelot
这是.net core里常用的一个APIGateway,园子里资料已经非常多了,功能简单的来说就是代理下游的服务,并暴露给消费者,里面集成了负载均衡,统一授权验证(IdentityServer4)....
给我的感觉就是啥优秀的框架都可以往里面集成

四.Consul
这是一个玩服务注册与服务发现的玩意,啥子意思呢
这就要从Ocelot做负载均衡来说起,我们来讲一个小故事,老王管理着三个工人,地主从老王这里拉工人去工地里干活
那么就存在几个问题
1.新人来了怎么办?
2.工人生病了怎么办?
这里老王就是Consul,新人来了,首先要到老王这里申请成为工人(服务注册),这里是工人主动申请的,可不是老王强迫的哦
这里地主就是Ocelot,老王会定期给工人检查健康(心跳包),并给它们安排职务,地主去老王那里拉人(服务发现),然后干活
当然这里还有一个情况,就工人偶尔抽风,这里可以使用Polly去处理,因为我还没有用过Polly这里就不做介绍

Consul也提供图形化界面,我这里是注册了三个服务,可以体验一下:http://193.112.104.103:9000/api/values

它会负载输出三个服务的值,如果我使用supervisor停止了某个服务,也不会影响成像的正常运行,轻松实现热更新

五.Docker
Docker牛逼,不要问我为啥子牛逼,就是牛逼,谁用谁知道
1.第一难题,解决萌新接触Linux装软件问题
什么.net core runtim,nginx,mysql......这一堆东西总要装的吧,装到哪去了呢,玩坏了怎么办?
在win上就遇到个问题,一个朋友装sqlserver,然后卸载了,然后再装sqlserver就死活装不上去,清理注册表也不行,没办法重装系统了.......
毕竟第一次玩linux,装软件肯定要去改配置什么的,经常不知道装到哪去了(好在都是默认位置,百度比较好找),怎么卸载....
Docker就很好的解决了这个问题,基本上流行的东西docker hub上都有,拉个镜像,创建个容器,在容器里随便玩,玩坏了,再创建个容器就好了
2.制作Docker镜像
哇,这个可就真牛逼了,把自己的项目做成一个Docker镜像,然后丢到Dockerhub(免费的镜像仓库)里,这样所有人都可以拉你的这个镜像了
我把.net core runtime(200多m) 跟自己的程序一起打包成一个镜像,这样别的服务器就不用安装.net core runtime了,开箱即用
大家可以拉取我的镜像玩玩(一个示例的webapi) docker pull wmowm/tibos:v1.0

Dockerhub大家也可以去注册一个账户玩玩(镜像257M,在仓库压缩后106M)

这里我玩docker的一些常用命令

 docker images
docker ps
docker ps -a
docker rm [id]
docker logs --since 30m [id]
docker start [id]
docker stop [id]
docker exec -it [id] /bin/bash
docker inspect [id] docker run --name mysq -p : -v /my/mysql/datadir:/var/lib/mysql -v /my/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD= -d mysql:5.7 --Dockerfile FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY . .
EXPOSE
ENTRYPOINT ["dotnet", "Docker.Test.dll"] docker build -t testimage . docker run --name=test -p : -d testimage --打标签
docker tag [imageid] wmowm/tibos:v1. --推送
docker push wmowm/tibos:v1. --拉取
docker pull wmowm/tibos:v1.

六.Jenkins
java写的一款持续集成软件,功能强大,对于我们.net core来说,也很方便,建议参考晓晨MM的博客,直接用docker安装,就是做多节点坑比较多,多折腾一下也能实现
说说.net core过程
1.文件夹方式打包,上传到github
2.点击构建,拉取github上的文件
3.拉取完成后,执行shell
如果一台服务器用xftp手动传就可以了,如果是多台服务器,配置好多节点,就非常方便了
我写的shell比较简单,拉取到文件后,把文件copy到指定位置,然后重启supervisorctl

七..netcore里的一些优秀框架

1.杨总的CAP,满星推荐,既可以做EvenBus又是分布式最终一致性的解决方案
2.Autofac,非常优秀的IOC容器
3.AutoMapper
4.NHibernate5.1,好吧,是我强行打了一波广告,我个人觉得还是非常不错的,推荐混合Dapper用,这样CAP也可以用上,喜欢的可以去看看https://github.com/wmowm/nh.core
5.signalr nfx里就用过了,非常不错
6.QuartzNet 任务调度
还有好多,这里就不一一列举了.......

八.Linux,给我一种错觉,只要你程序部署在Linux上面,就可以利用到Linux上的一切资源,大家就是一家人,也许这就是开源的魅力吧
1.没有广告
2.稳

浅谈我在.net core一年里的收获的更多相关文章

  1. iOS 核心动画 Core Animation浅谈

    代码地址如下:http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVie ...

  2. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  3. 浅谈.Net Core中使用Autofac替换自带的DI容器

    为什么叫 浅谈 呢?就是字面上的意思,讲得比较浅,又不是不能用(这样是不对的)!!! Aufofac大家都不陌生了,说是.Net生态下最优秀的IOC框架那是一点都过分.用的人多了,使用教程也十分丰富, ...

  4. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  5. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  6. 浅谈对Spring Framework的认识

    Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and con ...

  7. 浅谈开源项目Android-Universal-Image-Loader(Part 3.1)

    本文转载于:http://www.cnblogs.com/osmondy/p/3266023.html 浅谈开源项目Android-Universal-Image-Loader(Part 3.1) 最 ...

  8. 浅谈qmake之pro、pri、prf、prl文件

    浅谈qmake之pro.pri.prf.prl文件 转载自:http://blog.csdn.net/dbzhang800/article/details/6348432 尽管每次和cmake对比起来 ...

  9. iOS应用架构浅谈

    (整理至http://www.cocoachina.com/ios/20150414/11557.html) 缘由 从事iOS工作一年多了,主要从事QQ钱包SDK开发和财付通app维护,随着对业务的慢 ...

随机推荐

  1. C# .NET数据库操作

    C# .NET更智能的数据库操作的封装完整版(重构)   前述: 第一次发表文章,不过是对数据库简单的封装,主要是阐述下思路.那么在上篇文章,在大家的指导下和提出意见,并自己对代码进行了思考.在这两天 ...

  2. WPF 从程序集中检索图片资源stream给Image控件使用

    原文:WPF 从程序集中检索图片资源stream给Image控件使用 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/nihang1234/artic ...

  3. 在sql语句中 inner join ,left join,right join 和on 以及where

    当使用几种join的时候,on是指表连接起来基于的条件,where是对连接的表进行过滤的条件. where 1=1  当我们需要拼接字符串的时候 在基础sql字符串中写上where 1=1 可以不需要 ...

  4. zedboard之GPIO驱动器(离FPGA直到LINUX申请书)

    笔者:xiabodan   资源: http://blog.csdn.net/xiabodan/article/details/24308373 1 EDK 大家知道我们在EDK中建立GPIO然后倒出 ...

  5. [Hibernate系列—] 3. 映射文件和使用SchemaExport制作自己主动Schema

    自己定义映射文件 这里的映射文件指的是相应到数据库表的xml 的定义文件. 相应的每一个数据库表栏位, 能够定义的属性有: 属性名 类型 Description length number 栏位的长度 ...

  6. WPF无边框拖动、全屏、缩放

    原文:WPF无边框拖动.全屏.缩放 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/lwwl12/article/details/78059361 先看效果 ...

  7. Qt翻译---Thread Support in Qt

    Thread Support in Qt QT提供线程支持在平台独立的线程类.一个安全线程的传递事件的方式,一个信号槽的链接在线程之中.这使得开发多线程容易.多线程程序也是一个有用的范例为不冻结用户界 ...

  8. Linking different libraries for Debug and Release builds in Cmake on windows?

    问题叙述性说明: So I've got a library I'm compiling and I need to link different third party things in depe ...

  9. SharePoint 2010 WebPart Web部分 总的膏

    SharePoint 2010 WebPart Web部分 总的膏         之前写SharePoint WebPart Web部分相关的博客,我们没有做一个索引.网友在查看的时候非常不方便,于 ...

  10. 特殊存储过程——触发器Trigger

    触发器类型 insert 触发器delete 触发器update 触发器 Inserted和Deleted两个临时表的作用 Inserted:对于插入记录操作来说,插入表里存放的是要插入的数据:对于更 ...