使用git进行部署

3 投票
2 回答
745 浏览
提问于 2025-04-16 17:44

目前我有一堆git仓库,都是为了我想要部署的django网站,这些仓库的结构是这样的:

sn-static
sn-django
sn-templates
[etc]

然后我有一个超级仓库,把这些仓库作为子模块存储。关于部署,我想尽量保持简单,问一下这样做是否可行:

  • 从超级仓库克隆一个稳定的标签,这样就能在一个地方得到每个仓库的稳定版本。
  • 因为这些仓库的名字都是sn-*,我会把它们做成一个更友好的结构,比如用命令ln -s /path/to/super-repos/sn-static /home/site/media/来创建一个符号链接。
  • 然后我的nginx网页服务器(至少对于静态内容来说)可以直接指向/home/site/media。

由于我没有太多技术知识,我不太确定使用符号链接会不会影响速度或稳定性。我也在想,这样的部署方法是否可行,而不是使用像Capistrano这样的工具(我对它还没有经验)。

2 个回答

-1

当你的代码达到一个发布的阶段时,可以给它打个标签(Git Tag)。在你的服务器上,先克隆一次主分支,然后每次发布时,只需要拉取你想要的发布标签就可以了。

git pull [tag]
2

你可以考虑使用 pipvirtualenv 来安装你的软件包。特别是因为 pip 允许你 直接从 git 仓库安装特定的分支或标签。这样,你就可以用一个需求文件来管理所有的依赖项,包括你自己的软件包和其他人的应用程序。(想了解更多,可以看看 这篇文章。)

至于处理你的静态媒体,我更推荐使用 Django 自带的 staticfiles 应用,而不是链接多个目录,因为这样看起来更整洁,也更容易管理。

撰写回答