我只是想知道是否有人愿意帮助我在托管(专用)Linux Web 服务器上安装 Subversion,而这正是我所苦恼的。
我租了一台专用的 Linux 服务器,团队为我安装了 subversion(/usr/bin),仅此而已。有人告诉我,我可以使用 PuTTY 连接到服务器,我确实做到了。
现在我的服务器上托管了 15 多个网站,并且安装了 WHM 来管理这些网站;因此我想为每个网站创建一个存储库,并将源代码放入每个存储库中。然后我会使用 TortoiseSVN 在本地计算机上创建存储库,然后将这些提交应用于实时服务器。
我已经阅读了 SVN 书籍的部分内容;但是,我真的很挣扎,并希望得到一些帮助:a)正确设置存储库并创建所有必要的权限和安全性,然后 b)如何将更改从本地计算机传输到实时服务器 - 再次非常感谢您的帮助,我假设正在创建一个钩子脚本来将文件传输到实时服务器?
谢谢
PS:如果有人可以提供上述操作的简单步骤和所需的代码,那将对我真的很有帮助,因为我已经这样做了几个星期,但似乎无法开始。
答案1
在您的服务器上:
1)确保安装了 subversion -- yum/apt-get/etc 应该可以使它变得非常容易。
2)创建一个目录来保存存储库:mkdir /some/repository/path
3)使用svnadmin
创建存储库布局:svnadmin create /some/repository/path
4)导入您的来源:
$ cd /path/to/your/code
$ svn import -m "initial import" . file:///some/repository/path/trunk
注意:这会将代码导入到 repo 中,但不是创建工作副本!接下来:
5)将原始文件移开,然后签出工作副本:
$ cd ..
$ mv /path/to/your/code /path/to/your/code-presvn
$ svn co file:///some/repository/path/trunk code
5.5) 您可能想确保人们无法通过 Web 服务器浏览您的 .svn 目录。对于 apache,httpd.conf 中的以下内容应可实现此目的:
<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>
6) 测试您的网站,确保权限正确等。签出新副本可能会产生问题。记录(或更好的是,编写脚本)所有需要进行的更改以正确配置新签出的副本可能是一个好主意。
7)要获取用于开发的本地副本,请使用存储库 URL,例如我不熟悉 tortoisesvn,但如果您使用标准命令行工具,您可以像这样签出您的项目:svn+ssh://[email protected]/some/repository/path/trunk
$ svn co svn+ssh://[email protected]/some/repository/path/trunk
然后,您可以对本地工作副本进行更改,并提交内容(svn commit -m "description of changes"
)。当您想要将这些更改移至生产系统时,请通过 ssh 进入框,cd /path/to/your/site
(svn -u status
预览更改),svn update
以使所有内容保持最新状态。
希望这对您有帮助。
我也强烈建议你的阅读更多阅读 subversion 文档,了解底层发生了什么。此外,在尝试任何重要操作之前,请确保您知道自己在做什么。您可以创建带有虚假数据的测试存储库,并进行一些实验,直到您确信自己知道自己在做什么。
答案2
它是专用服务器还是共享主机?如果是共享主机,那么我认为你运气不好,但如果是专用服务器,那么你只需登录并安装应用程序
我会使用类似 8080 的端口来监听服务,而且我肯定会使用可视化Svn服务器标准,因为它非常容易安装和配置。
此外,如果您愿意购买 VisualSVNServer,那么您将拥有完全访问权限并可以远程配置它。
http://www.visualsvn.com/server/licensing/
当我需要创建一个新的 Repo 时,我个人会使用标准版本和 RDP 进入我的服务器......这样我就可以使用 VisualSVN GUI 并且知道它可以轻松运行。
答案3
这里的一些术语将澄清您面临的问题。了解 SVN 的重要一点是,它是一个客户端-服务器系统. 存储库的 posix FS 可读副本称为查看;集中式服务器不会有这样的事情。将变更移至中央存储库称为犯罪;其他系统进行的结账不受影响;他们必须更新查看您的新提交。所有更改都必须通过中央 SVN 服务器,您无法从一个签出传递到另一个签出。在特定 SVN 事件之后在服务器上运行的脚本被调用钩子。例如,每次提交后发送电子邮件的脚本称为“postcommit hook”。
所以你必须要做的是:
设置一个服务器来为每个网站托管一个 SVN 存储库,并使其可访问通过 SVN+SSH。这将使用 SSH 进行身份验证(即“这是 Bill”),但授权(“Bill 可以写入此存储库”)由您决定。通常,存储库存储在 中
/var/lib/svn/
,因此请在那里创建存储库,例如svnadmin create pwnguin.net
。将创建一个新的空存储库。使用 tortoise 将存储库签出到您的桌面并添加文件。网址将类似于svn+ssh://example.com/var/lib/svn/pwnguin.net
。一旦您的本地机器能够进行签出和提交,请设置每个网站以使用 DocRoot 的签出。确保阻止对服务器配置中的任何 .svn 文件的访问,因为将其留在周围可能会有点危险。在您的工作站上进行更改并提交,然后尝试手动更新签出并验证信息是否按您希望的方式流动。
一旦 SVN 部署开始运行,您就可以使用它通过提交后挂钩来自动化部署。如果所有网站都与 SVN 服务器位于同一 Linux 服务器上,则编写脚本非常容易;如果它们位于不同的机器上,则仍然非常容易,但您需要知道如何安全地设置无密码 SSH。