2012年04月13日 星期五 14:42
场景:一个django项目,开发环境使用sqlite,生产环境使用mysql,希望在修改配置的前提下,实现一个项目两套环境的自动化部署,求解决方案。
感谢夏老师!!
2012年04月14日 星期六 13:54
我使用过的自动化部署方案,fabric是最酷的,足够灵活,强大。
一个项目,一个dev环境,一个release环境,用fabric就可以轻松实现。具体思路可以这样:
1、目录结构
${WWWROOT}/dev.xxx.com/current
${WWWROOT}dev.xxx.com/dev-201204141330
其中current是dev-201204141330的软链接
${WWWROOT}release.xxx.com/current
${WWWROOT}release.xxx.com/release-201204141330
其中current是release-201204141330的软链接
2. 将代码和配置分开
${WWWROOT}shared/settings-dev.py
${WWWROOT}shared/settings-release.py
3. 使用fabric
from fabric.api import run, env, require, sudo, cd import datetime, random def dev(): env.user = 'your username' env.hosts = ['dev.xxx.com'] def relase(): env.user = 'your username' env.hosts = ['release.xxx.com'] def deploy_dev(): run("ln -sf shared/settings-dev.py dev.xxx.com/current/settings.py") def deploy_release(): run("ln -sf shared/settings-release.py release.xxx.com/current/settings.py")
4. 执行发布
fab dev deploy_dev fab_dev deploy_release
Zeuux © 2024
京ICP备05028076号