前言:以前一直在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. Java SpringMVC实现国际化整合案例分析(i18n) 专题

    所谓国际化就是支持多种语言,web应用在不同的浏览环境中可以显示出不同的语言,比如说汉语.英语等.下面我将以具体的实例来举例说明: (1)新建动态Javaweb项目,并导入几个SpringMVC必需的 ...

  2. ListView 泛利

    0ListView基本属性 1介绍 Listview节约内存的几种写法 2技巧一:解决ListView的ItemView中带有Button时,OnItemClick无效的问题  3技巧二Listvie ...

  3. Linux socket编程示例(最简单的TCP和UDP两个例子)

    一.socket编程 网络功能是Uinux/Linux的一个重要特点,有着悠久的历史,因此有一个非常固定的编程套路. 基于TCP的网络编程: 基于连接, 在交互过程中, 服务器和客户端要保持连接, 不 ...

  4. Java内部类——学习笔记

    参考:http://blog.csdn.net/aaronsi/article/details/187322 和 http://openhome.cc/Gossip/JavaGossip-V1/Inn ...

  5. wpf中的倒影效果实现

    原文:wpf中的倒影效果实现        <TextBox Name="txt"                      FontSize="30" ...

  6. c#开发移动APP-Xamarin入门剖析

    原文:c#开发移动APP-Xamarin入门剖析 剖析应用程序 Phoneword这个项目是.net标准库项目,它包含所有的共享代码和共享UI. Phoneword.Android这个项目包含Andr ...

  7. Socket编程实践(6) --TCPNotes服务器

    僵尸进程过程 1)通过忽略SIGCHLD信号,避免僵尸进程 在server端代码中加入 signal(SIGCHLD, SIG_IGN); 2)通过wait/waitpid方法.解决僵尸进程 sign ...

  8. Windows,linux下编译qt源码(比较简单)

    一.linux下静态编译qt源码 1.取到qt源码并解压到文件夹 2.cd到qt目录下 3.使用configure生成makefile ./configure–prefix /opt/qtstatic ...

  9. ubuntu如何修改terminal终端的主机名(修改/etc/hostname文件)

    有时候安装完Ubuntu系统后,打开命令终端,终端显示的主机名格式比较难看,例如 我最近买的国内某云的VPS. xxx@VM-1560-ubuntu$ xxx@VM-1560-ubuntu$ 对于有洁 ...

  10. [Android] 环境优化配置Android Studio发展NDK

    ======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 站点:www. ...