今天带大家将本地.Net6.0项目部署到Linux系统中,其中有用到Nginx反向代理和PM2进程管理工具,希望本偏文章能对你有所帮助,成为你成功路上的垫脚石!

背景:

  在.Net 5.0横空出世之后,.Net已经支持夸平台了,身为一名合格的码农,你敢说你不会用Linux? 哈哈哈开个玩笑,因为工作最近接手的项目是部署到Linux中,需要使用到Linux , Nginx和PM2 的一些操作,我就开始倒腾了一两天试试能不能把自己的项目也整一套放到Linux中,Linux 在日常工作中可以说是非常普遍,也是主流,看一百遍不如做一遍,所以希望还没有接触到的童鞋,看完这篇文章后也能去试着部署一下,一起进步!!! 由于本人也是第一次部署,本文如有不足之处还请各位大佬及时指出~

1.打包代码,并存放到Linux中

切记!,在Program中将这三段代码,从if中拿出来!,这个的if的意思是只有开发环境才会执行,如没有拿出来,即便发布成功也无法访问Swagger UI,本人就被这个小问题折磨了有一上午!!!

在appsettings.json文件中指定访问端口,端口可以随便填,不重复的即可

随后右击API层选择发布

最后将打包好的代码文件发布到Linux 中即可,这里我使用的文件传输工具是 FileZilla

 2.Linux中安装.Net 6.0运行环境

安装.net环境运行时可以直接看微软官方无脑复制即可:在 .NET CentOS 上安装 - .NET | Microsoft Learn

最后配置完成之后我们CD 到打包好代码的目录中 开启Api服务

  1. //开启服务 WeTool.Api.dll换成启动项目的dll名称即可
  2. dotnet WeTool.Api.dll
  3. //关闭服务 ctrl+c 即可

像这样,恭喜你已经成功啦!!!

当然不要高兴的太早啦,到这里你只成功了一半!!!,现在我们面临两个问题:

  1.我们虽然可以使用 ip?swagger/index.html访问,但如果我这个ip很多个地方需要用到怎么办,当然是用域名啦,所以我们需要用到nginx 将我们的服务指向我们的域名

  2.我们每次开启或者关闭服务都需要进入到发布的目录中去开一下 还不能看到服务的状态,一个服务还好,如果有很多个呢,所以这里我们需要用到进程管理工具PM2

 3.安装并配置Nginx

  1. 1 //一键安装上面四个依赖
  2. 2 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 8 //下载tar包
  3. 9 wget http://nginx.org/download/nginx-1.13.7.tar.gz
  4. 10 tar -xvf nginx-1.13.7.tar.g

我们进入到/etc/nginx/conf.d目录下,创建.conf文件,随后编辑文件,指定域名即可

8880换成.NET 中appsettings.json文件中urls指向端口

  1. 1 server {
  2. 2 listen 80;
  3. 3 server_name 域名;
  4. 4 location / {
  5. 5 proxy_pass http://127.0.0.1:8880;
  6. 6 proxy_http_version 1.1;
  7. 7 proxy_set_header Upgrade $http_upgrade;
  8. 8 proxy_set_header Connection keep-alive;
  9. 9 proxy_set_header Host $host;
  10. 10 proxy_cache_bypass $http_upgrade;
  11. 11 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  12. 12 proxy_set_header X-Forwarded-Proto $scheme;
  13. 13 }
  14. 14 }

配置好之后重启下Nginx即可 命令:  systemctl restart nginx

好了,我们终于到了最后一步了!!!配置PM2 进程管理工具

4.安装配置PM2进程管理工具

  1. 1 #安装nodejs
  2. 2 yum install nodejs
  3. 3 #若遇到No package alien available.Error: Nothing to do,可先执行以下命令再安装nodejs
  4. 4 yum install epel-release
  5. 5 #查看npm版本
  6. 6 npm -v
  7. 7
  8. 8 #1、安装pm2(npm版本太低可能会导致安装失败,升级步骤见后文)
  9. 9 npm install -g pm2
  10. 10 #查看pm2的安装路径
  11. 11 sudo whereis pm2
  12. 12 #查看版本
  13. 13 pm2 -v
  14. 14
  15. 15 #2、更新PM2
  16. 16 #首先确保您正确保存了所有进程:
  17. 17 sudo pm2 save
  18. 18 #然后从NPM安装最新的PM2版本:
  19. 19 sudo npm install pm2 -g
  20. 20 #最后更新内存中的PM2进程:
  21. 21 sudo pm2 update
  22. 22
  23. 23
  24. 24 #启动进程(需要进入该项目所在目录下)
  25. 25 pm2 start 进程名
  26. 26 #启动成功后可进行访问,若不能访问检查一下端口的下行规则是否开放
  27. 27
  28. 28 #查看进程
  29. 29 pm2 list
  30. 30 #停止、删除进程
  31. 31 pm2 stop/delete 进程名
  32. 32 #查看日志
  33. 33 pm2 logs

以我现在这个项目为例创建一个进程: pm2 start 'webtool.Api.dll' --name webtoolApi  记住需要进入到进程目录哦,就是代码打包目录,创建好之后我们输入pm2 list 看看吧~

现在我们的进程是开着的Swagger UI 是可以访问的

当我们输入 pm2 stop 0(进程id)关闭之后,Swagger UI将无法访问,如下:

总结:

