当前位置: 首页 > news >正文

使用 systemd 设置 PHP 程序为服务

使用 systemd 设置 PHP 程序为服务

在现代 Linux 系统中,systemd 是用于管理和控制服务的标准工具。通过 systemd,我们可以轻松地将 PHP 程序配置为后台运行的系统服务,从而实现自动化启动、重启和日志记录等功能。本文将介绍如何为 PHP 程序设置 systemd 服务单元,并涵盖相关配置步骤。

背景

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

  • 启动时自动加载 PHP 应用。
  • 在应用崩溃时自动重启。
  • 设置日志记录路径,以便查看服务运行状态。
  • 为服务指定特定的运行用户与组权限。

接下来,我们将一步步演示如何为一个 PHP 程序创建 systemd 服务。

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

服务单元文件是 systemd 管理服务的核心。首先,我们需要在 /etc/systemd/system/ 目录下为 PHP 程序创建一个新的 .service 文件。

sudo nano /etc/systemd/system/myapp.service

该文件的命名通常采用 <服务名>.service 的格式,比如这里使用 myapp.service

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

在创建的文件中,填写如下内容来定义服务的行为:

[Unit]
Description=My PHP Application
After=network.target[Service]
ExecStart=/usr/bin/php /var/www/html/myapp/index.php
Restart=always
User=www-data
Group=www-data
Environment=APP_ENV=production
WorkingDirectory=/var/www/html/myapp
StandardOutput=append:/var/log/myapp/output.log
StandardError=append:/var/log/myapp/error.log[Install]
WantedBy=multi-user.target
关键配置说明:
  • [Unit] 部分:

    • Description:对服务的简短描述,方便管理员了解服务用途。
    • After=network.target:指定服务在网络服务启动后才运行,适合需要网络的应用。
  • [Service] 部分:

    • ExecStart:定义服务启动时执行的命令。在此,我们指定了使用 PHP CLI 来运行 /var/www/html/myapp/index.php 文件。
    • Restart=always:确保服务崩溃时自动重启,以保证持续运行。
    • UserGroup:指定运行该服务的用户和组。这里使用了 www-data,它是大多数 Web 服务器(如 Apache 和 Nginx)使用的默认用户。
    • Environment=APP_ENV=production:设置环境变量,比如指定应用程序的运行环境为 production
    • WorkingDirectory:指定 PHP 程序的工作目录,这有助于确保程序正确地找到相关文件。
    • StandardOutputStandardError:指定标准输出和错误日志的存储路径。我们将日志输出到 /var/log/myapp/ 目录下,分别记录标准输出和错误信息。
  • [Install] 部分:

    • WantedBy=multi-user.target:表示该服务适用于多用户模式。

步骤 3: 创建日志目录

确保日志目录存在且具有适当的权限。你可以通过以下命令创建日志目录并设置权限:

sudo mkdir -p /var/log/myapp
sudo chown www-data:www-data /var/log/myapp

这将创建 /var/log/myapp/ 目录并将其所有权授予 www-data 用户和组。

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

配置完服务单元文件后,需要重新加载 systemd 配置,并启动服务:

sudo systemctl daemon-reload
sudo systemctl start myapp.service

如果你希望服务在系统启动时自动运行,可以启用它:

sudo systemctl enable myapp.service

步骤 5: 检查服务状态

为了确认服务是否已正确启动,可以使用以下命令查看服务的状态:

systemctl status myapp.service

你将看到关于服务是否正常运行、最后一次启动的时间以及输出日志等信息。

步骤 6: 查看服务日志

根据前面定义的日志配置,PHP 程序的输出和错误信息会记录到 /var/log/myapp/output.log/var/log/myapp/error.log 中。可以通过以下命令查看日志内容:

cat /var/log/myapp/output.log
cat /var/log/myapp/error.log

另外,你也可以使用 journalctl 命令来查看 systemd 日志:

journalctl -u myapp.service

总结

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

