QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 941|回复: 6

帮忙看看apache的设置

[复制链接]
发表于 2005-4-15 12:38:44 | 显示全部楼层 |阅读模式
我在Fedora Core 3下设置apache,如果使用系统默认的配置,都没有问题。但是由于系统将
DocumentRoot设置在/var/www/html下,
ServerRoot设置在/etc/httpd/下

我想将DocumentRoot改为我自己的目录/home/alice/www/html,但是无论我怎么写,apache启动后还是总去/var/www/html下找,这是为什么呢?

如果我挪走/var/www,错误信息老是
Directory index forbidden by rule: /var/www/html
File does not exist:/var/www/html/favicon.ico

为什么不去我指定的/home/alice/www/html下面去找呢?请问还有什么地方可以设置或是权限写得不对吗?这两个地方的权限都是drwxr-xr-x。

谢谢!
发表于 2005-4-15 13:40:31 | 显示全部楼层
/home/alice/www/html有首頁文件index.html ,或者index.php么?
回复

使用道具 举报

 楼主| 发表于 2005-4-15 14:15:23 | 显示全部楼层
谢谢帮忙!

我是把/var/www整个目录拷到/home/alice/下的,定义了DocumentRoot为/home/alice/www/html。

我在以前老的linux上和windows上都装过apache,但是是1.3几的版本了,我知道以前是在htdocs下面有很多不同语言的index.html。但是这次新用了FC3,它在/var/www/html下面没有任何index.html文件,但是可以调试成功,可以见到Fedora说Apache成功的页面,所以我想是不是系统做好了的?我于是就拷了所有的www目录下的文件到我的home里,为什么在log中没有提过说/home/alice/www中出错?为什么根本不去我指定的这个目录呢?

另外,还想请问,为什么大家都要自己再重新下载apache和mysql,而不用系统自己带的呢?我的FC升级的很快,apache,mysql和PHP都是最新的,可能因为我自己也是新的吧,我根本找不到系统把Mysql, PHP这些都装到哪里了?能不能告诉我这些都在哪个目录下可以找到?请给我一个建议,是自己重装好还是用系统里的好,谢谢!
回复

使用道具 举报

发表于 2005-4-15 14:42:31 | 显示全部楼层
[quote:aae8e2cd9a="alice_alice"]谢谢帮忙!

我是把/var/www整个目录拷到/home/alice/下的,定义了DocumentRoot为/home/alice/www/html。

我在以前老的linux上和windows上都装过apache,但是是1.3几的版本了,我知道以前是在htdocs下面有很多不同语言的index.html。但是这次新用了FC3,它在/var/www/html下面没有任何index.html文件,但是可以调试成功,可以见到Fedora说Apache成功的页面,所以我想是不是系统做好了的?我于是就拷了所有的www目录下的文件到我的home里,为什么在log中没有提过说/home/alice/www中出错?为什么根本不去我指定的这个目录呢?

另外,还想请问,为什么大家都要自己再重新下载apache和mysql,而不用系统自己带的呢?我的FC升级的很快,apache,mysql和PHP都是最新的,可能因为我自己也是新的吧,我根本找不到系统把Mysql, PHP这些都装到哪里了?能不能告诉我这些都在哪个目录下可以找到?请给我一个建议,是自己重装好还是用系统里的好,谢谢![/quote]
還沒搞定么?帖配置文件看看撒!其實我一直都用繫統自己默認的amp.可能是自己懶惰吧。不過自己下載原代碼編譯也不難喲。很多站上有介紹的。一般裝的時候可以定義目錄的,默認一般都在/usr/local下吧
回复

使用道具 举报

 楼主| 发表于 2005-4-15 14:50:50 | 显示全部楼层
谢谢,我还在努力,顺便还看了看你的博客,有幸能遇到高人,在这么沮丧的时候也很有小小开心了。

是,我在网上看到好多介绍,也正因为无非是那几个改动,但是改来改去都没好结果,就有些无所适从了。不过如果你说你也是用的系统自己带的,那我也这么用吧,我只是怕是不是有什么危险所以大家都是自己去下载重装的。唉,还是自己再弄弄吧。
回复

使用道具 举报

发表于 2005-4-15 17:07:31 | 显示全部楼层
http://bbs.chinaunix.net/forum/viewtopic.php?t=528796


SELinux中的Apache和MySQL设定


