我与一位客户合作,他拥有一台基于 Linux 的专用 Plesk 服务器。该网站(例如example.com
)是实时的,由于通常需要进行大量修改,因此很难让它们直接在实时上运行。该服务器没有 SVN,只有 FTP。
我创建了一个子域staging.example.com
并通过 FTP 将文件放在那里,这样客户端就可以在将文件发布之前看到修改。不用说,记住与每个任务相关的每个文件、上传并在暂存区进行测试,然后再次回忆文件是什么并在实时服务器上再次执行这些操作,对我来说是一件非常痛苦的事情。我曾多次“成功失败”地完美地做到这一点。
我现在想使用 SVN。我已经设法使用 SSH(我拥有它的完全访问权限)和存储库(在/var/www/vhosts/example.com/svn/repos
)安装了 SVN,但进一步的设置对我来说似乎不明确。我希望设置如下:
- SVN 服务器(正在运行
svn.example.com
- 已完成) - 'master' 副本位于
staging.example.com
,位于/var/www/vhosts/example.com/staging
(不确定 'master' 在 SVN 中是否有某些特定含义。我只是指主要副本) - 工作目录位于
www.example.com
,以便/var/www/vhosts/example.com/httpdocs
我可以通过 svn update 使更改生效 - 我的计算机上的另一个工作目录,我将在这里进行实际工作。
我的计划是在我的计算机上进行工作,提交它以便在临时环境中进行测试,如果一切正常,则从实时站点进行更新以使我的更改生效。
请指导我如何实现这一点。另请注意,我是一名程序员,而不是系统管理员,所以我的计划可能存在一些问题。如果您认为是这样,请指出替代解决方案。我已经使用 SVN 很长时间了,但那只是 checkout-commit-update-resolve,没有设置。这就是我现在需要帮助的原因。
答案1
最简单的解决方案可能就是在三个地方检出代码(只检出主干,不检出分支等)。然后你只需要确保在正确的时间在正确的文件夹中执行“svn up”即可。
因此,请尝试以下步骤(评论描述了每个位)。
#SSH to the server as a user who can modify /var/www/vhosts/...
...
cd /var/www/vhosts/ # Since this is a live server, we need to make the
# changeover fast, so work in a new folder.
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository
# into a new folder called
# "staging".(Change "website"
# to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"
# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...
cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.
# This will make the svn version of the staging site live. Check that it works
# then do the same with the httpdocs folders.
更复杂的解决方案是使用两个代码分支,一个用于暂存,另一个用于实时。但这可能有点过头了……
答案2
ed 答案的扩展版本
前言
您必须掌握一些 Subversion 管理技能,才能让一切正常运行,并了解底层流程
脸
你必须有:
- 一个存储库
- 存储库中至少有两个分支( fe
STAGING
和LIVE
) - 带有嵌入式业务逻辑的提交后挂钩“在 STAGE 或 LIVE 目标上发布”
三个四个工作副本: DEV(您的本地工作区,绑定到 STAGING 分支)、 MERGE(您的本地工作区,绑定到 LIVE 分支)、 STAGING(在 STAGING 服务器上,绑定到 STAGING 分支)、 LIVE(在 LIVE 服务器上,绑定到 LIVE 分支)- 在 STAGING 和 LIVE 上安装 SVN 客户端
工作流程:
- 在 DEV 中编辑代码
- 提交 - 提交后钩子将更新 STAGING 上的 WC
- 在 STAING 上测试更改
- 将 STAGING 分支的变更合并到 MERGE WC(已测试)/有效地从 STAGING 分支合并到 LIVE 分支/
svnlook log | grep KEYWORD
提交 LIVE 分支更改 - 提交后钩子将使用合并的更改更新 LIVE 上的 WC(钩子可以通过提交消息中的关键字/ / 或 LIVE 分支中的更改检测此类提交/svnlook dirs-changed
/)
笔记:
你可以使用 FTP 或 scp ,而不是服务器上的 WC ssh & svn up
- 更少的 Subversion,更新网站带来的麻烦更多(删除的文件将不是通过 FTP|scp 删除并且共同的过程对我来说似乎更复杂)