关键命令汇总

  • 启动服务sudo systemctl start myapp.service
  • 停止服务sudo systemctl stop myapp.service
  • 重启服务sudo systemctl restart myapp.service
  • 启用开机自启sudo systemctl enable myapp.service
  • 禁用开机自启sudo systemctl disable myapp.service
  • 查看服务状态systemctl status myapp.service
  • 重新加载服务单元文件sudo systemctl daemon-reload

通过合理配置和使用 systemd,你可以极大提升 PHP 应用的管理效率和稳定性。

相关文章:

使用 systemd 设置 PHP 程序为服务

使用 systemd 设置 PHP 程序为服务 在现代 Linux 系统中&#xff0c;systemd 是用于管理和控制服务的标准工具。通过 systemd&#xff0c;我们可以轻松地将 PHP 程序配置为后台运行的系统服务&#xff0c;从而实现自动化启动、重启和日志记录等功能。本文将介绍如何为 PHP 程序…...

HRNET模型实现钢板表面缺陷检测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…...

28 基于51单片机的两路电压检测(ADC0808)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;通过ADC0808获取两路电压&#xff0c;通过LCD1602显示 二、硬件资源 基于KEIL5编写C代码&#xff0c;PROTEUS8.15进行仿真&#xff0c;全部资源在页尾&#xff0c;提供…...

SpringBootTest Mockito 虚实结合编写测试

SpringBootTest & Mockito 虚实结合测试 起因 单一使用mockito&#xff0c;会出现很多mock困难的问题&#xff0c;导致测试编写过程太长&#xff0c;太恶心 单一使用springboottest&#xff0c;会遇到需要外部接口的地方&#xff0c;这个时候就非得去真实调用才行。也很恶…...

国内外网络安全政策动态(2024年9月)

国内网络安全政策动态 ▶︎ 1.三项智能网联汽车强制性国家标准正式发布 9月4日&#xff0c;工业和信息化部组织制定的GB 44495—2024《汽车整车信息安全技术要求》、GB 44496—2024《汽车软件升级通用技术要求》和GB 44497—2024《智能网联汽车 自动驾驶数据记录系统》三项强制…...

使用Android studio进行Unit Test中遇到的问题记录

1、模块本身代码运行不起来 提示&#xff1a; Cannot resolve method ‘getVolumes’ in ‘StorageManager’ Cannot resolve method ‘registerListener’ in ‘StorageManager’ Cannot resolve method ‘unregisterListener’ in ‘StorageManager’ 查看Android 源码&…...

智能运维与问题诊断工具:提升生产环境的安全稳定性

引言 在当今复杂的IT环境中,确保生产系统的安全稳定运行是一项巨大挑战。随着技术的进步,智能运维和问题诊断工具应运而生,为IT团队提供了强大的支持。本文将介绍一系列先进的工具,这些工具利用人工智能、机器学习和自动化技术,帮助组织提高系统可靠性、加速问题解决、优…...

【MAUI】CommunityToolkit社区工具包介绍

一、为什么需要声明式开发 .NET的MVVM,始于WPF,很古典,它甚至可能是现代前端框架“声明式开发”的鼻祖。声明式开发,之所以出现,是因为命令式开发在UI层和代码层上无法解耦的问题。如下图所示: 1、命令式开发:后台代码需要调用UI层的控件(label.Text),如果更新UI层…...

【答疑解惑】图文深入详解undo和redo的区别及其底层逻辑

题记&#xff1a;最近有些人问我&#xff0c;undo和redo到底是什么关系&#xff0c;他们中不乏已经入行3-4年的同学&#xff0c;今天咱们就来深入探讨下到底什么是undo和redo&#xff0c;他们分别做什么&#xff0c;底层逻辑原理是什么等等。 1. undo 1.1 undo的存储结构 Un…...

低通滤波、反相放大器电路

1 简介 这种可调低通滤波、反相放大器电路可将信号电平放大 26dB 或 20V/V。R2 和 C1 会为此电路设置截止频率。此电路的频率响应与无源 RC 滤波器的相同&#xff0c;除非输出按放大器的通带增益进行放大。低通滤波器通常用于音频信号链&#xff0c;此滤波器有时也称为低音增强…...

