如何配置 Apache 文档根目录?

如何配置 Apache 文档根目录?

我正在迁移到新的 Web 服务器,并且希望为 Apache 和我的 Web 应用程序提供一个干净、安全的文件架构。

该服务器将为一个 php/mysql 应用程序提供服务。此应用程序从 FTP 和 web 服务接收文件并生成日志文件。

服务器操作系统是CentOS 5.4。

默认的 Apache 文档根目录是/var/www/html

我应该把我的 Web 应用程序目录放在:

  • /var/www/html/myWebApp
  • /www/myWebApp
  • /home/www/myWebApp
  • 别的地方?

root应用程序目录应该由用户或apache用户或其他用户拥有吗?

感谢您的帮助。

答案1

假设您已启用 SELinux,由于 SELinux 拒绝 httpd 进程访问非标准文件夹,因此并非所有这些选项都能起作用。

IIRC,在 CentOS 上手动添加 Web 应用程序(例如 mediawiki 安装)的首选方法是将它们安装到/var/www/<myappname>/etc/httpd/conf/httpd.conf 文件中并在指向您的应用程序的别名中创建别名(我通常将我的模式设置为类似于文件夹的现有别名/var/www/icons)。

/var/wwwCentOS 下任何文件的典型所有权是root

答案2

这完全取决于你,我个人会选择 CentOS 的默认设置文档根目录因为/var/www/html/myWebApp它为未来的维护者等维护了一个干净、可扩展和明显的结构。

您可以自己拥有应用程序文件,但是它们应该由配置为运行 apache 的用户和组读取(但不拥有 - 除非应用程序必须覆盖/编辑它们)。这通常是nobody:nobody- 并且该用户应该没有特权(即只能读取文档根目录中的文件,仅此而已)。

更多信息请点击此处

编辑:对于 SVN 签出,您可以保留 SVN 用户拥有的文件(SVN或者root我假设 - 只要它与运行 apache 的用户不同)并且权限应该是644 (-rw-r--r--)- 我相信这是 SVN 默认使用的,如果不是在提交后挂钩中 chmod 目录。

...要确定您是否有 SELinux 问题,请尝试禁用它并重新测试。如果有效,收集日志修改 HTTPD 策略(可能只是启用httpd_disable_trans)。或者使用蛇类方法:)

答案3

(这应该是对 Ophidian 的评论,但是评论空间太大,所以我将其作为回复发布)

您可以在 selinux 下通过使用 chcon 来选择要使用的目录/文件以及适当的上下文/类型来完成此操作。

要找出正确的上下文,最简单的方法是检查已经正确标记的目录。例如

[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

相关内容