我正在尝试使用 Apache 在 Lion 1.7.2 上从我的 Dropbox 文件夹(位于 ~/Dropbox/Projects/MySite/)提供网页。但我得到的只是403 禁止错误。
我确信这与该文件夹中的权限有关,因为我可以使用以下命令将虚拟主机目录更改为我在命令行中创建的页面须藤并且运行良好。
有效的页面归根:轮。我尝试过只改变我的网站文件夹根:轮,但无济于事。我担心如果我继续更改目录树的权限,可能会弄乱一些东西。
我该如何让 Dropbox 为网站提供服务?
答案1
由于 Apache 以单独用户身份运行,因此不允许它随意进入您的文件夹。您可能需要了解有关 UNIX 文件权限的信息:http://en.wikipedia.org/wiki/Chmod但在这种情况下,文件夹可能是 755 或 775,即对用户来说是完全权限,对组和其他人来说是读取和执行权限,或者对用户和组来说是完全权限,对其他人来说是读取/执行权限。因为 Apache 是不同的用户,并且你们没有共同的组,所以文件夹可能需要是 777,这样它才能使用它。这是一个有点混乱的修复,对于你来说,可能更容易的方法是将它可以访问的文件夹符号链接到你的 Dropbox,也许是你的 ~/Sites 文件夹?
答案2
我发现的解决方案是将现有的站点文件夹移到一边......
sudo mv ~/Sites ~/Sites.old
然后从包含我的文件的 Dropbox 文件夹创建到站点的符号链接。
ln -s ~/Dropbox/Projects/MySite Sites
最后编辑我的 USERNAME.conf 文件,以允许 Apache 遵循符号链接。因此,使用您熟悉的任何编辑器,编辑/etc/apache2/users/用户名.conf改变...
<Directory "/Users/USERNAME/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
读书...
<Directory "/Users/USERNAME/Sites/">
Options Indexes MultiViews +FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
然后重新启动 Apache...
sudo apachectl restart
现在您应该能够在 Dropbox 中编辑文件并使用 Apache 提供它们。
请注意,使用 FollowSymLinks 存在潜在的安全风险,因此不应在实时/生产环境中使用。
答案3
我的问题略有不同:我需要一个 CGI 脚本(嗯,实际上是 Mason)来访问 Dropbox 文件夹,并远程更改信息以更新页面。但是,Apache 以用户 _www 的身份运行,并且受到严格限制。例如,它无法登录。(不要让它能够登录,即使你可以!)
我设置了一个新帐户,组 _www,将新用户名添加到组 _www。然后以新帐户身份登录,为该帐户设置 Dropbox,确保 chmod -R g+rx 使组可读取 Dropbox 文件夹,并使帐户在启动时自动登录。现在您的 OS X 上有一个实时 Dropbox 文件夹,Apache 可以访问该文件夹,即 _www,而无需自行登录。
瑞克
答案4
我发现的解决方案非常简单,Apcache 不遵循符号链接,除非它们位于文档行内(在我的情况下是 /var/www)。我所做的是创建文件夹 /var/www/mysite,然后在 dropbox 中创建指向该文件夹的符号链接。因此,dropbox 上传了该文件夹的内容,并下载了我在其他机器上对该文件夹所做的任何更改。但请记住不要在另一台机器上删除该文件夹并重新创建它,这会切断符号链接