SpringBoot助力服装生产流程优化

1 绪论 1.1 研究背景 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理&#xff0c;这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制&#xff0c;不仅提高了工作效率&#xff0c;而且大大的提高…...

【机器学习】线性回归算法简介 及 数学实现方法

线性回归 简介 利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 数学公式&#xff1a; ℎ_(w) w_1x_1 w_2x_2 w_3x_3 … b w^Txb 概念 ​ 利用回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关…...

设计模式的学习

OO:Object-Oriented 面向对象 --- 《Head First设计模式》 这本书是用java写的&#xff0c;我是写C的&#xff0c;用C来写相关的代码 --- p2&#xff08;第二页&#xff09; #ifndef DUCK_H #define DUCK_H/*** brief The Duck class 鸭子类*/ class Duck { public:D…...

wordpress发邮件SMTP服务器配置步骤指南?

wordpress发邮件功能如何优化&#xff1f;怎么用wordpress发信&#xff1f; 由于WordPress默认的邮件发送功能可能不够稳定&#xff0c;配置SMTP服务器成为了许多网站管理员的选择。AokSend将详细介绍如何在WordPress中配置SMTP服务器&#xff0c;以确保邮件能够顺利发送。 w…...

胤娲科技:机械臂「叛逃」记——自由游走,再悄然合体

夜深人静&#xff0c;你正沉浸在梦乡的前奏&#xff0c;突然意识到房间的灯还亮着。此刻的你&#xff0c;是否幻想过有一只无形的手&#xff0c;轻盈地飘过&#xff0c;帮你熄灭那盏碍眼的灯&#xff1f; 又或者&#xff0c;你正窝在沙发上&#xff0c;享受电视剧的紧张刺激&am…...

分布式事务讲解 - 2PC、3PC、TCC

分布式事务讲解 - 2PC、3PC、TCC 前置知识 BASE理论&#xff1a; BASE是Basically Availbale(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)三个词语的缩写。BASE理论是对CAP理论中AP的一个扩展&#xff0c;通过牺牲强一致性来获得可用性&#xff0c;当…...

前端基础面试题·第四篇——Vue(其二)

1.Vue中路由传参 1.params传参 params 传参是通过URL路径来传递参数&#xff0c;这种方式传递的参数是必选的。这种传参方式需要在路由配置时在路由路径位置提前指定参数。 路由配置 const router new VueRouter({routes: [{path: /user/:id, // 这里的:id就是参数name: u…...

PHP反射

文章目录 介绍基本用法基本的反射示例1. 反射类2. 反射方法3. 反射属性4.反射全局函数5.反射函数的参数 优势和注意事项优势&#xff1a;注意事项&#xff1a; 介绍 PHP反射是一种强大的机制&#xff0c;允许在运行时检查类、接口、方法、属性等的结构和元数据。它可以用于许多…...

Gated Transformer Networks for Multivariate Time Series Classification

博客贡献人 徐宁 作者 Minghao Liu , Shengqi Ren , Siyuan Ma , Jiahui Jiao , Yizhou Chen , Zhiguang Wang(Facebook AI) and Wei Song∗ 标签 多元时间序列分类&#xff0c;Transformer&#xff0c;门控 摘要 用于时间序列分类的深度学习模型&#xff08;主要是卷积网…...

这一次,AI真的能帮你实现职场跃迁

你有没有想过&#xff1a; AI不仅能帮你实现工作提效 还能帮你实现职场跃迁&#xff01; 根据行业报告&#xff0c;近年来**AIGC&#xff08;AI Generated Content&#xff09;**领域岗位数量井喷式增长&#xff0c;AI大模型产品经理作为连接技术与市场的桥梁&#xff0c;正扮…...

Python绘制--绘制心形曲线

