apache2 服务在 Debian 12 上损坏

apache2 服务在 Debian 12 上损坏

debian 12 上的 apache2 服务似乎不适合我。
它在日志中抱怨有关/var/log/apache2.
该目录中似乎不存在 apache2 子目录/var/log

我的临时修复是sudo mkdir /var/log/apache2重新启动 apache 服务。但是在我重新启动系统后,apache2 子目录不会保留,/var/log因此我需要mkdir再次运行以再次创建 apache2 子目录。

制作这个 /var/log/apache2 目录可以解决我面临的这个问题。我想要一种更永久的方法来解决此问题,而不是在/var/log.

systemctl start apache2 是使用 sudo 权限运行的,但它似乎没有影响任何东西,并抱怨/var/log/apache2不存在并且无法生成日志,因此在创建指定目录之前该服务根本不会运行。

答案1

我想我知道是什么原因造成的。 Stacer 删除了应用程序日志文件,因此在重新启动时,由于缺少目录,服务将无法启动。这就是为什么我最初认为这是重新启动的原因。谢谢您的帮助。

答案2

任何东西都不应该删除您的/var/log/apache2/目录,如果是,您需要执行此操作并找出正在删除它的内容并报告它:

mkdir -p /var/log/apache2
chown root:adm /var/log/apache2
chmod 750 /var/log/apache2
touch /var/log/apache2/.write-protect
chattr +i /var/log/apache2/.write-protect

这将防止目录被递归或强制删除,任何尝试都将导致:rm: cannot remove 'apache2/.write-protect': Operation not permitted因为.write-protect文件已被设置为不可变且无法删除。注意:这不会阻止删除目录中的其他文件,而只会阻止文件.write-protect本身,并随后阻止父目录,因为除非目录为空,否则无法删除目录。我真的无法想象什么可能会删除您的日志目录,但无论它是什么都需要纠正。

我能想到的唯一其他解释是您的/var/log/var/log/apache2目录是从 tmpfs 挂载的(不太可能,因为它似乎不是不可想象的,但它肯定是自定义的)在这种情况下,一切都将永远是短暂的,您将需要修改您的 apache2服务单元以确保创建目录,您可以这样做:

systemctl stop apache2
systemctl disable apache2
cp /usr/lib/systemd/system/apache2.service /etc/systemd/system/my-apache2.service
  • 编辑/etc/systemd/system/my-apache2.service并在下面添加以下行[Service]

ExecStartPre=mkdir /var/log/apache2 && chown -R root:adm /var/log/apache2 && chmod 750 /var/log/apache2

保存内容然后退出,然后键入systemctl daemon-reload 并键入systemctl start my-apache2并检查它是否启动正常,systemctl status my-apache2如果启动,则systemctl enable my-apache2每次启动时都会启动。

相关内容