翼度科技»论坛 编程开发 PHP 查看内容

使用systemd设置PHP程序为服务的配置步骤

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
背景

假设我们有一个基于 PHP 的 Web 应用或脚本,需要在后台运行并且能够自动重启。通过配置
  1. systemd
复制代码
,我们可以轻松实现以下目标:

  • 启动时自动加载 PHP 应用。
  • 在应用崩溃时自动重启。
  • 设置日志记录路径,以便查看服务运行状态。
  • 为服务指定特定的运行用户与组权限。
接下来,我们将一步步演示如何为一个 PHP 程序创建
  1. systemd
复制代码
服务。

步骤 1: 创建服务单元文件

服务单元文件是
  1. systemd
复制代码
管理服务的核心。首先,我们需要在
  1. /etc/systemd/system/
复制代码
目录下为 PHP 程序创建一个新的
  1. .service
复制代码
文件。
  1. sudo nano /etc/systemd/system/myapp.service
复制代码
该文件的命名通常采用
  1. <服务名>.service
复制代码
的格式,比如这里使用
  1. myapp.service
复制代码


步骤 2: 编写服务单元文件

在创建的文件中,填写如下内容来定义服务的行为:
  1. [Unit]
  2. Description=My PHP Application
  3. After=network.target

  4. [Service]
  5. ExecStart=/usr/bin/php /var/www/html/myapp/index.php
  6. Restart=always
  7. User=www-data
  8. Group=www-data
  9. Environment=APP_ENV=production
  10. WorkingDirectory=/var/www/html/myapp
  11. StandardOutput=append:/var/log/myapp/output.log
  12. StandardError=append:/var/log/myapp/error.log

  13. [Install]
  14. WantedBy=multi-user.target
复制代码
关键配置说明:


  • [Unit] 部分:

      1. Description
      复制代码
      :对服务的简短描述,方便管理员了解服务用途。
      1. After=network.target
      复制代码
      :指定服务在网络服务启动后才运行,适合需要网络的应用。

  • [Service] 部分:

      1. ExecStart
      复制代码
      :定义服务启动时执行的命令。在此,我们指定了使用 PHP CLI 来运行
      1. /var/www/html/myapp/index.php
      复制代码
      文件。
      1. Restart=always
      复制代码
      :确保服务崩溃时自动重启,以保证持续运行。
      1. User
      复制代码
      1. Group
      复制代码
      :指定运行该服务的用户和组。这里使用了
      1. www-data
      复制代码
      ,它是大多数 Web 服务器(如 Apache 和 Nginx)使用的默认用户。
      1. Environment=APP_ENV=production
      复制代码
      :设置环境变量,比如指定应用程序的运行环境为
      1. production
      复制代码

      1. WorkingDirectory
      复制代码
      :指定 PHP 程序的工作目录,这有助于确保程序正确地找到相关文件。
      1. StandardOutput
      复制代码
      1. StandardError
      复制代码
      :指定标准输出和错误日志的存储路径。我们将日志输出到
      1. /var/log/myapp/
      复制代码
      目录下,分别记录标准输出和错误信息。

  • [Install] 部分:

      1. WantedBy=multi-user.target
      复制代码
      :表示该服务适用于多用户模式。


步骤 3: 创建日志目录

确保日志目录存在且具有适当的权限。你可以通过以下命令创建日志目录并设置权限:
  1. sudo mkdir -p /var/log/myapp
  2. sudo chown www-data:www-data /var/log/myapp
复制代码
这将创建
  1. /var/log/myapp/
复制代码
目录并将其所有权授予
  1. www-data
复制代码
用户和组。

步骤 4: 重新加载 systemd 并启动服务

配置完服务单元文件后,需要重新加载
  1. systemd
复制代码
配置,并启动服务:
  1. sudo systemctl daemon-reload
  2. sudo systemctl start myapp.service
复制代码
如果你希望服务在系统启动时自动运行,可以启用它:
  1. sudo systemctl enable myapp.service
复制代码
步骤 5: 检查服务状态

为了确认服务是否已正确启动,可以使用以下命令查看服务的状态:
  1. systemctl status myapp.service
复制代码
你将看到关于服务是否正常运行、最后一次启动的时间以及输出日志等信息。

步骤 6: 查看服务日志

根据前面定义的日志配置,PHP 程序的输出和错误信息会记录到 /var/log/myapp/output.log 和 /var/log/myapp/error.log 中。可以通过以下命令查看日志内容:
  1. cat /var/log/myapp/output.log
  2. cat /var/log/myapp/error.log
复制代码
另外,你也可以使用
  1. journalctl
复制代码
命令来查看
  1. systemd
复制代码
日志:
  1. journalctl -u myapp.service
复制代码
总结

通过上述步骤,我们成功地将一个 PHP 程序配置为
  1. systemd
复制代码
服务,使其能够自动启动、崩溃时自动重启,并记录日志文件。通过这种方式,管理员可以轻松管理后台运行的 PHP 应用程序,确保其稳定性和可维护性。

关键命令汇总


  • 启动服务
    1. sudo systemctl start myapp.service
    复制代码
  • 停止服务
    1. sudo systemctl stop myapp.service
    复制代码
  • 重启服务
    1. sudo systemctl restart myapp.service
    复制代码
  • 启用开机自启
    1. sudo systemctl enable myapp.service
    复制代码
  • 禁用开机自启
    1. sudo systemctl disable myapp.service
    复制代码
  • 查看服务状态
    1. systemctl status myapp.service
    复制代码
  • 重新加载服务单元文件
    1. sudo systemctl daemon-reload
    复制代码
通过合理配置和使用
  1. systemd
复制代码
,你可以极大提升 PHP 应用的管理效率和稳定性。
以上就是使用systemd设置PHP程序为服务的配置步骤的详细内容,更多关于systemd设置PHP为服务的资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/program/3284565dm.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具