前言

简单整理一个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. 基础2:js创建对象的多种方式

    js创建对象的多种方式 1. 工厂模式 function createPerson(name) { var o = new Object() 0.name = name return o } var ...

  2. python自动化测试-列表、元组、字典学习笔记

    1.列表 格式:  L = [1,2,3,5]    M = [7,8,9]  print(type(L)) -> :list 列表增加元素: print(L.append(10))   -&g ...

  3. CF1019B The hat (二分)

    题面 题解 如果位置为i的人与对面的差是x,i+1位置由于只能+1或-1,所以i+1位置与对面的差就是x.x+2或x-2,可以发现,奇偶性不变. 所以只要判断出是奇差,就可以直接输出"! - ...

  4. 【Java】学习路径61-“伪”枚举类型

    public class RolyType { public static final int TEACHER = 0; public static final int STUDENT = 1; pu ...

  5. Spring5事务管理

    事务管理是什么? 相当于过滤器,如果这一进程中上一个操作正常执行完后提交数据已经发生改变,但是下一个操作中出现了异常,这样就会影响数据的查看. 典型例子:银行转账,甲方已经转钱给乙方(甲方已扣钱),乙 ...

  6. OpenDrop 这样的应用程序以及与当今流行的替代品的比较

    由安全移动网络实验室 OpenDrop 创建的用 Python 编写的开放 Apple AirDrop 实现是一个命令行工具,允许直接通过 Wi-Fi 在设备之间共享文件.它的独特之处在于它与 App ...

  7. 【长文详解】TypeScript、Babel、webpack以及IDE对TS的类型检查

    只要接触过ts的前端同学都能回答出ts是js超集,它具备静态类型分析,能够根据类型在静态代码的解析过程中对ts代码进行类型检查,从而在保证类型的一致性.那,现在让你对你的webpack项目(其实任意类 ...

  8. Elasticsearch7.6.2 RestHighLevelClient查询用法 must should(and or 关系)

    1. 引入jar <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId&g ...

  9. Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式

    一.多环境开发 我们平常都是在自己的开发环境进行开发, 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用, 等测试人员测试通过后,我们会将项目部署到生成环境上线使用. 这个时候就有一 ...

  10. ProxySQL 密码管理

    ProxySQL是一个协议感知的proxy.由于ProxySQL基于流量进行路由,当一个客户端连接ProxySQL时,它还无法识别它的目标主机组,因此ProxySQL需要对该客户端进行认证.基于此,需 ...