我设法在 LAMP 服务器上安装虚拟主机并创建了配置文件
/etc/apache2/sites-available/site.com.conf
<Directory /home/ihab/Workspace/Webdev/site.com/public_html>
AllowOverride All
</Directory>
<VirtualHost *:80>
ServerName site.com
ServerAlias www.site.com
ServerAdmin webmaster@localhost
DocumentRoot /home/ihab/Workspace/Webdev/site.com/public_html
ErrorLog /home/ihab/Workspace/Webdev/site.com/logs/error.log
CustomLog /home/ihab/Workspace/Webdev/site.com/logs/access.log combined
</VirtualHost>
当我启用 mod_rewrite 时,我确实将我的虚拟主机文件从 sites-available 目录链接到 sites-enabled 目录:
sudo a2ensite site.com.conf
并将分配的虚拟主机域添加到我的主机文件/etc/hosts
:
127.0.1.1 site.com
127.0.1.1 www.site.com
我检查了/site.com
文件夹权限,报告如下:
drwxrwxr-x 4 www-data www-data 4096 Jul 18 13:55 .
drwxr-xr-x 4 ihab www-data 4096 Jul 23 19:16 ..
drwxrwxr-x 2 www-data www-data 4096 Jul 18 13:56 logs
drwxrwxr-x 5 www-data www-data 4096 Jul 23 17:21 public_html
我进入文件资源管理器,发现该目录site.com
有锁图标当我进入site.com
浏览器时,出现 403 Forbidden 错误。任何帮助解决问题的帮助都非常感激 :)
答案1
您的问题可能有多种原因,以下是其中两种原因的解决方案:
文件夹和文件权限
不仅 site.com 文件夹,而且所有父文件夹都需要设置权限,以便 apache 可以遍历它们。请检查 /home、/home/ihab、/home/ihab/Workspace 和 /home/ihab/Workspace/Webdev 是否有正确的设置。
它们要么需要
- 属于 apache 运行的用户(
chown www-data:ihab
-但如果你不密切关注它们,这将禁止你修改它们chmod
) - 他们的组必须是 apache2 用户拥有的组(
chown ihab:www-data
这样才有效) - 或者你需要确保用户www-数据位于这些文件夹所属的组中(
gpasswd -a www-data ihab
或gpasswd -a www-data users
例如)
Apache2 资助
在“正常”情况下,webroot 属于/var/www
- 对于这些文件夹,“授权”由 apache2 默认配置相应地设置。您选择将文件放在另一个文件夹结构中 - 这很好,但需要进行一些调整:
添加require all granted
到这些文件夹:
<Directory /home>
require all granted
</Directory>
<Directory /home/ihab>
require all granted
</Directory>
<Directory /home/ihab/Workspace>
require all granted
</Directory>
<Directory /home/ihab/Workspace/Webdev>
require all granted
</Directory>
<Directory /home/ihab/Workspace/Webdev/site.com>
require all granted
</Directory>
<Directory /home/ihab/Workspace/Webdev/site.com/public_html>
require all granted
</Directory>