У меня есть следующие каталоги, где /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
Как я могу заставить это работать?
Не используйте символическую ссылку / var, поскольку он используется не только для Apache. если вы хотите просто переместить журналы apache и файлы сайта в другой раздел / папку / диск, просто измените конфигурацию в apache для этого. Это очень гибкий веб-сервер, который позволяет размещать файлы где угодно, но то, что вы пытаетесь сделать, - это перенаправить основную папку ОС, когда вам нужно обновлять конфигурации apache для хранения вещей, где вы хотите, чтобы они находились .
Решение - привязать монтирование, а не символическую ссылку, как рекомендуется Вот, аргументируя это тем, что символическая ссылка на /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 запускается без жалоб.
Некоторые дистрибутивы на основе Linux работают с включенным SELinux и настроены для нормального использования. Вы находитесь за пределами этих параметров, поэтому вам может потребоваться настроить SELinux.