svn 和 web 服务器文件所有权

svn 和 web 服务器文件所有权

我对文件所有权有疑问。

我有一个 drupal 网站,“files”文件夹需要由“www-data”拥有,以便让用户使用 php 上传文件。

不过,我现在使用 svn,并且我需要所有文件夹和文件都归我的 ubuntu 用户所有才能工作。

文件具有 775 权限,因此用户和组都具有对文件的完全访问权限。

我已将我的 ubuntu 用户添加到 www-data 组,但它仍然不起作用。我不知道为什么。我尝试将组更改为我的 ubuntu 用户组,但仍然不起作用。

我还尝试将我的 ubuntu 用户设置为所有者,并将 www-data 设置为组,但在这种情况下,网络服务器 php 脚本无法再将文件上传到该文件夹​​中(这又很奇怪,因为该组具有完全权限)。

答案1

在任何类型的 Web 开发中,通常有几个充分的理由以不同的方式处理开发和生产。在主目录中拥有网站的本地副本以进行开发很方便,但要接受的是,在将更改推送到生产环境之前,某些事情无法完全正常工作是可以接受的。

您不应该尝试将 Drupal 权限方案和您的用户帐户权限方案绑定在一起。让生产 Drupal 的东西存在于/var/www/html任何地方,并拥有使 Apache/PHP/Drupal 满意的所有权限。让你的开发树归你所有。

每当您完成网站新功能的工作时,请使用某种同步工具将更改从开发推送到生产,并在此过程中顺便获得新的权限。

就我个人而言,我用rsync这个。这有一个很好的优点,即生产服务器可以跨互联网,因为隧道传输rsyncssh简单。这是 Web 开发的一个重要功能,因为通常有充分的理由将您的网站托管在服务器上而不是您自己的 LAN 上。我对我的网站使用这样的命令:

rsync -lprtvD -e ssh --delete \
        --exclude \*.swp \
        --exclude .svn \
        --exclude GNUmakefile \
        ./ [email protected]:/var/www/html

www该命令将使文件由上的用户拥有www.mysite.com,从而将开发权限方案与生产环境分离。

听起来你想使用 SVN 来代替,这很好。您只需做到这一点,以便开发和生产设备都可以看到 SVN 服务器。与 rsync 一样,为了安全起见,您希望通过ssh此处隧道传输 SVN 协议。当需要将更改推送到生产时,将其签入 SVN,然后在生产框中签出。实际上,我建议使用svn export而不是svn checkout避免.svn子目录分散在整个 Web 服务器树中。 rsync 方法通过--exclude规则避免了这种情况。

相关内容