Как настроить корневой каталог документов 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

Другие вопросы по тегам