前言

简单整理一个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
  1. 运行命令检查 ufw 的 sudo ufw status verbose 状态。 默认情况下,ufw 未启用且处于非活动状态。

  2. 运行 sudo ufw default allow 命令。 由于除了默认的“allow”规则之外,没有其他规则,因此 VM 上的每个端口都将被视为已打开。

为什么ufw 有这个设置allow 的东西呢? 这跟iptable 的模式有关,iptable 两种模式,一个是allow 一种是 reject,如果设置了allow,那么就配置不允许的,就是规则里面没有的就允许,反之亦然。

  1. 可以通过运行 sudo ufw default deny 命令将默认规则更改为拒绝来实现此操作。 仅允许 SSH 和 HTTP 协议。 其他协议将被拒绝。

  2. 通过运行 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 上线篇 [外篇]的更多相关文章

  1. 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]

    前言 简单介绍一下在排查问题.献给初学者. 该文的前置篇: https://www.cnblogs.com/aoximin/p/16838657.html 正文 什么是linux系统 linux 是基 ...

  2. 重新整理 .net core 实践篇 ———— linux上排查问题实用工具 [外篇]

    前言 介绍下面几个工具: Lldb createdump dotnet-dump dotnet-gcdump dotnet-symbol Procdump 该文的前置篇为: https://www.c ...

  3. 重新整理 .net core 实践篇 ———— linux上性能排查 [外篇]

    前言 该文的前置篇为: https://www.cnblogs.com/aoximin/p/16839830.html 本文介绍性能排查. 正文 上一节是出现错误了,如何去排查具体问题. 这一节介绍一 ...

  4. 重新整理 .net core 实践篇————配置应用[一]

    前言 本来想整理到<<重新整理.net core 计1400篇>>里面去,但是后来一想,整理 .net core 实践篇 是偏于实践,故而分开. 因为是重新整理,那么就从配置开 ...

  5. 重新整理 .net core 实践篇————依赖注入应用[二]

    前言 这里介绍一下.net core的依赖注入框架,其中其代码原理在我的另一个整理<<重新整理 1400篇>>中已经写了,故而专门整理应用这一块. 以下只是个人整理,如有问题, ...

  6. 重新整理 .net core 实践篇 ———— dotnet-dump [外篇]

    前言 本文的上一篇为: https://www.cnblogs.com/aoximin/p/16861797.html 该文为dotnet-dump 和 procdump 的实战介绍一下. 正文 现在 ...

  7. 重新整理 .net core 实践篇————依赖注入应用之援军[四]

    前言 介绍第三方依赖注入框架Autofac,看看为我们解决什么问题. 下面介绍4个点: 命名注册 属性注册 aop 注入 子容器命名 正文 为什么我们需要使用第三方框架?第三方框架为我们做了什么?第三 ...

  8. 重新整理 .net core 实践篇—————服务与配置之间[十一二]

    前言 前面基本介绍了,官方对于asp .net core 设计配置和设计服务的框架的一些思路.看下服务和配置之间是如何联系的吧. 正文 服务: public interface ISelfServic ...

  9. 重新整理 .net core 实践篇—————日志系统之作用域[十七]

    前言 前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题. 前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们 ...

随机推荐

  1. Docker 09 可视化

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  2. 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式

    前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...

  3. Mac设置外网访问本地项目

    > 官网地址:https://ngrok.com/download 步骤(官网基本已经说明了步骤,但还不完善,以下为亲测步骤): 下载并注册账号 打开终端,进入ngrok.zip所在文件夹(方法 ...

  4. Little Girl and Problem on Trees

    题意 给定一棵无边权的树,最多只有一个点度数超过2,有两种操作 1)(0 u x d)将距离u节点d距离之内的节点的值加上x 2)(1 u)询问u节点的值 n<=100000,q<=100 ...

  5. 【Prometheus+Grafana系列】监控MySQL服务

    前言 前面的一篇文章已经介绍了 docker-compose 搭建 Prometheus + Grafana 服务.当时实现了监控服务器指标数据,是通过 node_exporter.Prometheu ...

  6. 在 node 中使用 jquery ajax

    对于前端同学来说,ajax 请求应该不会陌生.jquery 真的ajax请求做了封装,可以通过下面的方式发送一个请求并获取相应结果: $.ajax({ url: "https://echo. ...

  7. SpringMvc(二)- 请求处理参数 和 响应数据处理

    1.请求处理参数 1.1 请求参数 @RequestParam 1.1.1 不使用 @RequestParam 注解 请求参数处理,不使用参数注解: 1.如果请求参数名和请求处理的形参名一致,spri ...

  8. 如何将原生微信小程序页面改成原生VUE框架的H5页面

    项目背景: 公司为了实现小程序与H5页面共同覆盖,全面推广.特此想将已有的小程序进行快速改造上线(二周内),研发出H5版本.目前公司前端技术较为薄弱,现有的技术解决方案还停留在JSP. 问题: 如何将 ...

  9. immutable 与 stable 函数的差异

    Stable 函数不能修改数据库,单个Query中所有行给定同样的参数确保返回相同的结果.这种稳定级别允许优化器将多次函数调用转换为一次.在索引扫描的条件中使用这种函数是可行的,因为索引扫描只计算一次 ...

  10. KingbaseES 客户端工具安装

    关键字: KingbaseES.Java.ClientTools 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows XP ...