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
每次启动时都会启动。