У меня есть VPS с CentOS, и я столкнулся с очень странным поведением веб-сервера Apache.
Я запустил этот сервер с 50 ГБ дискового пространства, и вскоре у меня закончилось место, поэтому я попросил отдел обслуживания, и они добавили еще 50 ГБ в качестве нового жесткого диска. Итак, я создал новый раздел и смонтировал его в /home/media
и я переместил все мультимедийные файлы своего веб-сайта в это место, и в конце я создал SymLink следующим образом:
lrwxrwxrwx. 1 apache apache 12 May 15 14:07 media -> /home/media/
Сегодня у меня снова закончилось место на диске, и на этот раз они добавили новый жесткий диск емкостью 100 ГБ. Я просто хотел сделать то же самое, что и для /home/media/
но на этот раз это называется /data/media
.
lrwxrwxrwx. 1 apache pooya 12 Jun 9 22:43 media -> /data/media/
Теперь, когда я перехожу к файлам в папке мультимедиа в браузере, я получаю Forbidden 403
ошибка.
Я проверил журнал ошибок Apache, и он говорит: Символическая ссылка не разрешена или цель ссылки недоступна: / var / www / html / media.
Все решения этой ошибки в Интернете - это добавить Options Indexes FollowSymLinks
или веб-сервер сталкивается с проблемами доступа к каталогу с привязкой к символу.
у меня есть FollowSymLinks
как в файле конфигурации apache, так и в моем корне .htaccess
файл. Все файлы и папки, а также их родители в /data/media/
изменены на 777 и большинство из них apache:apache
.
Что не так с моим веб-сервером?
У вас почти никогда не должно быть разрешений 777 в вашем веб-дереве.
Вероятно, вам нужно исправить разрешения SELinux, поскольку / data / media не является стандартным местом для хранения веб-файлов. Вы можете быстро проверить это, временно отключив SELinux.
setenforce 0
Запустите несколько тестов, и если теперь веб-файлы доступны, виноват SELinux. Повторно включить Linux
setenforce 1
тогда устраните проблему
semanage fcontext -a -t httpd_sys_content_t "/data/media(/.*)?"
с последующим
restorecon -r -v /data/media
Теперь apache должен иметь доступ к файлам.
Утилита semanage предоставляется в пакете policycoreutils-python, поэтому вы можете установить ее с помощью
yum install policycoreutils-python