Я собираюсь перейти на новый веб-сервер и хотел бы иметь чистую и безопасную файловую архитектуру для apache и моего веб-приложения.
Сервер будет обслуживать одно приложение php / mysql. Это приложение получает файлы с FTP и веб-служб и создает файлы журналов.
Серверная ОС - CentOS 5.4.
Корневой каталог документа Apache по умолчанию: /var/www/html
.
Следует ли мне поместить каталог своего веб-приложения в:
/var/www/html/myWebApp
?/www/myWebApp
?/home/www/myWebApp
?Каталог приложения должен принадлежать root
пользователь или apache
пользователь или другой пользователь?
Спасибо за вашу помощь.
Предполагая, что у вас включен SELinux, не все эти параметры будут работать из-за того, что SELinux запрещает доступ к нестандартным папкам процессом httpd.
IIRC, предпочтительный метод добавления веб-приложений в CentOS вручную (например, установка mediawiki) - установка их в /var/www/<myappname>
и создайте псевдоним в файле /etc/httpd/conf/httpd.conf, который указывает на ваше приложение (я обычно использую шаблон, чтобы он был похож на существующий псевдоним для /var/www/icons
папка).
Типичное владение файлом для всего ниже /var/www
на CentOS есть root
.
Это действительно ваше дело, я бы лично выбрал CentOS по умолчанию DocumentRoot в /var/www/html/myWebApp
поскольку он поддерживает чистую, расширяемую и очевидную структуру для будущих сопровождающих и т. д.
Вы можете владеть файлами приложения самостоятельно, однако они должны быть доступны для чтения (но не принадлежать - если приложение не должно их перезаписывать / редактировать) пользователю и группе, для которых настроен запуск apache. Обычно это nobody:nobody
- и этот пользователь должен быть непривилегированным (т.е. иметь возможность читать только файлы в корне вашего документа, не более того).
редактировать: Для проверки SVN вы можете оставить файлы, принадлежащие пользователю SVN (SVN
или root
Я предполагаю - до тех пор, пока он отличается от пользователя, apache работает как), а разрешения должны быть 644 (-rw-r--r--)
- Я считаю, что это то, что SVN будет использовать по умолчанию, если не chmod каталог в обработчике post-commit.
... и чтобы определить, есть ли у вас проблема с SELinux, попробуйте отключение этого и повторное тестирование. Если это сработает, собрать журналы и изменить политику HTTPD (возможно, просто включив httpd_disable_trans
). Или используйте Метод офидиана :)
(это должен быть комментарий для Ophidian, но он не умещается в отведенном для комментария месте, поэтому я отправляю его в качестве ответа)
Вы можете сделать это в selinux, указав каталоги / файлы, которые вы хотите использовать, с соответствующими контекстами / типом.
Самый простой способ найти правильный контекст - изучить уже правильно помеченный каталог. Например.
[root @ somehost ~] # ls -ldZ / var / www / html drwxr-xr-x корень root system_u: object_r: httpd_sys_content_t / var / www / html
Затем установите правильный тип se linux в вашем новом каталоге содержимого. Например. если вы хотите использовать / home / myapp в качестве корня документа: chcon -t httpd_sys_content_t / home / myapp
chcon сохраняется только до следующего изменения метки файловой системы. Не забудьте использовать semanage fcontext, если вы это сделаете, чтобы новые контексты сохранялись через перемаркировку файловой системы!
semanage fcontext -at httpd_sys_content_t / home / myapp