知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Warning:DocumentRoot 错误解决办法

发布时间:2014-09-05 17:25:57作者:知识屋

  安装时考虑到安全,准备将DocumentRoot单独放置在一个分区里,所以在逻辑分区专门为它建了一个目录为:/Dmnr

  为了挂载该分区设/etc/fstab为:

  代码:...

  LABEL=/Dmnr /Dmnr ext3 defaults 1 2

  目录建好后将网站内容拷入该目录下的www/html,并修改/etc/httpd/conf/httpd.conf如下:

  [php]

  ...

  DocumentRoot "/Dmnr/www/html"

  ...

  

  ...

  [/php]

  重起Apache出现如下错误提示:

  代码:#service httpd restart

  Starting httpd: Warning: DocumentRoot [/Dmnr/www/html] does not exist

  [ OK ]

  当然服务器不会正常工作,Apache认为这个不是目录!但是将DocumentRoot ""对准其它目录则没有问题,服务器可以正常工作。

  解决:

  一. SELinux 的配置( 略... ),可以参考:

  http://www.chinalinuxpub.com/read.php?wid=1010

  http://blog.josesun.org/archives/2004_08/2

  二. 修改 html 目录权限:

  1. 检查网站内容目录

  [php]

  #ls -Z /Dmnr/www/html

  [/php]

  状态为:

  [php]

  -rwxr-xr-x someuser somegroup index.php

  ...

  [/php]

  2. 显然没有 SELinux 权限,所以做如下修改:

  [php]

  chcon -R -t httpd_user_content_t /Dmnr/www/html

  [/php]

  再看就是这样:

  [php]

  -rwxr-xr-x someuser somegroup user_u:object_r:httpd_sys_content_t index.php

  ...

  [/php]

  重启 httpd 一般的 php 就可以工作了。

  三. 数据库

  1. Mysql

  但是当读写数据库时还会被 SELinux 拒绝,到 /var/lib/mysql 或 /var/lib/pgsql 下看没有问题,权限是这样的:

  [php]

  -rw-rw---- mysql mysql root:object_r:mysqld_db_t ibdata1

  -rw-rw---- mysql mysql root:object_r:mysqld_db_t ib_logfile0

  -rw-rw---- mysql mysql root:object_r:mysqld_db_t ib_logfile1

  drwx------ mysql mysql root:object_r:mysqld_db_t mysql

  srwxrwxrwx mysql mysql root:object_r:mysqld_var_run_t mysql.sock

  drwx------ mysql mysql root:object_r:mysqld_db_t test

  [/php]

  但是到放了数据的 test 库底下看就知道自建的表还是没有 SELinux 权限,没关系,修改就是了:

  [php]

  chcon -R -t mysqld_db_t /var/lib/mysql

  [/php]

  注意!此处的 SELinux 属性是 mysqld_db_t

  2. pgsql

  我还开了 PostgreSQL 的库,用此方法修改属性没有成功,报错:

  [php]

  chcon: cant apply partial context to unlabeled file pgsql/data/base/23456

  chcon: cant apply partial context to unlabeled file pgsql/data/base/12345

  [/php]

  到 /var/lib/pgsql/data/base 下看,原来是自建库 12345 和 23456 不能应用属性。找资料找的乱七八糟,半天也没有头绪,算了!

  [php]

  #su - postgres

  $cd /var/lib/pgsql/data/base

  $mv 12345 12345_b

  $cp -r 12345_b 12345

  [/php]

  再看:

  [php]

  drwx------ postgres postgres user_u:object_r:postgresql_db_t 12345

  ...

  [/php]

  说明已经加上属性了,再刷新一下读数据库的网页,OK !

  最后还要说几句,修改 SELinux 属性挺烦的,但是对安全有好处,所以值得下一点工夫。

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