systemd科普 创建 nginx service

本文介绍如何在CentOS7系统中通过systemd配置NGINX服务,包括创建.service文件、设置不同类型的服务启动方式及操作服务的方法。

systemd:

    CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,即:/usr/lib/systemd/system ,/usr/lib/systemd/user

    每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],就以nginx为例吧,具体内容如下:

创建service:

在/usr/lib/systemd/system下创建nginx.service文件内容如下(看应用需求也可以在  /usr/lib/systemd/usr下创建):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=nginx - high performance web server
Documentation=http: //nginx .org /en/docs/
After=network.target remote-fs.target nss-lookup.target
  
[Service]
Type=forking
PIDFile= /run/nginx .pid
ExecStartPre= /usr/sbin/nginx -t -c  /etc/nginx/nginx .conf
ExecStart= /usr/sbin/nginx -c /etc/nginx/nginx .conf
ExecReload= /bin/kill -s HUP $MAINPID
ExecStop= /bin/kill -s QUIT $MAINPID
PrivateTmp= true
  
[Install]
WantedBy=multi-user.target

[Unit]

Description : 服务的简单描述
Documentation : 服务文档

After= : 依赖,仅当依赖的服务启动之后再启动自定义的服务单元

[Service]

Type : 启动类型simple、forking、oneshot、notify、dbus

Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。
 Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 
Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。 Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

PIDFile : pid文件路径 
ExecStartPre :启动前要做什么,上文中是测试配置文件 -t  
ExecStart:启动 
ExecReload:重载 
ExecStop:停止 

PrivateTmp:True表示给服务分配独立的临时空间

[Install]

WantedBy:服务安装的用户模式,从字面上看,就是想要使用这个服务的有是谁?上文中使用的是:multi-user.target ,就是指想要使用这个服务的目录是多用户。「以上全是个人理解,瞎猜的,如有不当,请大家多多指教每一个.target实际上是链接到我们单位文件的集合,当我们执行:

?
1
$ sudo  systemctl  enable  nginx.service

就会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/nginx.service 文件的链接。

操作Service:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#启动服务
$ sudo  systemctl start nginx.service
 
#查看日志
$ sudo  journalctl -f -u nginx.service
-- Logs begin at 四 2015-06-25 17:32:20 CST. --
6月 25 10:28:24 Leco.lan systemd[1]: Starting nginx - high performance web server...
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: the configuration  file /etc/nginx/nginx .conf syntax is ok
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: configuration  file /etc/nginx/nginx .conf test is successful
6月 25 10:28:24 Leco.lan systemd[1]: Started nginx - high performance web server.
 
#重启
$ sudo  systemctl restart nginx.service
 
#重载
$ sudo  systemctl reload nginx.service
 
#停止
$ sudo  systemctl stop nginx.service



systemd科普

<think>好的,我现在需要回答用户关于如何正确保存并应用对/etc/systemd/system/nginx.service文件的修改的问题。首先,我应该回忆一下systemd服务管理的相关知识。用户可能修改了nginxservice文件,接下来需要保存并让系统识别这些更改。 记得在systemd中,服务文件通常存放在两个目录:/etc/systemd/system/和/usr/lib/systemd/system/。用户修改的是/etc下的文件,这是正确的,因为/etc目录用于管理员覆盖默认配置。不过,修改后需要让systemd重新加载配置。这时候应该使用systemctl daemon-reload命令,这会通知systemd重新读取所有服务文件,应用新的配置。 用户可能的问题步骤是:编辑文件后直接重启服务,但未执行daemon-reload,导致更改未生效。所以关键步骤是保存文件后执行这个命令。然后可以重启nginx服务,或者根据修改内容选择重新启动或重新加载。 还需要考虑权限问题,比如用户是否使用sudo来编辑文件,否则可能无法保存。比如用户可能使用sudo nano来编辑,这样保存时才不会出现权限拒绝的错误。另外,如果服务文件有语法错误,systemd在daemon-reload时会提示错误,需要检查日志。 可能的后续问题是,如何验证更改是否生效?可以通过systemctl status nginx查看服务状态,或者检查服务的详细信息,比如执行路径、环境变量等是否已更新。 总结步骤应该是:1. 使用sudo保存修改后的service文件;2. 执行systemctl daemon-reload;3. 重启或重新加载服务;4. 验证更改。同时需要提醒用户注意配置文件的语法正确性,避免服务启动失败。 还需要参考用户提供的引用内容,特别是引用[4]提到重新加载服务让系统识别,所以必须包括daemon-reload这一步。引用[1]和[2]提到服务文件创建和位置,用户已经在正确的路径下修改,所以重点在保存后的操作。引用[3]关于软链接可能不影响当前问题,但需要确保nginx路径正确。 最后,生成相关问题时要围绕systemd服务管理,比如如何检查配置是否正确,如何回滚更改,或者如何处理服务启动失败的情况。</think>要正确保存并应用对$ /etc/systemd/system/nginx.service $文件的修改,请按以下步骤操作: ### 一、保存文件 1. 使用文本编辑器保存修改(需管理员权限) ```bash sudo nano /etc/systemd/system/nginx.service # 使用nano编辑器 # 或 sudo vi /etc/systemd/system/nginx.service # 使用vim编辑器 ``` 2. 按`Ctrl+O`保存,`Ctrl+X`退出(nano)或`:wq`保存退出(vim) ### 二、应用修改 1. **重新加载systemd配置** ```bash sudo systemctl daemon-reload # 必须执行才能识别新配置[^4] ``` 2. **验证配置文件有效性** ```bash systemd-analyze verify /etc/systemd/system/nginx.service # 检查语法错误 ``` 3. **重启服务** ```bash sudo systemctl restart nginx # 完全重启服务 # 或 sudo systemctl reload nginx # 仅重新加载配置(若支持) ``` ### 三、验证状态 ```bash systemctl status nginx # 查看运行状态 journalctl -u nginx -xe # 查看详细日志 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值