使用git进行部署
目前我有一堆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
你可以考虑使用 pip
和 virtualenv
来安装你的软件包。特别是因为 pip 允许你 直接从 git 仓库安装特定的分支或标签。这样,你就可以用一个需求文件来管理所有的依赖项,包括你自己的软件包和其他人的应用程序。(想了解更多,可以看看 这篇文章。)
至于处理你的静态媒体,我更推荐使用 Django 自带的 staticfiles 应用,而不是链接多个目录,因为这样看起来更整洁,也更容易管理。