我有以下目录,其中/data
是数据分区的挂载点,并且/var
是符号链接:
lrwxrwxrwx 1 root root 9 Nov 20 13:25 /var -> /data/var
lrwxrwxrwx 1 root root 9 Nov 20 23:41 /var/lock -> /run/lock
drwxr-xr-x 5 root root 4096 Nov 20 13:42 /data
drwxr-xr-x 12 root root 4096 Nov 21 01:44 /data/var
drwxr-xr-x 6 root root 4096 Dec 18 06:25 /data/var/log
drwxr-x--- 3 root adm 4096 Dec 8 06:25 /data/var/log/apache2/
Apache 似乎对这种方法存在问题:
mktemp: failed to create directory via template '/var/lock/apache2.XXXXXXXXXX': No such file or directory
我通过改为直接/etc/apache2/envvars
引用来解决这个问题,但是通过改变来/run/lock
解决这个问题:APACHE_LOG_DIR
envvars
(2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for main error log
(2)No such file or directory: AH02291: Cannot access directory '/var/log/apache2/' for error log of vhost defined at /etc/apache2/sites-enabled/site.conf:2
AH00014: Configuration check failed
我怎样才能让它工作?
答案1
不要对 /var 进行符号链接,因为它的用途远不止 Apache。如果您只想将 apache 日志和站点文件移动到另一个分区/文件夹/磁盘,那么只需更改 apache 中的配置即可。它是一个非常灵活的 Web 服务器,允许您将文件放在任何您想要的地方,但您试图做的是重定向操作系统的核心文件夹,而您应该更新 apache 配置以将内容存储在您希望它们去的地方。
答案2
解决方案是绑定挂载,而不是符号链接,正如推荐的那样这里/var
,并根据第 7 点中给出的符号链接进行推理:
层次结构标准规定它必须是目录
就我而言,从符号链接切换到绑定挂载是通过以下方式完成的:
sudo -s
rm /var && mkdir -p /var && mount -o bind /data/var /var
cat >> /etc/fstab << END
/data/var /var none bind 0 0
END
现在 apache 可以顺利启动了。
答案3
一些基于 Linux 的发行版在运行时启用了 SELinux,并配置为正常使用。您超出了这些参数,因此可能需要调整 SELinux。