user_directory 上存在内部服务器错误

user_directory 上存在内部服务器错误

今天我尝试在我的 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 重新加载

现在导航到您的网站:

相关内容