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