银河麒麟服务器V10 SP1 .Net6.0 开机自启动

news2024/9/20 7:50:41

开机自动启动,折腾了一小天,设置/etc/init.d/ 、update-rc.d,可能刚开始用,经验不多吧,尝试多种方式我的服务怎么都启动不起来,根据之前nginx和redis的自动启动经验,使用systemd管理服务,systemd 是 Linux 操作系统的系统和服务管理器,注意全部是小写,systemd是init和SystemV的替代者,查询了微软官方关于NetCore自动启动配置文档:

将 ASP.NET Core应用程序配置为自动启动 - ASP.NET Core | Microsoft Learn

ini文件内容如下:

[Unit]
Description=Example .NET Web API App running on Ubuntu

[Service]
WorkingDirectory=/var/www/helloapp
ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

以下是此内容的一些关键说明:

WorkingDirectory 是发布应用程序的目录。
ExecStart 是启动应用程序的实际命令。
Restart=always 是自动的。 如果由于某种原因(无论是手动还是由于崩溃)而停止,则始终会启动此过程。
RestartSec=10 也是自动的。 进程停止后,将在经过 10 秒后启动。
SyslogIdentifier 很重要。 它表示“系统日志标识符”。 有关守护程序的信息记录在此名称下的系统日志中。 还可以使用此标识符查找进程的 PID。
User 是管理服务的用户。 它应存在于系统中,并具有相应的应用程序文件所有权。
可以在服务文件中设置任意数量的环境变量。

注意:该 www-data 用户是系统中的特殊用户。 可以使用此帐户。 你也可以创建一个新用户,用于在 Linux 中练习用户权限。 但是,如果不想创建另一个 Linux 用户,则可以使用 www-data 它。

查询系统用户命令:

root@xxx-pc:~# cat /etc/passwd | cut -f -1 -d:,如下图:

 

将以上内容定义为dotnet6.service内容修改后如下:

[Unit]
Description=.NET6 Web API App running

[Service]
WorkingDirectory=/usr/local/HF.WebApiServiceRelease6-Linux/HF.WebApiServiceRelease6-Linux
ExecStart=/usr/bin/dotnet /usr/local/HF.WebApiServiceRelease6-Linux/HF.WebApiServiceRelease6-Linux/HF.WebApiService.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet6-WebAPI
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

 

上传至银河麒麟V10 SP1服务器,使用命令将文件复制到:/lib/systemd/system,此目录实际映射为/usr/lib/systemd/system目录:

cp /home/dotnet6.service /lib/systemd/system/dotnet6.service

复制成功后使用命令启动,如果不是root管理员,首先获取root管理员权限 :

root@xxx-pc:~# sudo su - 会提示输入密码:

 

获得权限后:

sudo systemctl daemon-reload

sudo systemctl enable dotnet6.service

sudo systemctl start dotnet6.service

sudo systemctl status dotnet6.service

按步骤执行上面命令:

依然没有成功,一脸蒙圈,错在哪了,又开始了翻找文档,网络上大部将dotnet根目录设置为/usr/bin/dotnet 导致配置文件 ExecStart=/usr/bin/dotnet 实际是不正确的,使用命令:which dotnet

 这才是dotnet运行目录,修改设置后,重新执行上面按顺序systemctl的命令,依然启动失败,经过一番摸索查找后发现:

 Environment设置后不会读取appsettings.json配置文件,程序会找appsettings.Production.json文件,于是将这两句注释,最终内容如下:

[Unit]
Description=.NET6 Web API App running

[Service]
WorkingDirectory=/usr/local/HF.WebApiServiceRelease6-Linux/HF.WebApiServiceRelease6-Linux
ExecStart=/home/dotnet/dotnet /usr/local/HF.WebApiServiceRelease6-Linux/HF.WebApiServiceRelease6-Linux/HF.WebApiService.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet6-WebAPI
User=www-data
#Environment=ASPNETCORE_ENVIRONMENT=Production
#Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
#Environment=DOTNET_ROOT=/home/dotnet

[Install]
WantedBy=multi-user.target

再按顺序执行命令:

sudo systemctl daemon-reload

sudo systemctl enable dotnet6.service

sudo systemctl start dotnet6.service

sudo systemctl status dotnet6.service

其实我只执行 sudo systemctl daemon-reload 、sudo systemctl status dotnet6.service 服务已经自动启动了:

 访问页面服务端地址:

至此,终于折腾完成了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity基础 物理系统 刚体组件下的移动.碰撞.触发检测

当在Unity中创建游戏或应用程序时,重力系统是一个非常重要的组成部分。它可以模拟物体受到地球引力的影响,并产生逼真的物理效果。在Unity中,我们可以使用刚体组件和重力向量来控制重力系统。 首先,在Unity中创建一个物体&#xf…

数据表示与数据编码

数据表示与数据编码 数据表示 bit:二进制位 例如:480Mbps(Mb/s) 小写字母b代表bitbyte:字节 1byte8bit 使用大写字母B表示 byte最初从IBM360中开始表示word:字长 在32bit计算机中一个字长为32位,在64bit计算机中一个字长为64位 最早的微处理器字长为4位 章节学习内…

Windows的基本操作

Windows的基本操作 一、用户管理1.1、用户帐户1.2、用户管理 二、网络配置2.1、配置和查看命令 三、常用命令 一、用户管理 1.1、用户帐户 系统中的一种对象(用户、组、计算机)包含多种属性,如用户名、密码等不同用户帐户的用户名和密码等一…

插入排序--直接插入排序,折半插入排序,希尔排序

