我正在迁移到新的 Web 服务器,我希望为 apache 和我的 Web 应用程序提供一个干净且安全的文件架构。
服务器将服务一个单一的 php/mysql 应用程序。此应用程序从 FTP 和 Web 服务接收文件并生成日志文件。
服务器操作系统为 CentOS 5.4。
默认的 Apache 文档根目录是/var/www/html
.
我应该把我的网络应用程序目录放在:
/var/www/html/myWebApp
?/www/myWebApp
?/home/www/myWebApp
?- 别的地方?
应用程序目录应该归root
用户或apache
用户或其他用户所有?
谢谢你的帮助。
假设您启用了 SELinux,由于 SELinux 拒绝 httpd 进程访问非标准文件夹,因此并非所有这些选项都有效。
IIRC,在 CentOS 上手动添加 Web 应用程序(例如 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 提交后挂钩中的目录。...并确定您是否有 SELinux 问题,请尝试禁用它并重新测试。如果可行,请收集日志并修改 HTTPD 策略(可能只是启用
httpd_disable_trans
)。或者使用Ophidian 的方法:)(这应该是 Ophidian 的评论,但它不适合发表评论的空间,所以我将其发布为回复)
您可以在 selinux 下通过 chcon'ing 使用适当的上下文/类型来使用您想要使用的目录/文件。
要找出正确的上下文,最简单的方法是检查已经正确标记的目录。例如
[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