CentOS环境信息:
CentOS 8
生成发布文件时的参数信息:
一、安装.Dotnet Core 2.2
在安装Dotnet Core前,需要注册Microsoft签名密钥并添加Microsoft产品提要,每台机器只需注册一次,执行如下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
安装Dotnet Core SDk,执行下列命令
sudo yum update
y
sudo yum install dotnet-sdk-2.2
y
安装完成后通过命令:
dotnet --info
来查看安装情况
二、部署Asp.net Core 应用程序
在CentOS系统中,新建publish文件夹(根目录下创建的)
mkdir publish
创建完成后用Xftp软件将本地发布好的文件上传到服务器的publish文件夹下
拷贝完成后进入publish目录
cd publish
使用命令:
ls
查看上传上去的文件
检查是否能运行
dotnet 项目名.dll
如果出现xxxxxx Press Ctrl+C to shut down 就表明可以运行了
到此,项目就运行成功了,这时候我们是无法访问到这个页面的,这时候我们需要部署一个web容器来进行转发,我们可能还要安装 nginx 、配置我们的 FireWall 以及配置守护服务 Supervisor 等等
三、配置Nginx托管
微软官方提供的https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.2#monitor-the-app,把dotnet创建成一个服务
安装nginx
curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx
启动 Nginx:
systemctl start nginx
设置开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)
systemctl enable nginx
成功提示信息:
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
四、配置防火墙
查看防火墙状态:
sudo systemctl status firewalld
已开启的消息提示:Active: active (running) since Sat 2019-09-07 16:57:00 CST; 9min ago
开放80端口:
firewall-cmd --permanent --zone=public --add-port=80-80/tcp
重启防火墙以使配置即时生效:
systemctl restart firewalld
检查测试nginx是否可以访问
在浏览器中输入本地虚拟机ip地址或者服务器的公网IP,如果能看到Welcome to nginx!则表示配置OK了
五、配置Nginx对ASP.net Core 应用的转发
使用命令:
vi /etc/nginx/conf.d/default.conf
修改Nginx的default.conf文件
将文件内容替换为:
server {
listen 80;
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;
}
}
配置完成后,输入服务器或本机ip地址进行访问。检查是否能启动网站
我一次性成功。如果有502 Bad Gateway,请参考原文。
但是,我们还是存在着其他的问题:
1.ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。
2.如果ASP.NET Core进程意外终止那么需要人为连进shell进行再次启动,往往这种操作都不够及时。
3.如果服务器宕机或需要重启我们则还是需要连入shell进行启动。
为了解决这些问题,我们需要有一个程序来监听ASP.NET Core 应用程序的状况。
六、配置Supervisor守护服务
在应用程序停止运行的时候立即重新启动。这边我们用到了Supervisor这个工具,Supervisor使用Python开发的。
安装Supervisor:
yum install python-setuptools
配置Supervisor:
①运行supervisord 服务的时候,需要指定 Supervisor 配置文件,所以,先通过如下命令创建目录,以便让 supervisor 成功加载默认配置:
mkdir /etc/supervisor
②目录创建成功后, 通过 echo_supervisord_conf 程序(用来生成初始配置文件,文件名可以自定义)来初始化一个配置文件:
echo_supervisord_conf > /etc/supervisor/supervisord.conf
③通过vim命令修改创建好的supervisord.conf配置信息:
vi /etc/supervisor/supervisord.conf
④最下边找到如下文本片段:
;[include]
;files=relative/directory/*.ini
修改为:
;[include]
;files=/etc/supervisor/conf.d/*.ini
为我们部署的.NET Core添加进程配置文件:
①创建配置文件OAManager.ini(文件名自定义)
[program:OAManager]
command=dotnet /root/oa-publish/OAManager.dll
directory=/root/oa-publish/
autostart=true
autorestart=true
stderr_logfile=/var/log/OAManager.err.log
stdout_logfile=/var/log/OAManager.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
②在/etc/supervisor/目录下创建一个文件夹conf.d
mkdir /etc/supervisor/conf.d/
将刚创建的配置文件OAManger.ini移到conf.d文件夹下
mv OAManager.ini /etc/supervisor/conf.d/
如果服务已经启动,则需要使用 supervisorctl reload 命令来使新的配置生效,当然,我们这里并没有启动,所以不需要这一步。
启动 Supervisor 服务
supervisord -c /etc/supervisor/supervisord.conf
启动服务后,我们可以检测看一下:
ps -ef | grep OAManager.dll
这个时候, 我们已经不需要使用dotnet命令运行程序, 同样可以访问我们部署的.NET Core程序了。
至此关于ASP.NET Core应用程序的守护即配置完成。
七、配置Supervisor开机启动:
①进入/usr/lib/systemd/system/目录,并创建supervisord.service文件(或者在本地写好了再通过ftp工具传输到指定目录下)
vi /usr/lib/systemd/system/supervisord.service
修改文件
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
②设置开机启动
激活开机启动:
systemctl enable supervisord
命令成功后,会出现Create ...字样
查看设置后的启动状态
systemctl is-enabled supervisord
重启,测试是否可以开机自启
好了。最终也成功的在重启之后,可以访问地址。
参考地址:
https://www.cnblogs.com/i3yuan/p/11025672.html
https://www.cnblogs.com/sundahua/p/9149692.html
分享到:
相关推荐
本文将详细介绍如何在阿里云的 CentOS 操作系统上部署 Asp.Net Core 应用程序。我们将从安装准备开始,到部署和配置运行环境,最后实现外网访问。 一、安装准备 在开始部署 Asp.Net Core 应用程序之前,我们需要...
将ASP.NET Core应用程序部署至生产环境中(CentOS7) 将ASP.NET Core应用程序部署至生产环境中(CentOS7) 将ASP.NET Core应用程序部署至生产环境中(CentOS7)
Centos7+Docker+Jenkins+ASP.NET Core 2.0自动化发布与部署的实现
Centos+Docker+ Jenkins+ ASP.NET Core 2.0自动化发布与部署的实现
- **部署 ASP.NET Core 应用程序**:将编译好的应用程序包上传到服务器,并通过 `dotnet` 命令启动服务。 - **配置 Nginx**:设置 Nginx 作为反向代理服务器,将外部请求转发给 .NET Core 应用程序。 - **配置守护...
- 在 CentOS 上运行 ASP.NET Core 应用。 #### 第2章:配置管理 **2.1 配置介绍** - **概念**: 存储应用程序设置和外部环境变量的地方。 - **作用**: 提供动态配置选项,支持不同环境下的应用配置。 **2.2 ...
".NET Core WebApi 在 Linux 服务器上的部署方法" .NET Core WebApi 是微软推出的一个跨平台的 Web 框架,能够在 Linux 服务器上运行。下面是将 .NET Core WebApi 部署在 Linux 服务器上的方法。 准备服务器 首先...
【ASP.NET Core在Linux(CentOS)环境的部署】 ASP.NET Core是一个跨平台的开发框架,允许开发者在Windows、macOS和Linux上构建Web应用程序。本篇将详细讲解如何在Linux(CentOS 8.2 64bit)环境下部署ASP.NET Core应用...
为了能够运行ASP.NET Core应用程序,首先需要在服务器上安装.NET Core SDK。具体步骤如下: 1. **安装依赖库**:通过`sudo yum install libunwind libicu`命令安装必要的依赖库。 2. **下载并安装.NET Core SDK**:...
在本文中,我们将深入探讨如何将ASP.NET Core应用程序部署到生产环境,特别是在CentOS 7操作系统上。ASP.NET Core是一种跨平台的开发框架,用于构建高效、现代化的Web应用程序。以下是你需要了解的关键步骤和注意...
【ASP.NET编程知识】基于.NET Core 3.1的网站开发和部署方法涵盖了从环境配置到项目发布的全过程,以下是对这些知识点的详细说明: 一、准备开发环境 1. 主要开发工具的选择:这里推荐使用Visual Studio Code ...
我们使用的是 ASP.NET Core 3.1 作为开发框架,CentOS Linux release 7.9.2009 (Core) 作为 Linux 环境,Swashbuckle.AspNetCore 作为 Swagger 工具,VS2019 作为开发工具,xShell 和 xFtp 作为远程连接工具。...
搭建*** Core开发环境,尤其是在Linux系统如CentOS上,对于.NET开发者而言是一个重要技能。接下来,我们将详细讲解搭建.NET Core开发环境的步骤,以及相关的知识点。 首先,搭建.NET Core开发环境的步骤可以分为...
网上有很多部署Net Core3.1的...选择Centos7系统 安装SDK与ASP.NET Core 运行时 两个仅可 一:安装.NET 之前先需要一个密钥 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod