今天我尝试在我的 Fedora 14 PC 上安装 httpd 和 mysql。一切正常。之后我尝试在用户目录中创建一个 public_html 文件夹并允许 php 访问该文件夹。为此我点击此链接。现在当我尝试访问该文件夹时,forbidden
浏览器上会显示消息。为了避免这种情况,我在 Google 上搜索了我的问题,结果此链接。当我尝试setsebool -P httpd_enable_homedirs=1
时,我的浏览器显示Internal server error
。
我的错误日志
[Tue Apr 01 09:01:28 2014] [notice] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Tue Apr 01 09:01:28 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Apr 01 09:01:28 2014] [notice] Digest: generating secret for digest authentication ...
[Tue Apr 01 09:01:28 2014] [notice] Digest: done
[Tue Apr 01 09:01:30 2014] [notice] Apache/2.2.17 (Unix) DAV/2 PHP/5.3.8 configured -- resuming normal operations
[Tue Apr 01 09:08:45 2014] [crit] [client 127.0.0.1] configuration error: couldn't perform authentication. AuthType not set!: /~BON4/
[Tue Apr 01 09:08:52 2014] [crit] [client 127.0.0.1] configuration error: couldn't perform authentication. AuthType not set!: /~BON4/HH.php
[Tue Apr 01 09:08:52 2014] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico
答案1
根据您的网络服务器配置,将一些内容(例如 index.php 或 index.html)放入 public_html 目录中。如果您提供错误日志,那将会很有帮助。
答案2
尝试
<Directory /> Options FollowSymLinks AuthType None AllowOverride None Order deny,allow Deny from all </Directory> <Directory "/opt/your_folder/*"> Options FollowSymLinks MultiViews AllowOverride None AuthType None Order deny,allow Allow from all </Directory>
这似乎是您在 Web 目录中创建的文件夹的权限错误。
答案3
您所关注的链接同时指定了版本 2.2 和 2.4;我怀疑您需要将Require all granted
其删除/etc/httpd/conf.d/userdir.conf
,因为 Fedora 14 附带了 Apache 2.2。
我还建议阅读http://httpd.apache.org/docs/2.2/mod/mod_userdir.html更好地了解 apache 2.2 中的 mod_userdir
答案4
您要运行的网站必须按照链接中提到的方式运行(使用 selinux 和 /home/user/public_html)。如果不是这种情况,请禁用 selinux 并尝试将一些内容放入 /var/www/html 中,并注释掉 userdir 模块。如果您想在 /home/user/public_html 中配置它,请考虑在 httpd.conf 文件中输入 vhosts(虚拟主机)。因为如果启用了 selinux,您必须制定允许和不允许的政策。
Vhost设置:
由于默认权限仅允许我们('demo')用户浏览我们的主文件夹,因此我们首先授予 Apache 对该文件夹的访问权限:
chmod 755 /home/demo
好的,现在我们需要为我们的网站创建目录结构。
在您的主目录中创建一个“public_html”文件夹:
cd〜mkdir public_html
现在,对于我们要托管的每个域,创建一个包含一组标准子文件夹的文件夹:
mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup}
这将为我们的每个域(domain1.com)创建文件夹public、private、log、cgi-bin 和 backup。
索引.html
公共文件夹的内容完全由您决定,但在这个例子中,我将使用一个非常简单的 HTML 文件,以便我们可以检查虚拟主机是否正常工作:
对于每个域,我们创建 index.html 文件:
vi public_html/domain1.com/public/index.html
让我们继续并取消注释 Apache 配置中的通用 NameVirtualHost。
导航到 /etc/httpd/conf 目录并打开主 Apache 配置文件 (httpd.conf):
sudo vi httpd.conf
现在我们可以重新启动 Apache 来启动更改:
sudo /etc/init.d/httpd 重启
自定义虚拟主机
我们已经设置了基础知识,现在我们准备添加我们自己的虚拟主机,以便我们可以开始为我们的域名提供服务。
让我们为domain1创建vhost:
sudo vi /etc/httpd/conf/httpd.conf
在httpd.conf文件的底部,我们需要添加以下内容:
# 管理员电子邮件、服务器名称(域名)和任何别名 ServerAdmin[电子邮件保护] 服务器名称 domain1.com 服务器别名 www.domain1.com
# 文档根目录(公共文件所在的位置) DocumentRoot /home/demo/public_html/domain1.com/public # 自定义日志文件位置 LogLevel warn ErrorLog /home/demo/public_html/domain1.com/log/error.log CustomLog /home/demo/public_html/domain1.com/log/access.log combined
好的,现在我们需要重新加载 Apache:
sudo /etc/init.d/httpd 重新加载
现在导航到您的网站: