重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]
前言
简单整理一个linux 简单上线。 这个是该系列的外篇,该系列继续更新。献给刚学的人。
正文
安装实例
dotnet new webapp -n AspNetCoreDemo -o firstwebapp
编译并运行:
dotnet run
查看网络情况:
netstat -anpl

将项目发布到指定位置:
dotnet publish -o /var/testdotnet/
将打包好的运行起来:
dotnet /var/testdotnet/AspNetCoreDemo.dll
配置nginx
这个时候是外面是访问不了的,原因如下:

这里绑定的是127.0.0.1,这个是内网的,所以无法访问到。
然后这里解释一下为什么localhost可以访问哈:
因为host: localhost 127.0.0.1 这个是默认的。
当然我们可以改成0.0.0.0 去启动,但是一般不会这么干。
这里说明一下,为什么我们一般有一个nginx 代理一个应用程序。
那是因为nginx 做的不仅仅是代理,nginx 有安全模块,有限流模块,这样我们就不用再应用程序中写了。
大大减少了项目的复杂度。
那么安装一下nginx:
yum install nginx -y
然后启动一下:
sudo systemctl start nginx
然后配置文件改成这样:

    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        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;
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header   X-Forwarded-Proto $scheme;
        }
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
然后nginx 重新加载配置一下:
nginx -s reload
然后我这里访问一下:

这样就ok了。
创建服务文件
什么是服务文件?
在 Linux 中,还有具有“.service”扩展名的单元配置文件,用于在进程退出时控制守护程序的行为。 这些文件也称为 服务文件、 单元文件和 服务单元文件。
这些服务文件位于以下目录之一:
/usr/lib/systemd/system:存储已下载应用程序的服务文件
/etc/systemd/system/:存储由系统管理员创建的服务文件
这两个分别放什么呢?
比如这种nginx 一般是第三方的程序,就放在/usr/lib/systemd/system下面。
一般yum安装都在里面。
然后/etc/systemd/system/ 这里放的是我们自己的应用程序。
这里就可以在这个目录下写一个:
[Unit]
Description= AspNetCoreDemo
[Service]
WorkingDirctory:/var/testdotnet/
ExecStart=/usr/bin/dotnet /var/testdotnet/AspNetCoreDemo.dll
Restart=aways
RestartSec=10
SyslogIdentifier=AspNetCoreDemo
User=root
Environment=ASPNETCORE_ENVIRONMENT=Development
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
简单解释一下:
WorkingDirectory 是发布应用程序的目录。
ExecStart 是启动应用程序的实际命令。
Restart=always 是自言自明的。 如果由于某种原因(无论是手动还是由于崩溃)而停止,则始终会启动此过程。
RestartSec=10 也是自言自明的。 进程停止后,将在经过 10 秒后启动。
SyslogIdentifier 很重要。 它表示“系统日志标识符”。 有关守护程序的信息记录在此名称下的系统日志中。 还可以使用此标识符查找进程的 PID。
User 是管理服务的用户。 它应存在于系统中,并具有相应的应用程序文件所有权。
可以在服务文件中设置任意数量的环境变量。
然后查看一下:

然后这里有一个disable,这个意思是系统重启后不会去启动这个。

设置enable:systemctl enable AspNetCoreDemo

这里就会创建一个链接过去。 这里面的就是开启启动的。

这样就ok了。
安全
说到安全就要说下iptable 了。
这个就是一个轻量的防火墙了,比较实用。
但是这里面有一个问题,那就iptable 配置很复杂,有多复杂呢? 可以看下我的linux 系列。
所以就有个开发了配置工具,可以理解为iptable的客户端吧。
这里解释一个ufw这个,市面上有很多,可以找到适合自己的。
安装很简单:
yum install ufw
- 运行命令检查 ufw 的 sudo ufw status verbose 状态。 默认情况下,ufw 未启用且处于非活动状态。 
- 运行 sudo ufw default allow 命令。 由于除了默认的“allow”规则之外,没有其他规则,因此 VM 上的每个端口都将被视为已打开。 
为什么ufw 有这个设置allow 的东西呢? 这跟iptable 的模式有关,iptable 两种模式,一个是allow 一种是 reject,如果设置了allow,那么就配置不允许的,就是规则里面没有的就允许,反之亦然。
- 可以通过运行 sudo ufw default deny 命令将默认规则更改为拒绝来实现此操作。 仅允许 SSH 和 HTTP 协议。 其他协议将被拒绝。 
- 通过运行 sudo ufw allow http允许 HTTP 协议。 TTP 是在 /etc/services 文件中定义的已知协议。 因此,可以使用协议名称,并且可以运行该 sudo ufw allow http 命令。 运行 sudo ufw allow 80 也完全有效。 
测试一下哈: sudo ufw deny http
这里设置http为不允许:

这样就可以了,然后就访问不了了。
多实例
如果想部署多个在同一台机器的话,那么创建另外一个service,然后配置一下环境:
Environment=ASPNETCORE_URLS=http://localhost:6001
这样就启动的是另外一个端口了。
那么nginx 做负载均衡,这个已经在nginx 系列了,就不罗嗦了。
结
下一结利用一些工具在nginx 排查和监控netcore的运行情况。
重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]的更多相关文章
- 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]
		前言 简单介绍一下在排查问题.献给初学者. 该文的前置篇: https://www.cnblogs.com/aoximin/p/16838657.html 正文 什么是linux系统 linux 是基 ... 
- 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]
		前言 介绍下面几个工具: Lldb createdump dotnet-dump dotnet-gcdump dotnet-symbol Procdump 该文的前置篇为: https://www.c ... 
- 重新整理 .net core 实践篇 ———— linux上性能排查 [外篇]
		前言 该文的前置篇为: https://www.cnblogs.com/aoximin/p/16839830.html 本文介绍性能排查. 正文 上一节是出现错误了,如何去排查具体问题. 这一节介绍一 ... 
- 重新整理 .net core 实践篇————配置应用[一]
		前言 本来想整理到<<重新整理.net core 计1400篇>>里面去,但是后来一想,整理 .net core 实践篇 是偏于实践,故而分开. 因为是重新整理,那么就从配置开 ... 
- 重新整理 .net core 实践篇————依赖注入应用[二]
		前言 这里介绍一下.net core的依赖注入框架,其中其代码原理在我的另一个整理<<重新整理 1400篇>>中已经写了,故而专门整理应用这一块. 以下只是个人整理,如有问题, ... 
- 重新整理 .net core 实践篇 ———— dotnet-dump [外篇]
		前言 本文的上一篇为: https://www.cnblogs.com/aoximin/p/16861797.html 该文为dotnet-dump 和 procdump 的实战介绍一下. 正文 现在 ... 
- 重新整理 .net core 实践篇————依赖注入应用之援军[四]
		前言 介绍第三方依赖注入框架Autofac,看看为我们解决什么问题. 下面介绍4个点: 命名注册 属性注册 aop 注入 子容器命名 正文 为什么我们需要使用第三方框架?第三方框架为我们做了什么?第三 ... 
- 重新整理 .net core 实践篇—————服务与配置之间[十一二]
		前言 前面基本介绍了,官方对于asp .net core 设计配置和设计服务的框架的一些思路.看下服务和配置之间是如何联系的吧. 正文 服务: public interface ISelfServic ... 
- 重新整理 .net core 实践篇—————日志系统之作用域[十七]
		前言 前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题. 前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们 ... 
随机推荐
- Docker 09 可视化
			参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ... 
- 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式
			前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ... 
- Mac设置外网访问本地项目
			> 官网地址:https://ngrok.com/download 步骤(官网基本已经说明了步骤,但还不完善,以下为亲测步骤): 下载并注册账号 打开终端,进入ngrok.zip所在文件夹(方法 ... 
- Little Girl and Problem on Trees
			题意 给定一棵无边权的树,最多只有一个点度数超过2,有两种操作 1)(0 u x d)将距离u节点d距离之内的节点的值加上x 2)(1 u)询问u节点的值 n<=100000,q<=100 ... 
- 【Prometheus+Grafana系列】监控MySQL服务
			前言 前面的一篇文章已经介绍了 docker-compose 搭建 Prometheus + Grafana 服务.当时实现了监控服务器指标数据,是通过 node_exporter.Prometheu ... 
- 在 node 中使用 jquery ajax
			对于前端同学来说,ajax 请求应该不会陌生.jquery 真的ajax请求做了封装,可以通过下面的方式发送一个请求并获取相应结果: $.ajax({ url: "https://echo. ... 
- SpringMvc(二)- 请求处理参数 和 响应数据处理
			1.请求处理参数 1.1 请求参数 @RequestParam 1.1.1 不使用 @RequestParam 注解 请求参数处理,不使用参数注解: 1.如果请求参数名和请求处理的形参名一致,spri ... 
- 如何将原生微信小程序页面改成原生VUE框架的H5页面
			项目背景: 公司为了实现小程序与H5页面共同覆盖,全面推广.特此想将已有的小程序进行快速改造上线(二周内),研发出H5版本.目前公司前端技术较为薄弱,现有的技术解决方案还停留在JSP. 问题: 如何将 ... 
- immutable 与 stable 函数的差异
			Stable 函数不能修改数据库,单个Query中所有行给定同样的参数确保返回相同的结果.这种稳定级别允许优化器将多次函数调用转换为一次.在索引扫描的条件中使用这种函数是可行的,因为索引扫描只计算一次 ... 
- KingbaseES 客户端工具安装
			关键字: KingbaseES.Java.ClientTools 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows XP ... 
