Django 部署到 Webfaction.com 的过程

Any*_*ing 3 django web-deployment webfaction python-3.x

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

目前我正在做以下事情:

  1. 在我的本地开发环境中更改我的开发分支
  2. 当更改生效时,使用运行本地服务器进行测试,然后与我的主分支合并
  3. git push 所以代码在我的远程仓库中(这还有其他问题,如密码、密钥等,我还没有完全解决)(我也不相信它可能将 scp 代码发送到网络派系,我不是真正的粉丝到目前为止我使用过的任何 FTP 服务)
  4. 通过 SSH 连接到我的网络服务器并执行 git pull 和 git merge
  5. 测试是否一切正常(从来没有)
  6. 进行所需的任何更改以使一切恢复正常
  7. 提交我必须做的任何更改来修复所有内容,然后推回远程仓库
  8. 返回我的开发环境并将代码与生产代码同步
  9. 为下一个功能重复冲洗

显然,我错过了高效的开发列车,据记录,我只作为业余项目使用了 django 几个月。

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

ozr*_*983 5

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

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

pip install Fabric
Run Code Online (Sandbox Code Playgroud)

在您的项目根文件夹中创建 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')
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令从终端运行 fab 任务:

fab deploy
Run Code Online (Sandbox Code Playgroud)

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