团队主服务器的最佳解决方案

团队主服务器的最佳解决方案

我使用 Ubuntu 12.04 Server 创建了一个家庭服务器(使用一台配备 Atom CPU 和 512Mb 的旧上网本)。这个想法只是供一个小团队(最多 10 人)使用,该团队可以通过 SSH 持续访问主要项目,可以使用 Git 添加功能,并且还可以拥有自己的目录(配置了 VirtualHost)用于个人项目。

一切都已配置并正在运行,但我的问题是:

这里最适合每个人工作的解决方案是什么?是让他们加入组http,然后所有人都可以作为普通用户访问该/var/www文件夹(其中还包含 GitWeb 和 Drupal),还是创建一个以项目命名的新用户(作为示例),只有拥有密码的人才能访问工作(使用 VirtualHost 配置)。

注意:我们的想法是让 1 个人直接负责服务器(因为他是服务器的托管人),另外 2 个人可以root从他们的家访问服务器以便从他们的家配置任何东西,另外任何加入该组的人都没有任何root访问权限,但只是具有创建个人作品和使用 Git 所需的访问权限。

答案1

有两个独立的问题,一个是关于设置 Apache,另一个是关于设置 git。

关于 Apache:没有必要向/var/www所有人提供访问权限,Apache 支持每个用户的 Web 目录因此,在配置中使用一行启用每个用户目录后,用户应该能够将文件添加到public_html其主目录中的目录中,并在http://example.com/~username/

关于 Git:这里的技巧是将所有用户添加到一个组中,然后确保服务器上的存储库是使用--shared标志创建的,并且由该组拥有。我为此使用了一个脚本:

#!/bin/bash
REPONAME=$1
BASE=/var/www/git

echo "Creating new repository: " $1
mkdir $BASE/$REPONAME
cd $BASE/$REPONAME
git --bare init --shared
git update-server-info
chown -R apache:apache $BASE/$REPONAME
echo "Done."
echo "SSH clone URL is ssh://example.com/www/git/$REPONAME"

此类存储库需要由超级管理员用户创建,但之后每个人都可以从中推送和拉取。如果用户需要私有存储库,他们只需在其主目录中创建一个即可。

答案2

您的解决方案可能没问题。您只需要确保 Apache 能够读取 /var/www 中的文件。

另外,您也可以随时安装apache2-mpm-itk,这将允许您配置以用户身份运行的虚拟主机,而不是以 Apache 运行的用户身份运行的虚拟主机(通常是 www-data)。有关apacke2-mpm-itk 这里

答案3

最好的解决方案是除了服务器管理员之外,不要让任何人通过 ssh 或远程方式进入机器。相反,让每个开发人员在自己的机器上工作,每个人只需git pull/push从中央服务器分支获取代码即可。这样,每个人所做的工作都是完全独立的,除非他们合并其他人的更改。Git 将负责所有权限,您需要做的就是确保每个开发人员都有一个可用的登录帐户。

请参阅本文档的“使用 git 进行协作”部分: http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html

您可能还对本文档的“分布式工作流”部分感兴趣: http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html

相关内容