Linux系统部署.Net Core3.1项目

一. 发布项目 

发布的连接选择“文件系统”,部署模式选择“框架依赖”,

二. 首先在目标Linux系统(CentOS 7.9)中安装.Net Core SDK

说明:linux上安装dotnetcore sdk有两种方式,一个是使用编译好的离线安装包dotnet-sdk-3.1.201-linux-x64.tar.gz,一个是使用微软提供的yum仓库。

1. 使用离线sdk安装包安装sdk(推荐)

1.1 下载 dotnet-sdk,访问官网:https://dotnet.microsoft.com/download/dotnet-core/3.1

1.2. 上传安装包到Linux系统

先 cd /usr/local 下创建一个文件夹 mkdir dotnet

将sdk安装包上传并解压到这个目录中

tar -zxvf dotnet-sdk-3.1.201-linux-x64.tar.gz -C /usr/local/dotnet

1.3. 配置环境变量

/etc/profile文件末尾加上两行,命令 vim /etc/profile 进入,按 i 进行编辑,按 Esc 键退出后再按 :wq 进行保存。

export DOTNET_ROOT=/usr/local/dotnet
export PATH=$DOTNET_ROOT:$PATH

执行命令 source /etc/profile使改动生效:

source /etc/profile

1.4. 验证dotnetcore环境:

dotnet -version 或 dotnet -info

2. 使用yum仓库安装

查看官方文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

2.1.先添加微软包存储库(我这里试过了下载不下来不知道为啥,所以就用上面离线安装方式)

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

2.2.查找出要装的哪个sdk(非必要)

yum search dotnet

2.3.安装.net core sdk

yum install dotnet-sdk-3.1

2.4.安装完成后查看.Net Core SDK信息,或者用dotnet -version查看版本号

dotnet -info

三. 项目部署启动过程

1. 创建一个/usr/local/netcore/DemoWeb目录存放站点文件

2. 将我们打包好的部署文件publish目录下的所有文件上传到刚才创建的目录

3. 使用cd命令进入站点目录中:cd /usr/local/netcore/DemoWeb

4. 启动项目,注:执行启动命令,一定要指定dll的路径或者先cd进入站点目录,否则会启动不成功

方式一:普通模式启动和停止站点,这种启动方式有个弊端就是,关闭Xshell的会话之后,站点同时会自动关闭,无法访问

#进入项目目录
cd /usr/local/netcore/DemoWeb
#启动站点,自定义端口号,运行环境
dotnet Asp.NetCore.Demo.Web.dll --urls="http://*:5000;http://*:5001" --environment=Development
#停止站点
Ctrl+c

方式二:后台进程模式启动和停止站点,避免关闭会话后,站点无法访问

#进入项目目录
cd /usr/local/netcore/DemoWeb
#启动站点,自定义端口号,运行环境
nohup dotnet Asp.NetCore.Demo.Web.dll --urls="http://*:5000;http://*:5001" --environment=Delopment > /dev/null 2>&1 &
#查看相关进行
ps -aux | grep "Asp.NetCore.Demo.Web.dll"
#关闭站点进程,当前进程直接使用Ctrl+c
kill 进程号

这里使用后台进程,关闭Xshell也不会关闭站点,在当前进程,停止站点直接使用Ctrl+c,否则需要找出进程ID,然后kill进程号。

/dev/null:/dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中
/dev/null可以理解为/dev路径下的空文件;该命令将command命令的标准输出输出到空文件中
2>&1:可以理解为执行command产生的标准输出重定向到文件中,标准错误也重定向到文件中,期间只打开一次文件,&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的文件。

注意:后台进程虽然可以再Xshell关闭后还能运行,但是当系统关机重启后,进程就没有了,这个时候还是需要手动启动。

为dotnet创建守护进程的方式来保证开机就能访问站点文章(为.Net Core项目创建Supervisor进程守护监控)。

5. 在浏览器中访问即可,我们的浏览器能正常访问,部署成功。 注:服务器防火墙中开放该端口号

#查看防火墙状态
firewall-cmd --state
#批量开放端口
firewall-cmd --zone=public --add-port=5000-5001/tcp --permanent
#重启防火墙
firewall-cmd --reload
#查看防火墙开放的端口
firewall-cmd --list-ports

 

posted @ 2022-04-08 15:20  以德为先  阅读(1322)  评论(0编辑  收藏  举报