首页 > 系统相关 >重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]

重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]

时间:2022-10-29 14:36:47浏览次数:55  
标签:core http 重新整理 sudo nginx proxy allow linux ufw

前言

简单整理一个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的运行情况。

标签:core,http,重新整理,sudo,nginx,proxy,allow,linux,ufw
From: https://www.cnblogs.com/aoximin/p/16838657.html

相关文章

  • linux分配 /home磁盘给根目录
    系统为centos7系统安装之后,根目录空间只有50G,/home有800多G,而/home使用较少,所以将/home空间分配给根目录。1,查看磁盘使用情况:df-h 2,减少/home (/dev/mapper/centos-......
  • Linux目录结构
    一、Linux目录结构linux目录结构:bin:存放的是可执行命令,普通用户也可以执行(liunx默认情况下绿色字体代表可执行文件)boot:引导分区,用来装载开机启动项的dev:dev下放的......
  • Linux--多线程(一)
    线程线程的概念线程:线程是OS能够进行运算调度的基本单位。线程是一个进程中的一个单一执行流,通俗地说,一个程序里的一个执行路线就叫做线程。可以知道的是,一个进程至少......
  • Linux 系统防火墙 Firewall-cmd 日常操作指南
    1. 管理端口列出dmz级别的被允许的进入端口#firewall-cmd--zone=dmz--list-ports允许tcp端口8080至dmz级别#firewall-cmd--zone=dmz--add-port=8080/tcp允许......
  • 快读《ASP.NET Core技术内幕与项目实战》EFCore2.5:集合查询原理揭秘(IQueryable和IEnum
    本节内容,涉及4.6(P116-P130)。主要NuGet包:如前述章节 一、LINQ和EFCore的集合查询扩展方法的区别1、LINQ和EFCore中的集合查询扩展方法,虽然命名和使用完全一样,都两者定义......
  • Linux-7-普通安装jdk java环境
    前言本次介绍安装 JDK 是为了铺垫后面的jenkins环境。简介:Jenkins是一个开源软件项目,是基于java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用......
  • C#用FiddlerCore抓包HTTP和HTTPS
    FiddlerCore是收费软件,提供了Fiddler的抓包API,能抓取HTTP和HTTPS的网络请求。官网:https://www.telerik.com/fiddlercore安装FiddlerCore依赖引用有两种方式:1、通过Teleri......
  • 快读《ASP.NET Core技术内幕与项目实战》EFCore2.4:映射配置FluentApi和主键
    本节内容,涉及4.6(P84-P92)。主要NuGet包:如前 一、配置映射关系,有两种方案,一是DataAnnotation、二是如2.3节使用的FluentApi,推荐使用FluentApi。 二、FluentApi的基......
  • 肖sir____linux___ 讲解(1)
    1、rm -rf *  删除目录下所有的文件和目录2、useradd  用户名案例:useradd  bl   在home目录下有用户   3、cat /etc/passwd 查看新建用户......
  • Linux下文件的三个时间(Atime,Mtime,Ctime)
    文件的三个时间我们已经很熟悉windows系统了,那么我们在windows下新建一个文件,我们知道它在保存的时候肯定是会保存一下文件的创建时间之类的信息的,那么我们来看看windows下......