本文主要记录我在Linux(Ubuntu)上部署.net core 的操作记录,也便于以后部署。
如对您有所帮助,不胜荣幸~
文章目录
前言
本文主要介绍如何将windows上开发的 dotnet core web 应用程序部署到 Linux服务器上(Ubuntu 22.04)。
本人所使用的软件版本如下:
- 操作系统版本:Ubuntu 22.04
- web 项目版本:.net 6.0
本人在windows端部署的网站如下。端口:5001。本文目标就是将其部署到Ubuntu上去。
一、准备工作
1. 版本信息
- 操作系统版本:Ubuntu 22.04
- web 项目版本:.net 6.0
2. windows端web项目
二、操作步骤
1. Linux 配置 .net 运行环境
众所周知,所有 .net 项目的运行都需要 .net 运行环境。
.net 运行环境分两种:sdk 和 runtime(运行时) 。
- sdk:sdk包含runtime,同时可以为.net 开发人员提供.net 项目的运行编译打包环境。
- runtime:runtime 是sdk的一个子集,仅仅可以使得.net程序在操作系统上运行。
如果无需在Linux上做.net开发,可以只安装runtime,我这里主要演示sdk的安装。
微软官方参考文档:
在 Ubuntu 上安装 .NET SDK 或 .NET 运行时
使用安装脚本或通过提取二进制文件在 Linux 上安装 .NET
1.1 查看最新 .net 运行环境的下载路径
前往 .net 官方下载地址 ,页面内容打开如下图所示:
我们选择上图中的.NET 6.0,进入下图页面,选择合适自己操作系统架构的 SDK 地址。
ubuntu 查看系统架构的命令如下:
dpkg --print-architecture
我的是amd64,选择x64。
点击【copy】按钮复制得到下载地址:
https://download.visualstudio.microsoft.com/download/pr/868b2f38-62ca-4fd8-93ea-e640cf4d2c5b/1e615b6044c0cf99806b8f6e19c97e03/dotnet-sdk-6.0.407-linux-x64.tar.gz
1.2 安装 dotnet SDK
1.2.1 下载安装包
我们使用wget命令下载复制得到的runtime安装包
wget https://download.visualstudio.microsoft.com/download/pr/868b2f38-62ca-4fd8-93ea-e640cf4d2c5b/1e615b6044c0cf99806b8f6e19c97e03/dotnet-sdk-6.0.407-linux-x64.tar.gz
1.2.2 解压安装包
在当前主目录下创建.dotnet 文件夹
mkdir -p .dotnet
创建成功:
文件夹选项,设置显示隐藏文件后可以见到.dotnet文件夹:
将安装包内的文件解压到.dotnet 文件夹中
tar -zxvf dotnet-sdk-6.0.407-linux-x64.tar.gz -C .dotnet
解压成功。
1.2.3 设置环境变量
要使环境变量对所有用户有效,需要修改profile文件:
sudo vim /etc/profile
键入[i],插入以下语句:
export DOTNET_ROOT=$(pwd)/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
再键入[Esc],退出编辑模式。
键入[:wq]保存并退出Vim。
注销或者重启就可以生效。
1.3 验证
重启后,通过dotnet --info 命令查看dotnet信息。
设置完成。
SDK 安装成功。
2. windows 端 web 项目发布选项设置
Visual Studio 中 web 项目的发布选项需要将 TargetRuntime 改成 Linux版本,选择适合自己的Linux架构版本,前文中已经讲过如何查看自己Linux的架构了。本人的amd64,选择x64。
Deployment Mode(部署方式) :
- Self-contained (独立应用) 自带dotnet运行时,可以部署至一台空白环境服务器,无需提前安装配置dotnet运行时。缺点是:部署包较大。
- Framework-dependent(框架依赖型) 生成跨平台的部署包,用户需要在Linux上安装相应版本的运行时。
我之前已经安装好.net 6.0 SDK,包含了运行时,所以这里我选择Framework-dependent。
3. 将web发布文件从windows上传到LInux
设置成功后,选择发布,将web应用程序发布到文件夹。
发布成功后,使用ftp将web发布文件从windows上传到Linux上。
PS:本人在Linux上的web发布项目为:/home/qyh/workspace/WebPublishFolder/WowCrtAdvrts
上传成功:
上图中程序入口就是:Jcjy.Web(你的web项目名称)
4. Linux 运行 web 项目
控制台进入.net web项目路径:
cd ~/workspace/WebPublishFolder/WowCrtAdvrts
运行web项目:
dotnet Jcjy.Web.dll
浏览器输入ip+端口号,如下图所示。部署成功。
到目前为止Linux上部署.Net Core Web已经讲完了。接下来我主要讲下如何利用Nginx做反向代理。
5. 设置 web 项目 开机自启
supervisor是python开发的通用进程管理程序,可以将普通的命令行进程变成后台守护进程,监控进程状态,当进程异常退出时可自动重启。
5.1 安装supervisor
sudo apt-get install supervisor
如图所示,安装完成。
5.2 在supervisor中为.net web 项目添加配置信息
5.2.1 创建.net web项目的日志输出文件夹
我们先把web项目的日志输出文件夹创建好,这里我准备将日志放到这个目录下:/var/log/web/dotnet/
sudo mkdir -p /var/log/web/dotnet
5.2.2 进入/etc/supervisor/conf.d
supervisor安装好之后,在/etc/下会有一个supervisor文件夹,conf.d就是存放supervisor的配置文件的文件夹。
cd /etc/supervisor/conf.d
5.2.3 新建config文件
我们为.net web 项目创建配置文件:
sudo touch WowCrtAdvrts.conf
这里的【WowCrtAdvrts】是你的web 项目名称,
5.2.4 添加开机自启等配置项
编辑 WowCrtAdvrts.conf 文件
sudo vi WowCrtAdvrts.conf
i
输入一下配置项:
[program:WowCrtAdvrts]
command=dotnet Jcjy.Web.dll
directory=/home/qyh/workspace/WebPublishFolder/WowCrtAdvrts/
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=1
stderr_logfile=/var/log/web/dotnet/WowCrtAdvrts.err.log
stdout_logfile=/var/log/web/dotnet/WowCrtAdvrts.out.log
directory就是我们的.net core web项目所在目录;
stderr_logfile是错误日志所在路径,stdout_logfile是输出日志所在路径,我统一放在了/var/log/web/dotnet/下面;
然后输入ESC->:wq保存退出即可。
修改完成。
5.2.5 重启supervisor
sudo service supervisor stop
sudo service supervisor start
5.2.6 查看supervisor服务是否正常运行
sudo supervisorctl
5.3.5 为supervisor开启可视化web站点管理界面(可选操作)
supervisor自带了可视化管理界面,需要我们做一下配置就能开启。
在/etc/supervisor 目录下,打开supervisor.conf 文件
cd /etc/supervisor
sudo vi supervisor.conf
i
添加如下配置项
[inet_http_server]
port=127.0.0.1:8001
username=admin
password=123456
保存修改并退出
ESC
:wq
重启supervisor
sudo service supervisor stop
sudo service supervisor start
总结
以上就是今天要讲的内容,总的来说还是很简单的,但是我在具体操作时参考网上教程还是踩了一些坑。本文如对您有所帮助,不胜荣幸~