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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux下,可以使用Nginx反向代理Tomcat。反向代理的作用是将客户端的请求转发到后端的Tomcat服务器上,并将Tomcat服务器的响应返回给客户端。这样可以提高Tomcat服务器的性能和安全性。 以下是反向代理Tomcat的步骤: 1. 安装Nginx和Tomcat。 2. 配置Tomcat服务器,确保Tomcat服务器可以正常运行。 3. 配置Nginx服务器,将客户端的请求转发到Tomcat服务器上。 4. 重启Nginx服务器,验证反向代理是否生效。 具体的步骤如下: 1. 安装Nginx和Tomcat。 可以使用apt-get或yum等包管理器来安装Nginx和Tomcat。例如,在Ubuntu系统上,可以使用以下命令来安装Nginx和Tomcat: ``` sudo apt-get install nginx sudo apt-get install tomcat8 ``` 2. 配置Tomcat服务器,确保Tomcat服务器可以正常运行。 在Tomcat服务器上,需要配置server.xml文件,将Tomcat服务器的端口号改为8081(或其他未被占用的端口号),并启用AJP协议。具体的配置如下: ``` <Connector port="8081" protocol="AJP/1.3" redirectPort="8443" /> ``` 然后,启动Tomcat服务器: ``` sudo service tomcat8 start ``` 3. 配置Nginx服务器,将客户端的请求转发到Tomcat服务器上。 在Nginx服务器上,需要编辑nginx.conf文件,添加以下配置: ``` server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 这个配置将客户端的请求转发到Tomcat服务器的8081端口上。其中,proxy_pass指定了Tomcat服务器的地址和端口号,proxy_set_header指定了一些HTTP头信息,用于传递客户端的真实IP地址和其他信息。 4. 重启Nginx服务器,验证反向代理是否生效。 在Nginx服务器上,执行以下命令重启Nginx服务器: ``` sudo service nginx restart ``` 然后,在浏览器中输入Nginx服务器的IP地址或域名,应该可以看到Tomcat服务器的欢迎页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

think_mzs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值