百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

centos 添加systemctl服务(centos怎么添加用户)

nanshan 2024-10-28 16:35 28 浏览 0 评论

systemctl 简介

systemctl 是管制服务的主要工具, 它整合了chkconfig 与 service功能于一体

systemd核心概念unit(单元)类型:unit表示不同类型的systemd对象,通过配置文件进行标识和配置;
文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息

配置文件说明:

unit类型

[Unit] 区块:启动顺序与依赖关系
service :文件扩展名为.service, 用于定义系统服务

target :文件扩展名为.target,用于模拟实现运行级别

device :用于定义内核识别的设备

mount:定义文件系统挂载点

socket:用于标识进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现按需启动

snapshot :管理系统快照

swap:用于标识swap设备

automount :文件系统的自动挂载点

path:用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务

查看类型
列出系统服务,-t后用tab键可以关联出所有支持的unit类型

systemctl -t service

[Unit] 区块:启动顺序与依赖关系

Description字段:给出当前服务的简单描述。

Documentation字段:给出文档位置。

After字段:如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之后启动。

Before字段:定义sshd.service应该在哪些服务之前启动。

注:After和Before字段只涉及启动顺序,不涉及依赖关系。


举例来说,某 Web 应用需要 postgresql 数据库储存数据。在配置文件中,它只定义要在 postgresql 之后启动,而没有定义依赖 postgresql 。上线后,由于某种原因,postgresql 需要重新启动,在停止服务期间,该 Web 应用就会无法建立数据库连接。

设置依赖关系,需要使用Wants字段和Requires字段。

Wants字段:表示sshd.service与sshd-keygen.service之间存在"弱依赖"关系,即如果"sshd-keygen.service"启动失败或停止运行,不影响sshd.service继续执行。

Requires字段则表示"强依赖"关系,即如果该服务启动失败或异常退出,那么sshd.service也必须退出。

注意,Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。


[Service] 区块:启动行为

启动命令

ExecStart字段:定义启动进程时执行的命令

ExecReload字段:重启服务时执行的命令

ExecStop字段:停止服务时执行的命令

ExecStartPre字段:启动服务之前执行的命令

ExecStartPost字段:启动服务之后执行的命令

ExecStopPost字段:停止服务之后执行的命令


注:所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。比如EnvironmentFile=-/etc/sysconfig/sshd(注意等号后面的那个连词号),就表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。

注意:[Service]中的启动、重启、停止命令全部要求使用绝对路径!


  • 启动类型

Type字段定义启动类型。它可以设置的值如下:

simple(默认值):ExecStart字段启动的进程为主进程

forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行)

oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务

dbus:类似于simple,但会等待 D-Bus 信号后启动

notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务

idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合


  • 重启行为

Service区块有一些字段,定义了重启行为:

KillMode字段:定义 Systemd 如何停止 sshd 服务:

control-group(默认值):当前控制组里面的所有子进程,都会被杀掉

process:只杀主进程

mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号

none:没有进程会被杀掉,只是执行服务的 stop 命令。

Restart字段:定义了 sshd 退出后,Systemd 的重启方式

上面的例子中,Restart设为on-failure,表示任何意外的失败,就将重启sshd。如果 sshd 正常停止(比如执行systemctl stop命令),它就不会重启。

Restart字段可以设置的值如下。

no(默认值):退出后不会重启

on-success:只有正常退出时(退出状态码为0),才会重启

on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启

on-abnormal:只有被信号终止和超时,才会重启

on-abort:只有在收到没有捕捉到的信号终止时,才会重启

on-watchdog:超时退出,才会重启

always:不管是什么退出原因,总是重启

注:对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal。

RestartSec字段:表示 Systemd 重启服务之前,需要等待的秒数。

上面的例子设为等待42秒。

[Install] 区块

Install区块,定义如何安装这个配置文件,即怎样做到开机启动。

WantedBy字段:表示该服务所在的 Target。

Target的含义是服务组,表示一组服务。

WantedBy=multi-user.target指的是:sshd 所在的 Target 是multi-user.target。

这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。

Systemd 有默认的启动 Target。

systemctl get-default

#输出multi-user.target


上面的结果表示,默认的启动 Target 是multi-user.target。在这个组里的所有服务,都将开机启动。这就是为什么systemctl enable命令能设置开机启动的原因。

使用 Target 的时候,systemctl list-dependencies命令和systemctl isolate命令也很有用。


#查看 multi-user.target 包含的所有服务

systemctl list-dependencies multi-user.target

 

#切换到另一个 target

#shutdown.target 就是关机状态

systemctl isolate shutdown.target



一般来说,常用的 Target 有两个:

multi-user.target:表示多用户命令行状态;

graphical.target:表示图形用户状态,它依赖于multi-user.target。

添加systemctl服务

systemctl服务储存地址 /usr/lib/systemd/system/

[Unit]服务的说明
Description=描述服务
After=描述服务类别

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

这里以新建nginx服务为案例

执行以下命令新建nginx服务

vim /usr/lib/systemd/system/nginx.service


并录入一下内容

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
ExecStart=/server/nginx/sbin/nginx
ExecReload=/server/nginx/sbin/nginx -s reload
ExecStop=/server/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

redis添加到systemctl

[Unit]
Description=redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target


要服务生效,我们需要重新加载服务

systemctl daemon-reload

现在我们可以使用systemctl命令来对nginx进行操作了

systemctl start nginx  //启动
systemctl stop nginx  //停止
systemctl reload nginx  //重启 可以不用停止nginx服务,使修改的配置生效
systemctl restart nginx  //重启
systemctl enable nginx  //设置开机启动
systemctl disable nginx  //禁用开机启动
systemctl status nginx  //查看服务状态


获取所有正在运行的服务

systemctl list-units --type=service

php-fpm添加 https://www.jianshu.com/p/6566515284e4
参考资料:https://www.jianshu.com/p/79059b06a121



相关推荐

Let’s Encrypt免费搭建HTTPS网站

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...

使用Nginx配置TCP负载均衡(nginx tcp负载)

假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...

Nginx负载均衡及支持HTTPS与申请免费SSL证书

背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...

HTTPS配置实战(https配置文件)

原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...

只有IP地址没有域名实现HTTPS访问方法

一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...

超详解:HTTPS及配置Django+HTTPS开发环境

众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...

Godaddy购买SSL之后Nginx配置流程以及各种错误的解决

完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...

Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)

一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...

阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问

参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...

你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具

NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...

从零开始搭建HTTPS服务(搭建https网站)

搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...

群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问

安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...

让网站快速升级HTTPS协议提高安全性

为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...

用Https方式访问Harbor-1.9版本(https访问流程)

我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...

如何启用 HTTPS 并配置免费的 SSL 证书

在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...

取消回复欢迎 发表评论: