Как настроить корневой каталог документов Apache?
Я нахожусь в процессе перехода на новый веб-сервер, и я хотел бы иметь чистую и безопасную файловую архитектуру для Apache и моего веб-приложения.
Сервер будет обслуживать одно приложение php/mysql. Это приложение получает файлы с FTP и веб-сервисов и генерирует файлы журналов.
ОС сервера - CentOS 5.4.
Корнем документа Apache по умолчанию является /var/www/html
,
Должен ли я поместить каталог моего веб-приложения в:
/var/www/html/myWebApp
?/www/myWebApp
?/home/www/myWebApp
?- Где-нибудь еще?
Каталог приложения должен принадлежать root
пользователь или apache
пользователь или другой пользователь?
Спасибо за вашу помощь.
3 ответа
Предполагая, что у вас включен 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:)
(это должен быть комментарий для Ophidian, но он не помещается в пространство, оставленное для комментария, поэтому я публикую его как ответ)
Вы можете сделать это в selinux, указав каталоги / файлы, которые вы хотите использовать, с соответствующими контекстами / типами.
Чтобы выяснить правильный контекст, самый простой способ - изучить уже правильно помеченный dir. Например
[root@somehost ~]# ls -ldZ /var/www/html drwxr-xr-x root 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