好啦,今天的教程就到这儿啦,希望对各位看官有所帮助,还是那句话,希望各位能直接上手实操一遍,因为看着可能不难,但真正实操时会遇到很多的问题和困难,就像本篇文章哈哈哈重装3次服务器,一个小问题卡一天,不过真正弄出来之后还是很开心的!!!

.Net 6.0 部署Linux+Nginx +PM2教程的更多相关文章

  1. ELK——在 CentOS/Linux 把 Kibana 3.0 部署在 Nginx 1.9.12

    上一篇文章<安装 logstash 2.2.0.elasticsearch 2.2.0 和 Kibana 3.0>,介绍了如何安装 Logstash.Elasticsearch 以及用 P ...

  2. .net core3.0部署Linux服务器 使用Docker容器和Nginx反代理教程

    本人刚接触.net core 由于公司项目需要部署在Linux上 近些日子学习和网上大面积搜教程 我在这给大家归拢归拢借鉴的教程做了套方案(我写的可以实现 但不一定是最好的 仅供参考) 我只用过cor ...

  3. iview-admin部署linux nginx报500错误的问题记录

    遇到个新服务器部署iview-admin之后 在nginx配置文件有个user配置项 这里需要配置为root或者可以读取本地文件的用户 站点配置如下 server { listen ; server_ ...

  4. Asp.Net Core 发布和部署 Linux + Nginx

    安装.NET Core SDK 官方介绍:https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current ...

  5. CodeIgniter 3.0+ 部署linux环境 session报错

    codeigniter Message: mkdir(): Invalid path Filename: drivers/Session_files_driver.php 看起来像权限问题,在默认情况 ...

  6. [Linux] 一个前端必会的 Nginx 免费教程-在虚拟机中用deepin测试

    原文技术胖的 nginx 技术胖 专注于前端开发 deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统,和那些 Ubuntu(下个大版本是基于 debian 开发) 的 ...

  7. 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的

    在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...

  8. ubuntu部署.Net Core3.1(Nginx+pm2)

    前言 虽然.NetCore已经出来很久了,但是很多初学者还是不会在linux部署.所以写一篇初学者在ubuntu下部署Core的全过程,大佬请无视. 环境搭建 ubuntu18.04 NetCore3 ...

  9. ZKWeb 官网与演示站点的部署步骤 (Linux + Nginx + Certbot)

    因为没有给域名续费,加上私人时间不足,ZKWeb 的官网和演示站点已经停止了几个月的时间. 最近时间开始变多,所以重新购买了别的域名和服务器把官网和演示站点重新部署上去. 在此前站点是托管在共享主机上 ...

  10. Linux上部署Tomcat+Nginx负载均衡

    前提:配置好了JDK. 我这里是vm上的linux虚拟机,可能不适用于所有情况. 一.Linux上配置Tomcat 1.下载地址:https://tomcat.apache.org/download- ...

随机推荐

  1. Jmeter 接口自动化 对变量【登录密码】进行加密处理

    在我们使用Jmeter测试的过程中,尤其是接口测试,有时候需要对参数进行MD5加密后再进行操作: Jmeter自带的就有MD5加密需要使用的到的jar(注意jmeter版本):commons-code ...

  2. JavaScript基础学习之一

    目录 let和var之间的区别 作用域不同 变量提升 暂时性死区(temporal dead zone,简称 TDZ) 相同作用域下的重复声明 脚本调用 数据类型 Boolean Object 对象 ...

  3. [cisco][LAB]OSPF in NBMA

    NBMA為一種沒有廣播類型的的網路連接,這會使得OSPF建立需要手動設定 拓樸如下: R1# ! interface Loopback0 ip address 172.16.1.1 255.255.2 ...

  4. Angular 管道和路由

    管道pipe: 要在HTML模板中指定值转换,请使用管道运算符(|). {{interpolated_value | pipe_name}} 您可以链接管道,发送一个管道功能的输出以被另一个管道功能转 ...

  5. P2345 [USACO04OPEN] MooFest G

    简单的一个分块处理:优雅的暴力枚举 #include<bits/stdc++.h>using namespace std; typedef long long ll;const int N ...

  6. docker方式部署的gitlab跨版本迁移升级

    之前代码服务器用的 beginor/gitlab-ce:11.3.0-ce.0 的版本,而当前时间已经到12.4.1了. gitlab 官方已经开始支持多语言, 而且也提供了 docker 镜像, b ...

  7. apt常用命令 - 搬运

    Debian/Ubuntu基础的系统可以使用apt安装.卸载软件包 转自:https://www.jb51.net/os/Ubuntu/56362.html APT 常用命令如下: apt list ...

  8. nginx配置https详细过程

    准备工作 需要先准备好你域名对应的证书和私钥,也就是cert证书和key.我部署是很常见的ng+tomcat双层配置,ng作为前端的代理,所以tomcat就不需要自己处理https,ng作为代理以ht ...

  9. Python学习笔记--判断语句的延续

    if else语句 示例: 需要注意的是,if后面必须有条件,而else后面可以不需要判断条件 案例: 实现: if elif else 语句 多条件判断,if 和 elif 后面必须有条件,else ...

  10. 换个脑袋,做个小练习------四则运算系统的随机出题的jsp实现

    四则运算出题系统网页界面的实现(别期待,只有俩操作数) index.jsp <%@ page contentType="text/html;charset=UTF-8" la ...