今天&#xff0c;我们将通过Python代码来绘制一个心形曲线&#xff0c;这是一个经典的数学表达。 一、心形曲线的数学原理 心形曲线&#xff0c;也被称为心脏曲线&#xff0c;是一个代数曲线&#xff0c;可以通过参数方程定义。其数学表达式如下&#xff1a; x16sin⁡3(t)x16…...

初识Linux · 自主Shell编写

目录 前言&#xff1a; 1 命令行解释器部分 2 获取用户命令行参数 3 命令行参数进行分割 4 执行命令 5 判断命令是否为内建命令 前言&#xff1a; 本文介绍是自主Shell编写&#xff0c;对于shell&#xff0c;即外壳解释程序&#xff0c;我们目前接触到的命令行解释器&am…...

海报设计模板免费的好用吗?活动海报排版技巧轻松get

虽然今年所有的法定节假日已经过完了&#xff0c;但对于电商打工族来说&#xff0c;需要制作活动海报的节日&#xff0c;还有很多吧...... 刚听到小道消息&#xff0c;说是今年的双十一&#xff0c;从十月十四号就开始预热了&#xff01; 怎么样&#xff0c;大家的预热活动海…...

【Linux基础】03 Linux环境基础开发工具使用

1. yum ——软件包管理器 yum 是我们 Linux 预装的一个指令&#xff0c;搜索、下载、、安装对应的软件 yum 相当于 Linux 的应用商店&#xff01; 安装与卸载 yum list | grep command 通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我…...

【CSS】flex: 1; 的意思

在 Flexbox 布局中&#xff0c;flex: 1; 是一个简写属性&#xff0c;它表示弹性容器中的子元素如何分配可用空间。flex: 1 意味着该元素可以根据剩余的空间进行扩展&#xff0c;占据相应的比例。具体来说&#xff0c;flex: 1; 是 flex-grow、flex-shrink 和 flex-basis 这三个属…...

C++ 3D冒险游戏开发案例

3D冒险游戏的C开发案例&#xff0c;包括游戏设计、实现细节、图形渲染、音效处理等内容。 3D冒险游戏开发案例 一、游戏设计 游戏概述 游戏名称&#xff1a;“探索者的传奇”类型&#xff1a;3D冒险游戏目标&#xff1a;玩家控制角色在一个开放的世界中探索、解谜、战斗并完成…...

【AIGC】Exa AI 要做 AI 领域的 Google

又一个AI搜索引擎诞生&#xff1a;Exa AI。 与其他旨在取代谷歌的AI驱动搜索引擎不同&#xff0c;Exa的目标是创建一个专门为AI设计的搜索工具。 Exa的使命: 互联网包含人类的集体知识&#xff0c;但目前的搜索体验更像在垃圾场中导航&#xff0c;而非在知识图书馆中漫游。核…...

YOLOv8 基于MGD的知识蒸馏

YOLOv8 基于MGD的知识蒸馏 接着上一篇我们介绍了YOLOv8的剪枝方案和代码&#xff0c;本篇文章将剪枝后的模型作为学生模型&#xff0c;剪枝前的模型作为教师模型对剪枝模型进行蒸馏&#xff0c;从而进一步提到轻量模型的性能。 Channel-wise Distillation (CWD) 问题和方法 …...

全国消防知识竞赛活动方案哪家强

关键词&#xff1a;消防安全、预防火灾、消防意识、消防员、防火安全 适合行业&#xff1a;所有行业 推荐功能&#xff1a;答题、投票、H5 宣传角度 1.从日常生活场景出发&#xff0c;指导大家如何检查家庭中的火灾隐患。例如检查电线是否老化、插座是否过载、是否在楼梯间…...

JavaEE学习一条龙服务————概述

鉴于之前的笔记较乱&#xff0c;没有逻辑关系&#xff0c;&#xff0c;博主决定从JacaEE整个学习的阶段出发&#xff0c;整理一系列博客&#xff0c;供大家学习交流&#xff0c;提升自己。 此文章已绑定一篇我为大家梳理的JavaEE一条龙学习知识点的文档&#xff0c;大家可下载…...