IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux下部署ASP net core程序(Nginx反向代理) -> 正文阅读

[系统运维]Linux下部署ASP net core程序(Nginx反向代理)

Author:think

前言

部署分为三步,首先是Nginx中间件的部署,它的作用是提供web服务并为ASP net core程序提供代理,让使用者能够在外部进行访问;其次是dotnet的安装部署,我们都知道ASP net core是可以做到跨平台的,因此我们需要部署它的运行环境之后才能让程序在Linux环境中运行;最后是两个服务之间的联动配置,环境部署完成就是发布、上传、启动以及访问测试。

部署环境是CentOS 7 x64

一、Nginx安装部署配置(非编译安装)

我在网上找了很久,发现是nginx不在linux的官方yum源中,但我找到两种安装方法:

自己写的教程

安装nginx:

sudo rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-2.el7.ngx.x86_64.rpm

如果不想要该发行版本,则可以到http://nginx.org/packages/centos/7/x86_64/RPMS/中进行选择。

通过命令systemctl status nginx来查看服务状态时发现是已经安装上了

image-20210227220044000

通过命令systemctl start nginx来启动服务,如果没有任何提示则代表启动成功,如果出现以下提示则可以按照提示信息来进行排查

image-20210227220336802

输入命令:systemctl status nginx

image-20210227220442943

如图所示,日志中显示是80端口已被占用,因此我们有两种方法

  1. 查看并关闭占用80端口的服务
  2. 修改nginx的.conf文件来更改nginx所监听的端口

在这里我们选择第一种方法,输入命令:lsof -i:80来查看是那一项服务占用了80端口

image-20210227220902272

从图中我们可以看到是httpd服务占用了80端口(httpd是Apache在Linux中的服务名称),使用命令systemctl stop httpd来关闭命令,再使用命令:systemctl start nginx来启动nginx服务即可,如图所示没有任何提示则代表启动正常

image-20210227221233573

使用命令:curl http://localhost来测试Nginx服务是否部署完成,如下图所示则代表完成Nginx的部署

image-20210227221430926

官方教程(暂时没有用)

教程地址:http://nginx.org/en/linux_packages.html#RHEL-CentOS

二、.net core程序运行环境的部署

在部署环境时,生产环境一般是只需要运行环境即可,现在我们是测试环境,就安装的是SDK,这其中就包含了运行环境。

首先还是添加源(也被称为获取签名密钥)

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

安装.net SDK

sudo yum install dotnet-sdk-3.1 -y

其中3.1是SDK的版本号,根据自身项目的框架版本来选择正确的版本。如需官方的安装信息请参考安装官网信息

检验安装是否完成

dotnet --version

image-20210227224307941

三、联动配置

首先打开nginx的配置文件,旧版的nginx配置文件默认路径是: /etc/nginx/nginx.conf,如果找不到则可以使用find命令来进行查找

find / -name nginx.conf

但是后面更新之后其server配置则是被写在了/etc/nginx/conf.d/default.conf中,我们可以修改默认的server配置信息即可,以下是我的default.conf配置文件内容(已删除被注释的内容):

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        #网站根目录
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        #开启代理功能,因为.net core的默认端口为5000,因此这里设置成5000,如遇变化则该处端口配置也要变化
        proxy_pass http://localhost:5000;
    }

    error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

重启Nginx

nginx -s reload

设置Nginx为开机自启

systemctl enable nginx

四、发布、上传、启动以及访问测试

发布

  1. 项目名称上右键->发布

image-20210227231034037

  1. 选择部署到文件夹->点击发布

    image-20210227231219077

  2. 到上图所示的“目标位置”文件夹目录中将所有文件利用FTP工具上传至Linux的web根目录下,如果觉得工程项目的位置难找,则可以通过右键项目名称->在文件资源管理器中打开文件夹来快速定位到工程项目目录image-20210227231525950

上传

我这里利用的是xftp来进行传输image-20210227232325087

前面工作做完之后就要启动.net core程序并且进行访问测试。

启动程序

首先cd到Linux的web根目录下,路径地址因人而异

启动程序命令为dotnet (你的项目名称).dll我们是通过dll文件来启动程序的

dotnet 数据库连接测试2.dll

image-20210227232830232

出现该页面说明.net core程序已经启动完成。

访问测试

因为我部署的是web api程序,因此我需要在浏览器中输入其api接口的地址才能够得到信息,如果是其他的普通的.net core程序则可以在浏览器中输入Linux的IP即可访问到我们开发的.net core程序,我的则是需要额外地输入其他的路径信息,经过测试能够调用api接口说明部署完成!image-20210227233433174

写在最后

关于该.net core程序的进程,我在网上查阅资料资料时发现还需要进行进程守护,方法如下(毕竟是简单测试,因此下面的方法还没有测试):

nohup 启动

nohup dotnet 你的项目名.dll

这样一来你的网站就跑起来了,并且断开会话进程也不会被关闭,简单和无需进行配置就是它的优点,但若是想要关闭就麻烦了,需要 ps -ef | grep dotnet 找到对应的进程 id 再将其 kill。另外一个缺点是,如果服务器重启,或者你的项目出现错误意外退出了,那么你的项目是不会自动重新启动的。因此你若介意的话,还是推荐下面一种方法。

Supervisor 守护

Supervisor 是微软推荐的一个进程管理工具,可以让指定程序在后台运行,并且在进程异常退出时将自动重启它。

安装 supervisor

yum install python-setuptools
easy_install supervisor

配置 supervisor

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
mkdir /etc/supervisor/conf.d
  • 修改 supervisor.conf 文件尾部的 include 部分如下:
;[include]
;files = conf.d/*.conf
  • 在 /etc/supervisor/conf.d 目录下为项目创建配置文件:vim /etc/supervisor/conf.d/你的项目名.conf
[program:你的项目名]
command=dotnet 你的项目名.dll 
directory=你的项目目录
autorestart=true
stderr_logfile=/var/log/你的项目名.err.log
stdout_logfile=/var/log/你的项目名.out.log 
environment=ASPNETCORE_ENVIRONMENT=Production 
user=root
stopsignal=INT
  • 启动配置文件:
supervisord -c /etc/supervisor/supervisord.conf

相关命令

  • 重载配置文件

    supervisorctl reload
    
  • 查看守护的所有进程状态

    supervisorctl status all
    
  • 关闭所有守护进程

    supervisorctl stop all
    

参考资料:

  • https://houkaifa.com/2020/03/08/deploy-aspnetcore-app/
  • https://www.cnblogs.com/tenghao510/p/11990353.html
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:51:11  更:2022-04-04 12:51:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:34:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码