2025-07-28 麒麟V10中部署.net core项目,并设置开机自启动 以.net6为例

本来不想写后端了,没想到最近用到了获取硬件信息的接口,不过对方只提供TCP协议接口,前端没法直接调用,只好又把.NET拾起来。哎好久没用了。。。。

第一部分 .net core环境部署

1、.net core runtime下载

下载地址:https://dotnet.microsoft.com/en-us/download/dotnet/6.0
页面的右侧是runtime 左侧是SDK,下载右侧的二进制版本Binaries,根据麒麟系统的CPU 选择合适的版本:X86 、arm架构32、64位自己找到下载文件,我自己的服务器是X86_64的,所以我直接下载X64版本,下载的文件名是:aspnetcore-runtime-6.0.36-linux-x64.tar.gz

2、发布.net core webapi

开发完的.net core webapi发布到文件夹中,本文发布到publish文件夹中,然后压缩成publish.zip

3、将上述两个压缩包都复制到麒麟系统中

我这里都放到路径:/home/administrator/kfq/donet中
(1)执行命令:zip publish.zip,将其解压到/home/administrator/kfq/donet/publish目录
(2)执行命令:tar zxvf aspnetcore-runtime-6.0.36-linux-x64.tar.gz -C dotnet,将其解压到/home/administrator/kfq/donet/dotnet目录

4、配置.net core全局变量

编辑文件vim /etc/profile,在最后面添加:
export DOTNET_ROOT=/home/administrator/kfq/donet/dotnet
export PATH=/home/administrator/kfq/donet/dotnet
如果已经有PATH变量了,则在后面加:后再加/home/administrator/kfq/donet/dotnet,下面是示例:
export PATH=$PATH:/home/administrator/kfq/donet/dotnet

5、更新系统全局变量

执行命令:source profile
执行完就可以再执行:dotnet --info或者dotnet --version,看时候出来dotnet的信息,出来了就说明.net core6部署成功了。

6、运行.net core程序

通过命令:dotnet /home/administrator/kfq/donet/publish/net6webapi.dll(和exe文件同名,项目名)就可以启动.net core程序了。

第二部分 .net core程序开机自启动

1、创建 Systemd 服务文件

在 /etc/systemd/system/ 目录下,创建一个新的服务文件 swdotnet.service,我直接用touch命令创建的文件编辑不了,不知道什么原因,后来我就直接在外面把文件写好,然后复制到这个目录中了。文件中的代码如下所示:

Description=SwWeb .NET Core Application
After=network.target
 
[Service]
WorkingDirectory=/home/administrator/kfq/donet/publish
ExecStart=/home/administrator/kfq/donet/dotnet/dotnet /home/administrator/kfq/donet/publish/net6webapi.dll
Restart=always
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000
 
[Install]
WantedBy=multi-user.target

解释上面每个变量的意思:
[Unit] 部分定义了服务的描述和依赖关系。在这里,服务需要在网络配置完成后启动。
[Service] 部分定义了如何启动你的应用。
ExecStart 行指定了如何启动 .NET Core 应用。
WorkingDirectory 指定了工作目录,就写dll文件的目录就行。
Restart=always 保证服务在崩溃时会自动重启。
[Install] 部分告诉 Systemd 在系统启动时如何处理这个服务。
WantedBy=multi-user.target 表示该服务将作为多用户模式的一部分启动。

以上代码中我试过ExecStart=dotnet /home/administrator/kfq/donet/publish/net6webapi.dll,却不行,不知道为什么。而且会遇到很多问题,可以看系统日志来排查,看日志的命令:tail -n 20 /var/log/syslog。有个遇到的问题是提示我的文件有可执行权限,要把这个权限去掉,运行命令:sudo chmod 644 swdotnet.service。就行了。

2、下面的代码是其他人写的,我记录下,上面成功了,可以直接看第三步。

没试过,我自己成功的就是上面的代码,下面的好像设置了用户和组,反正我没设置也跑起来了。

[Unit]
Description=DCOWebhook ASP.NET Core Web API
After=network.target

[Service]
WorkingDirectory=/var/www/dco
ExecStart=/usr/bin/dotnet /var/www/dco/DCOWebhook.dll --urls "http://0.0.0.0:5000" #换成需要监听的端口
Restart=always
# 用户和组
User=www-data
Group=www-data
# 环境变量
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

解释下参数。User 和 Group:推荐使用非 root 用户(如 www-data)运行服务,提升安全性。

3、设置开机自启动

主要是以下四个命令:
(1)sudo systemctl daemon-reload。每次修改了服务文件,都需要让 Systemd 加载新的配置。执行这个命令。
(2)sudo systemctl enable yfweb.service。让服务在开机时自动启动
(3)sudo systemctl start yfweb.service。立即启动服务
(4)sudo systemctl status yfweb.service。如果服务运行正常,状态应显示为 active (running)。你应该会看到服务正在运行,并监听指定的端口
这样设置后如果没报错,就成功设置了开机启动,如果有问题,那就要具体问题具体分析了,主要是看下系统日志。

4、以下几个是我参考的文章,也赋在下面把。

https://cloud.tencent.com/developer/article/2491778
https://blog.csdn.net/weixin_48916144/article/details/147371288
https://blog.csdn.net/liqz2009/article/details/122377218
http://blog.tool90.com/331.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容