我正在尝试为我正在处理的项目projectx.cairocubicles.com创建一个子域,此 url 指向另一台服务器而不是托管www.cairocubicles.com的服务器。子域指向的服务器安装了以下虚拟主机的 apache:
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin [email protected]
ServerName www.project1.cairocubicles.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html index.php
DocumentRoot /home/project1/web/public
<Directory /home/project1/web/public>
Options Indexes FollowSymLinks
AllowOverride All
AcceptPathInfo On
Order allow,deny
Allow from all
</Directory>
# Custom log file locations
LogLevel warn
ErrorLog /home/project1/web/log/error.log
CustomLog /home/project1/web/log/access.log combined
</VirtualHost>
但是现在当浏览到 project1.cairocubicles.com 时,我得到了一个不同的网站(虚拟主机列表中的另一个网站)。我也尝试更改ServerName www.project1.cairocubicles.com
为,ServerName project1.cairocubicles.com
但随后出现 403 Forbidden 错误。有什么线索吗?
谢谢。
只是在黑暗中快速拍摄,但这可能是 SELinux 问题。当您访问您配置为 ServerName 的站点时,站点特定日志中是否显示任何内容?/var/log/http/error.log 中有什么显示吗?
-确保在配置发生任何更改后使用 apache2/httpd 执行重启或重新加载
-确保 /home/project1/web/public 存在且权限为 664(使用 -R 递归执行此操作)
- 确保文件的所有者和组是 apache2 / httpd(取决于发行版),通常用户 ID 为 33
-确保 project1.cairocubicles.com 指向的 IP 地址正确
-我通常避免使用 www。带有现有子域的子域(不是出于技术原因,它看起来很乱)
-为了测试,制作一个名为 phpinfo.php 的文件,并让它只包含以下内容
并只加载它(所以http://project1.cairocubicles.com/phpinfo.php)
-您需要确保您已经修改了文件夹的所有权和组信息。尝试以下命令(扩展上面的第 3 点):
和
如果命令显示用户 apache2 不存在,请将其替换为 httpd。如果 apache2 进程(以用户 apache2 身份启动)无法读取/执行文件,则可能会发生错误(即 403 forbidden)。
另一种解决方法是将您的用户添加到 apache2 组。不过,正确设置有点复杂
尝试:
确保运行 apache 的用户具有对 /home/project1/web/public 目录的读取权限
如果域未列为 ServerName 或 ServerAlias,它将从第一个定义的 VirtualHost 加载。这就是为什么在第一种情况下您最终会看到错误的网站。
更改服务器名称后,您可能加载了正确的网站,但现在您遇到了权限或内容问题。检查错误日志、访问日志、文件系统权限。除此之外,之前的发帖人提到 SELinux 是一个可能的问题。
所以当我给 /home/userx 中的主目录一个 o+x 权限时它现在工作了,这安全吗,为什么它需要每个人的执行权限
我需要确保我已经修改了文件夹的所有权和组信息,使用以下命令: chown apache2 /home/project1/public -R 和 chgrp apache2 /home/project1/public -R 如果命令说用户apache2 不存在,用 httpd 替换它。这就是为什么它不能在主目录(由您的用户拥有)中工作而在 /var/www 目录(由 apache2 拥有)中工作的原因。我建议在 /var/www/ 中创建指向您的主目录的符号链接。这是标准做法。(其他人更容易看到发生了什么)