Fedora Core 3 在安装时默认把SELinux的选项激活了。SELinux比普通的Linux内核提供了更高的安全性,理论上说,在系统因为未知漏洞溢出的时候,普通用户是不可能得到超级用户的权限了。但是,就是因为SELinux安全性的提高,导致我们在使用时,会发生一些我们以前从没遇到的问题。

前两天我在使用Fedora Core 3搭建PHP+MySQL的WebServer时就遇到了一些问题。现在整理一下,如果您也遇到同样的问题,那么,看过这篇文章,就应该可以轻而易举的解决了。

1. Apache - Document root must be a directory 问题。

有可能和这个问题并发的问题还有 403 Forbidden 禁止访问的问题。

现象描述:

不使用系统默认的 /var/www/html作为系统的Document Root,自己新建一个目录后修改 /etc/httpd/conf/httpd.conf 中的配置,然后重起Apache的Daemon,发现Apache无法起动,系统报错:

  Document root must be a directory

但是,我们设置的DocumentRoot 的确是一个目录,而且apache用户具有可读权限。

另一种情况:新建一个虚拟目录或文件后,无法访问,显示 Forbidden, 403 Error,但文件或目录有可读权限。

问题产生的原因:

一开始我想来想去想不出为什么,但是给我感觉是权限的问题,用传统的Linux的思维方式来看,权限绝对没有问题。但是仔细一想,SELinux是不是会有其他安全的设定?

检查 avc message,查看 /var/log/messages文件,发现有类似以下内容的这样一段:

Dec 24 17:54:59 hostname kernel: audit(1098222899.827:0): avc: \
denied { getattr } for pid=19029 exe=/usr/sbin/httpd \
path=/var/www/html/about.html dev=dm-0 ino=373900 \
scontext=root:system_r:httpd_t tcontext=user_ubject_r:user_home_t \
tclass=file

嘿嘿,问题找到了,果然是SELinux的新特性搞的鬼。我把目录或文件设成了user_home_t类型,因此apache的进程没有权限,无法访问。针对Apache的进程所使用的SELinux target policy规定了apache的进程只能访问httpd_sys_content_t类型的目录或文件。

解决办法:

很简单,把目录或文件的策略类型改成 httpd_sys_content_t 就可以了

使用root用户

# chcon -t httpd_sys_content_t 目录名或文件名

然后可以用 ls -laZ 命令查看文件目录的策略类型


2. Mysql - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

刚搞定Apache,mySQL又出问题了。

问题现象:

本机用mysql命令可以正常登录数据库并正常操作。但是在php写的页面中,不管怎样,连接mySQL数据库时,都会报如下错误:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

问题原因:

查看mysql.sock文件,存在并且任何人都可读可写。发现avc message (/var/log/messages)中同样有策略错误的记录。

用 ps -efZ|grep mysql 命令检查mysql的进程,发现mySQL使用了unconfined_t 这个未定义策略类型在运行,而mysql.sock以及mysqld文件的策略类型都是var_lib_t。很明显,这应该是个Fedora Core 3 的 BUG,SELinux target policy的BUG,redhat并没有为mySQL制定正确的target policy。

解决办法:

到redhat的bugzilla系统上搜索,果然找到了这个BUG。

 Bug #:  138421 
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=138421

在这个页面找到新的target policy的补丁安装即可

补丁下载页面:
ftp://people.redhat.com/dwalsh/SELinux/FC3
你也可以从本文的附件中下载

只要下载
selinux-policy-targeted-1.17.30-2.23以上的版本就能正常使用mySQL了。

如果你原来的系统安装了 selinux-policy-targeted-source (源代码),那么你也必需下载source的rpm文件,并首先升级这个包,因为两个包有依赖关系。

补丁安装办法:

使用root用户。

先升级新的target-policy-source (如果你之前安装了这个包的话)
# rpm -Uvh selinux-policy-targeted-sources-1.17.30-2.61.noarch.rpm

升级新的target-policy
# rpm -Uvh selinux-policy-targeted-1.17.30-2.61.noarch.rpm

更新mysql相关的target policy
# rpm -q -l mysql-server | restorecon -R -v -f -
# rpm -q -l mysql | restorecon -R -v -f -

重起mysql的服务
# service mysqld restart
回复

使用道具 举报

 楼主| 发表于 2005-4-15 17:13:59 | 显示全部楼层
非常感谢!这就是我碰到的问题,我要试试先。再次感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 00:34 , Processed in 0.069276 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表