Django 部署到 Webfaction.com 的过程

shangdawei 阅读:74 2025-01-19 22:14:33 评论:0

为了简化我的 django 应用程序到 webfaction.com 的部署过程,我有一个主(工作副本)和一个开发分支。

目前我正在做以下事情:

  1. 在我的本地开发环境中更改我的开发分支
  2. 当更改生效时,运行本地服务器进行测试,然后与我的主分支合并
  3. git push 所以代码在我的远程仓库中(这还有其他问题,例如我还没有完全解决的密码, key 等)(我也不相信它可以将代码发送到 webfaction 而且我不是非常喜欢我目前使用过的任何 FTP 服务)
  4. SSH 进入我的 webfaction 服务器并执行 git pull 和 git merge
  5. 测试是否一切正常(从来没有)
  6. 进行必要的更改以使一切恢复正常
  7. 提交我为修复所有问题而必须做的任何更改,然后推送回远程仓库
  8. 返回我的开发环境并将代码与生产代码同步
  9. 为下一个特征冲洗重复

很明显,我错过了高效的开发培训,据我所知,我只将 django 作为业余爱好项目工作了几个月。

任何人都可以建议一个更有利于理智发展的django部署过程吗?

请您参考如下方法:

我强烈建议 Fabric 处理您对 WebFaction 的部署: http://docs.fabfile.org/en/1.11/tutorial.html

通过使用 Fabric,您可以从本地终端部署代码和执行其他服务器端操作,而无需手动通过 ssh 连接到服务器。首先安装 Fabric:

pip install Fabric 

在您的项目根文件夹中创建 fabfile.py。这是一个可以帮助您入门的示例 fabfile:

from fabric.api import task, env, run, cd 
from fabric.context_managers import prefix 
 
env.hosts = ('wf_username@wf_username.webfactional.com',) 
env.forward_agent = True 
 
MANAGEPY = '~/webapps/my_project/code/my_project/manage.py' 
PY = '~/webapps/my_project/env/bin/python2.7' 
 
@task 
def deploy(): 
    with cd('~/webapps/my_project/code/'): 
        with prefix('source production'): 
            run('git pull --rebase origin master') 
            run('pip install -r requirements.txt') 
            run('{} {} migrate'.format(PY, MANAGEPY)) 
            run('{} {} collectstatic --noinput'.format(PY, MANAGEPY)) 
            run('touch my_project/my_project/wsgi.py') 

您可以从您的终端运行 fab 任务:

fab deploy 

在我看来,直接在服务器上更改代码是一种不好的做法。 Fabric 可以改进您的开发流程,以便您仅在本地编辑代码、快速部署并测试它们。


标签:WEB
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号