我最近在我的计算机上创建了一些 Linux 用户,并且按照以下方式创建了他们各自的目录,/home/my_user
因此我决定将每个用户视为我的一个网站。
我将所有网站文件都移到了这个目录中,就像这样/home/my_user/public_html/
。
我编辑了我的虚拟主机httpd.conf
并更改了根目录文件夹,所以它看起来是这样的
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/home/my_user/public_html"
ServerName mywebsite.com
ServerAlias www.mywebsite.com
ErrorLog "/var/log/httpd/mywebsite/error_log"
CustomLog "/var/log/httpd/mywebsite/access_log" common
</VirtualHost>
现在,这个虚拟主机配置与我位于的旧文档根路径配合得很好,/var/www/html/mywebsite/public_html
但是将其更改为现在的状态后,我收到了权限被拒绝错误。
但我遵循了这里的说明:https://stackoverflow.com/questions/14427808/you-dont-have-permission-error-in-apache-in-centos
即使按照上述说明操作后,当我运行以下命令时:sudo -u apache ls /home/my_user/public_html
服务器响应
ls: cannot open directory /home/my_user/public_html: Permission denied
即便如此,当我尝试访问我的网站时,我不再收到权限被拒绝错误,但是,现在我被重定向到 apache 的默认页面而不是我的网站。
我已经不太清楚到底出了什么问题,如果有人有想法,那就太好了!
答案1
我会用mod_userdir如果我是你,在每个用户主目录中配置一个 public_html 目录。
该模块允许使用以下方式访问用户特定的目录 http://example.com/~user/句法。
如果您愿意,可以仅为部分用户启用此功能:
UserDir disabled
UserDir enabled user1 user2 user3
有了这个,你的权限可能会更顺利,因为很可能在你的配置中,你会得到一个 SELinux 拒绝或者其他权限错误。
您通常不希望允许其他用户访问用户目录,而这正是您的方法所需要的。