我正在迁移到一个新的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用户或其他用户拥有?
谢谢你的帮助。
假设您启用了SELinux,由于SELinux拒绝通过httpd进程访问非标准文件夹,因此并非所有这些选项都能正常工作。
IIRC,在CentOS上手动添加Web应用程序的首选方法是安装到/var/www/<myappname>并在/etc/httpd/conf/httpd.conf文件中创build一个别名到你的应用程序(我通常将我的模式设置为类似于/var/www/icons文件夹的现有别名)。
CentOS上/var/www下的任何文件的所有权是root 。
这真的取决于你,我个人会select在/var/www/html/myWebApp使用CentOS的默认DocumentRoot ,因为它为未来的维护者维护一个干净,可扩展和明显的结构。
您可以自己拥有这些应用程序文件,但是它们应该是可读的(但不是应用程序必须覆盖/编辑应用程序所拥有的),并且apache被configuration为运行的用户和组。 这通常是nobody:nobody – 并且该用户应该是非特权的(即只能够读取文档根目录中的文件,没有其他)。
更多信息在这里 。
编辑:对于SVN checkout,你可以保留SVN用户拥有的文件( SVN或root我假定 – 只要它与apache运行的用户不同),权限应该是644 (-rw-r--r--) – 我相信这是SVN默认使用的,如果不是chmod post-commit钩子中的目录。
…并确定您是否有SELinux问题,请尝试禁用它并重新testing。 如果httpd_disable_trans , 收集日志并修改HTTPD策略 (可能只是启用httpd_disable_trans )。 或者使用Ophidian的方法 🙂
(这个应该是对Ophidian的一个评论,但是它不适合留言的空间,所以我把它作为回复发表)
你可以在selinux下使用适当的上下文/types来查找想要使用的目录/文件。
要找出正确的上下文,最简单的方法是检查已经正确标记的目录。 例如
[root @ somehost〜]#ls -ldZ / var / www / html drwxr-xr -x root root system_u:object_r:httpd_sys_content_t / var / www / html
然后在你的新内容目录中设置正确的se linuxtypes。 例如,如果你想用/ home / myapp作为你的doc根目录:chcon -t httpd_sys_content_t / home / myapp
chcon只会持续到下一个文件系统重新标记为止。 如果你这样做,不要忘记使用semanage fcontext,以便新的上下文将通过文件系统的重新映射持续下去!
semanage fcontext -at httpd_sys_content_t / home / myapp