生活的道路一旦选定,就要勇敢地走到底,决不回头。

发掘积累过程的快感

首页 » BIBLE模型 » 运维 » Nginx 以服务方式启动要怎么配置?

Nginx 以服务方式启动要怎么配置?


要将 Nginx 配置为服务,你需要创建一个 systemd 服务单元文件。以下是一个基本的示例:

vi /etc/systemd/system/nginx.service

然后将如下配置粘贴到该文件中:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/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
Restart=always  # 或者 on-failure, on-abnormal, etc. 根据需要设置重启策略
RestartSec=3  # 重启间隔,单位秒,仅当设置了Restart时有效
WantedBy=multi-user.target

# 添加以下两行以将标准输出和标准错误输出重定向到日志文件
StandardOutput=file:/var/log/myapp/output.log
StandardError=file:/var/log/myapp/error.log

保存并关闭文件。然后,你可以启动 Nginx 服务并设置为在启动时启动:

systemctl start nginx
systemctl enable nginx

这样,Nginx 就会以服务方式启动了。如果你需要查看 Nginx 服务的状态,你可以使用 systemctl status nginx 命令。

配置文件含义说明

[Unit] 部分包含了服务的描述和它在启动过程中的位置。Description 是服务的简短描述。After 定义了此服务应在哪些其他服务之后启动。
[Service] 部分定义了服务的启动方式。Type=forking 表示这个服务会派生出子进程。PIDFile 是主进程的 PID 文件路径。ExecStartPre 是在服务启动前执行的命令,这里是检查 Nginx 配置的有效性。ExecStart 是启动服务的命令。ExecReloadExecStop 分别是重新加载和停止服务的命令。PrivateTmp=true 表示服务有自己的临时目录。
[Install] 部分定义了服务的安装目标。WantedBy=multi-user.target 表示这个服务应该在多用户模式下启动。

如果需要配置日志文件自动分割,可以按照下面的说明进行操作。

为了按文件大小自动分割日志文件,可以使用 logrotate 工具。首先,确保系统已安装 logrotate:

sudo apt-get install logrotate -y  # 对于基于Debian的系统
sudo yum install logrotate -y     # 对于基于RHEL的系统

然后,在/etc/logrotate.d/目录下创建一个名为 my_program 的配置文件:

sudo nano /etc/logrotate.d/my_program

输入以下内容:

/var/log/my_program.log {
    daily          # 每天执行一次日志切割
    rotate 7       # 保留最近7个归档文件
    size=10M       # 当文件大小达到10MB时进行切割
    compress       # 压缩归档文件以节省磁盘空间
    delaycompress  # 延迟压缩当前日志,以便在切割后立即可用
    missingok      # 如果日志文件不存在,不报错
    notifempty     # 如果日志文件为空,不进行切割
    create 640 <your_user> adm  # 创建新日志文件,权限和属主(根据实际情况调整)
}

保存并关闭文件。这样,logrotate 就会每天检查/var/log/my_program.log 文件,当其大小达到 10MB 时进行切割,并保留最近 7 个归档文件。

启用并启动服务

更新 Systemd 配置并启动服务:

sudo systemctl daemon-reload
sudo systemctl enable my_program.service
sudo systemctl start my_program.service

现在,您的程序作为 Systemd 服务运行,并且其标准输出被保存到/var/log/my_program.log 文件中。logrotate 会根据配置自动进行日志文件的分割和管理。您可以使用 journalctl 命令查看服务的日志:

sudo journalctl -u my_program.service

或者直接查看日志文件:

cat /var/log/my_program.log
互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件 1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2024. All rights reserved. 本站由 Helay 纯手工打造. 蜀ICP备15017444号