Nginx服务(5)——配置systemd方式来管理nginx服务

一、前言

1、为什么配置systemd方式

通过前面的学习可以看出,每次启动或者关闭或者重启nginx服务都很麻烦
都要到/usr/local/nginx/sbin/这个目录下执行脚本,才能管理nginx服务
因此接下来我们简单说说如何使用systemctl命令来控制nginx

2、配置思路

注意:系统启动脚本都在/usr/lib/systemd/system目录下,但是自己配置的服务官方不建议放在此目录下,放在/etc/systemd/system目录下

本次实验,我选择安装httpd服务,安装后httpd的启动脚本会在 /usr/lib/systemd/system 目录下,用httpd服务启动脚本做参考配置nginx服务启动脚本

二、实验

步骤一:安装httpd服务,获得一份启动脚本模板

yum install httpd -y

在这里插入图片描述
步骤二:将httpd的启动脚本复制给nginx (一般系统中自定义的启动脚本放在/etc/systemd/system/目录下)

cd /usr/lib/systemd/system  #进入httpd启动脚本存放目录
cp httpd.service /etc/systemd/system/nginx.service  #复制给nginx,指定存放目录为 /etc/systemd/system
cd /etc/systemd/system/  #进入复制的nginx启动脚本存放目录
ls  #查看

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
步骤三:修改/etc/systemd/system/nginx.service脚本内容如下

[Unit]
Description=The Nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

在这里插入图片描述
步骤四:先用原来的方式关闭nginx服务

nginx -s reload  #我之前做过软链接,所以不用写具体路径
netstat -antuple  #查看端口

在这里插入图片描述
步骤五:systemd方式开启nginx

systemctl start nginx

出现如下错误:
Warning: nginx.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
Job for nginx.service failed because a configured resource limit was exceeded. See “systemctl status nginx.service” and “journalctl -xe” for details.
在这里插入图片描述
提示使用systemctl daemon-reload
解决:

systemctl daemon-reload
systemctl start nginx   #开启nginx
netstat -antuple   #查看服务端口是否开启

在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要创建一个 nginx.service 文件来描述如何管理 Nginx 服务。在 Ubuntu 或 Debian 上,该文件应该位于 /lib/systemd/system/nginx.service。在 CentOS 或 Fedora 上,该文件应该位于 /usr/lib/systemd/system/nginx.service。 在这个文件中,你需要定义 Nginx 服务的启动、停止和重启行为。以下是一个示例的配置文件: ``` [Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target ``` 解释一下各个部分的含义: - [Unit]:描述服务的名称和依赖关系。 - [Service]:描述服务的行为和如何启动服务。 - [Install]:描述如何将服务安装到系统中。 在 [Service] 部分,你需要指定如何启动 Nginx 服务。这里使用了 Type=forking,这意味着当 Nginx 服务启动时,它会以守护进程的形式运行,并将主进程 ID 写入指定的 PID 文件。 在 ExecStartPre 中,你可以指定在启动服务之前要执行的命令。在这个例子中,我们使用 `/usr/sbin/nginx -t` 命令来测试 Nginx 配置文件的语法是否正确。 在 ExecStart 中,你需要指定要启动的命令。在这个例子中,我们使用 `/usr/sbin/nginx` 命令来启动 Nginx 服务。 在 ExecReload 中,你需要指定在重新加载配置文件时要执行的命令。在这个例子中,我们使用 `/bin/kill -s HUP $MAINPID` 命令来重新加载 Nginx 配置文件。 在 ExecStop 中,你需要指定在停止服务时要执行的命令。在这个例子中,我们使用 `/bin/kill -s QUIT $MAINPID` 命令来优雅地停止 Nginx 服务。 最后,在 [Install] 部分,你需要指定服务应该安装到哪个目标。在这个例子中,我们使用 multi-user.target,意味着服务应该在多用户模式下启动。 完成配置文件之后,使用以下命令启动服务: ``` sudo systemctl start nginx ``` 使用以下命令停止服务: ``` sudo systemctl stop nginx ``` 使用以下命令重新加载 Nginx 配置文件: ``` sudo systemctl reload nginx ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值