插入排序是一种简单直观的排序方法,其基本思想是每次将一个待排序的记录按其关键词大小插入前面已经排好的子序列,直到全部记录插入完成。 一,直接插入排序:从小到大排序 数组序号01234567待排序列4938659776132749第一轮384965…

【数据算法与结构】用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目

题目: Qestion: 用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目。 数据结构定义 typedef struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right; } TreeNode;样例二叉树的形状 核心代码 // 统计具有度为1的节点数目的…

解决idea默认配置maven仓库地址的问题

我的maven配置地址 一直没注意 jar包什么的全部都是C盘默认的路径,导入项目更改后,再次导入项目 路径还是会变成C盘的路径; 上网搜索找到了解决的办法; 一、File——>New Projects Setup ———>Settings for New Projects…

React hooks之useCallback的使用与性能分析

使用useCallback优化代码 useCallback是对传过来的回调函数优化,返回的是一个函数;useMemo返回值可以是任何,函数,对象等都可以。 简单来说就是返回一个函数,只有在依赖项发生变化的时候才会更新(返回一个…

vue项目打包后如何本都部署访问

npm run build生成dist项目后,在windows部署访问。 方式一: 1、新建一个文件夹 进入目录后打开cmd 输入npm init -y 2、输入 npm i express -s 是用于在 Node.js 项目中安装 Express 框架的命令 3、.将项目打包好的dist文件放入其中以及新建一个app.js文…

C++ 二叉搜索树

1. 内容安排说明 二叉树在前面 C 数据结构阶段已经讲过,本节取名二叉树进阶是因为: 1. map 和 set 特性需要 先铺垫二叉搜索树,而二叉搜索树也是一种树形结构 2. 二叉搜索树的特性了解,有助于更好的理解 map 和 set 的特性 …

在JDK17尝鲜Flink1.17

在JDK17尝鲜Flink1.17 前言 还没玩明白老版本,Flink1.17就来了!!!总还是要向前看的。。。 根据官网文档:https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/try-flink/local_installation/ Flink r…

【Excel技巧】如何将一堆文字快速整理成一列表格数据?

在平时的工作中,我们有时候需要把很多零散的分布的内容(比如姓名),复制到Excel工作表的单元格内,变成一列。如果一个个复制粘贴,显然太过繁琐。 如何批量快速的完成这一操作呢?只需要下面简单几…

关于排查springboot启动时页面出现404

今天在进行开发时,Contronller代码没有问题,前端html也没问题,发现当浏览器输入localhost:8080时404,于是进行排查发现,SpringbootWebApplication文件放到了子目录下。 springboot的启动文件必须放在父目录下才可以检测…

【Git原理与使用】-- 远程操作

目录​​​​​​​ 理解分布式版本控制系统 远程仓库 新建远程仓库 lssue 与 Pull Request模板文件 知识铺垫 lssue 模板文件 Pull Request模板文件 克隆远程仓库 使用 HTTPS 方式 使用 SSH 方式 第一步:创建SSH Key 向远程仓库推送 过程梳理 实操 …

Java安全——安全提供者

Java安全 安全提供者 在Java中,安全提供者(Security Provider)是一种实现了特定安全服务的软件模块。它提供了一系列的加密、解密、签名、验证和随机数生成等安全功能。安全提供者基础设施在Java中的作用是为开发人员提供一种扩展和替换标准…

vue中使用Drawflow连线插件,并对端口进行命名

效果如图 场景:项目中需要拖拽模块并连线,有输入端和输出端之分,不同模块不同端口才能相连 文档相关 点击前往------->原项目git地址 点击前往------->提供端口既可输出又可输出方案 点击前往----->查阅发现原项目无法对端口命名 public文件夹下创建drawflow文件夹…

myCobot 280 2023机械臂全新功能,手柄控制、自干涉检测

引言 机械臂是一种可编程的、自动化的机械系统,它可以模拟人类的动作,完成各种任务,例如装配、喷涂、包装、搬运、焊接、研磨等。由于其高度灵活性和多功能性,机械臂在现代社会中已经得到了广泛的应用。 myCobot 280 M5Stack 20…

在服务器部署前后端分离的项目(前后都有), 并使用nginx配置跨域

怎样部署自己的项目呢 先准备一个服务器(小系统最便宜的轻量级服务器就行, 如果不需要给人访问的话)安装宝塔面板 (宝塔面板, 可视化界面, 操作简单, 使用非常方便, 上手也很容易, 如果只是学习, 虚拟机也行没必要花钱, 我使用的CentOS7系统,安装宝塔面板)软件: MySQL, Tomcat…

【问题记录】多线程环境下,使用 std::cout 输出内容会显示混乱

环境 Windows 11 家庭中文版Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.5.3 测试代码 #include <iostream> #include <Windows.h>//创建的线程数量 #define THREAD_COUNT 4DWORD WINAPI ThreadProc(LPVOID lpParam) {UNREFERENCED_P…

JS事件监听

目录 事件监听 事件监听案例 事件监听 事件&#xff1a;HTML事件是发生在HTML元素上的“事情” 按钮点击鼠标移动到元素上按下键盘按键事件监听&#xff1a;JS可以在事件被检测到时执行代码事件绑定 方法一&#xff1a;通过HTML标签中的事件属性进行绑定 <input type"…

在windows环境下安装支持CUDA的opencv-python

文章目录 附件&#xff1a;GPU和CUDA的关系 —— 开发人员通过CUDA可以使用GPU的计算能力来加速各种计算任务&#xff0c;并提高计算性能和效率。一、环境配置&#xff08;0&#xff09;我的电脑配置环境&#xff08;1&#xff09;CUDA cuDNN下载与安装&#xff08;2&#xff…