我正在尝试在 64 位 12.04 Ubuntu 机器上创建一个开发环境,但让虚拟主机工作却非常困难。我终于弄清楚了问题所在,但我真的不明白。
我将虚拟主机的文档根目录设置为我的主目录 - 即:
/主页/罗伯特/Dropbox/www/personville
当我在浏览器中访问 www.personvillepress2.com 时,我得到
禁止访问 您无权访问此服务器上的 /。Apache/2.2.22 (Ubuntu) 服务器位于 www.personvillepress2.com 端口 80
在日志中,我看到
[2012 年 6 月 16 日星期六 09:55:25] [crit] [客户端 127.0.0.1] (13)权限被拒绝:/home/robert/Dropbox/.htaccess pcfg_openfile:无法检查 htaccess 文件,请确保其可读
我将文档根目录移至 /主页/罗伯特/www/personville
相应地修改虚拟主机设置,重新加载,然后突然一切正常!这很糟糕,因为我想将所有源代码保留在我的 Dropbox 文件夹中以进行备份。
我对 Dropbox 文件夹的权限似乎很正常:
robert@kundera-linux:~/Dropbox$ ls -al
total 1036
drwx------ 29 robert robert 4096 Jun 15 09:11 .
drwxr-xr-x 60 robert robert 4096 Jun 15 21:15 ..
-rw-rw-r-- 1 robert robert 29 Jun 15 09:11 .dropbox
drwxrwxr-x 2 robert robert 262144 Jun 13 05:22 .dropbox.cache
drwxrwxr-x 5 robert robert 4096 Jun 9 00:00 www
没有符号链接或异常严格的权限。此外,我没有发现任何可能导致任何问题的 .htaccess 问题(为什么 apache2 会关心文档根目录之上的 .htaccess 权限问题?)
我很感激任何关于如何解决这个问题的想法,让我能够将源文件保留在 Dropbox 中。
不起作用的虚拟主机文件如下:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName personvillepress2.com
ServerAlias www.personvillepress2.com
# DocumentRoot /var/www
DocumentRoot /home/robert/Dropbox/www/personville
<Directory /home/robert/Dropbox/www/personville>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/personvillepress2error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
更新:我发现其他人之前也遇到过这个问题。https://stackoverflow.com/questions/9460052/how-can-i-use-a-dropbox-directory-as-a-virtual-host-document-root-in-osx
我其实并不担心这里的安全性——这是一个开发箱;我主要担心备份和从其他机器访问。我正在考虑使用 git 部署到实时站点,所以我想要的只是一种备份本地数据的方法。有人能提出解决方案吗?谢谢。
答案1
在我看来,这只是一个简单的权限问题。在 Ubuntu 上,Apache 以用户www-data
组的身份运行www-data
。从您的目录列表中我们可以看到,您的目录上的权限~/Dropbox
(通过.
)为drwx------
或700
。因此 Apachewww-data:www-data
被拒绝访问。
chmod 755 ~/Dropbox
可能会解决眼前的问题。通常,您需要提供o:rx
目录权限和o:r
文件权限,以允许 Apache 访问这些文件。