.netcore centos配置systemctl自动启动
systemd分两种服务系统和用户服务
1)/usr/lib/systemd/system #系统服务,开机不需要登陆就能运行的程序(相当于开启自启)
2)/usr/lib/systemd/user #用户服务,需要登录后才能运行的程序
[Unit] Description=api services After=network.target [Service] Type=forking ExecStart=/Service/API/RunDotNetServices.sh ExecReload=/Service/API/RunDotNetServices.sh ExecStop=/Service/API/RunDotNetServices.sh PrivateTmp=true [Install] WantedBy=multi-user.target
启动服务
systemctl start file.service
这里的fileservice为文件名
将会调用配置中的脚本
ExecStart:启动脚本
ExecReload:重启脚本
ExecStop:停止脚本
开机自启配置
systemctl enable file.service
安装服务
systemctl enable /etc/systemd/system/TestApi.service
systemctl stop TestApi.service
systemctl start TestApi.service
[Unit] # 主要是服务说明
Description=TestAPI 描述服务
After=network.target # 描述服务类别,表示本服务需要在network服务启动后在启动
Before=xxx.service #表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,不涉
及依赖关系。
[Service] # 核心区域
Type=forking # 表示后台运行模式。
User=user # 设置服务运行的用户
Group=user # 设置服务运行的用户组
KillMode=control-group # 定义systemd如何停止服务
PIDFile=/usr/local/test/test.pid # 存放PID的绝对路径
Restart=no # 定义服务进程退出后,systemd的重启方式,默认是不重启
ExecStart=/usr/local/test/bin/startup.sh # 服务启动命令,命令需要绝对路径
PrivateTmp=true # 表示给服务分配独立的临时空间
[Install]
WantedBy=multi-user.target # 多用户
示例
```
# Unit 文件描述
[Unit]
Description=myTest service
# Service 配置参数
[Service]
Type=simple
GuessMainPID=true
# 自启动项目所在的位置路径
WorkingDirectory=/root/myTestWeb
StandardOutput=journal
StandardError=journal
# 自启动项目的命令,这里用了dotnet启动,所以前面添加了dotnet的路径/usr/bin/
ExecStart=/usr/bin/dotnet myTest.dll --Urls=http://*:端口号
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
```
需要注意.net 7以后可以直接编译为原生程序就不需要添加Type=forking
[.net部署linux服务](https://www.cnblogs.com/ives/p/16304688.html)
联系我:renhanlinbsl@163.com