前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何快速的部署我的博客(Django)代码

如何快速的部署我的博客(Django)代码

作者头像
the5fire
发布2019-02-28 17:11:16
9920
发布2019-02-28 17:11:16
举报

上篇文章介绍了我博客的一个架构,这里具体说下我是如何快速的通过git和fabric来持续部署我的博客的。

先来说一个场景,我前几天上线了一个 OSQA <http://qa.the5fire.com>_ 系统,为了方便以后来的网友在博客留言里提问时看到我有这样的一个系统,所以我决定在留言框上方加一句话,也就是现在在留言上方看到的那个文案:'技术问题还可以到the5fire技术问答上提问'。

那怎么做呢,从开发到上线,过程很简单:

  • 先打开代码,找到文章正文页模板,在留言上方加上这句话。保存代码。
  • git add -p ;git commit; git push;
  • fab re_deploy

然后本地的代码就运行到线上了,是不是很简单?

简单的背后一定是有复杂的支撑,不过我这小小的博客不用很复杂。下面开始阐述下背后的原理

搭建git服务器

不要被题目吓到,只是一个简单的git仓库,基于本地协议(文件系统)。在本地的话就是这样访问: git clone file:///tmp/project.git

在服务器上的话就是: git clone root@1.1.1.1:/tmp/project.git 这其实就是远程的文件系统访问。

那么怎么生成一个.git的文件呢,这其实叫做纯仓库副本,生成命令如下:

.. code::

代码语言:javascript
复制
# 在你项目所在目录
git clone --bare project project.git

之后再把你的project.git上传到服务器上,假设路径为 /tmp/project.git , 这时到你的项目目录中,添加remote origin: git remote add origin root@服务器ip:/tmp/project.git

到此你的git服务器就搭建好了,你本地可以直接push代码到服务器上。

用fabric快速部署

所谓部署,其实就是把你最新的代码放到运行的环境中去,然后重启服务。

上篇文章有提到,我用supervisor来管理我的Django进程,所以我需要做的就是在部署代码的地方pull一下最新的代码然后重启supervisor,不需要考虑virtuanlenv的事情。 过程就是这样,具体看代码就行了:

.. code:: python

代码语言:javascript
复制
#coding:utf-8

from fabric.api import run, roles, cd, parallel, task
from fabric.state import env

www_path = '/yourhome/virtuanlenv/project'
supervisord_bin_path = '/yourhome/virtualenv/bin'
supervisord_conf_file = '/yourhome/virtuanlenv/project/supervisord.conf'

env.roledefs = {
    'remote': ['root@yourserverip']
}

@task
@parallel(22)
@roles('remote')
def top():
    run("top -b | head -n 1")


def git_co(path, branch='master'):
    with(cd(path)):
        run('git reset --hard && git pull -f && git checkout %s' % branch)


def supervisord_restart(path, conf_path):
    with(cd(path)):
        run('./supervisorctl -c %s restart all' % (conf_path, ))


@task
@roles('remote')
def re_deploy(branch='master'):
    git_co(www_path, branch=branch)
    supervisord_restart(supervisord_bin_path, supervisord_conf_file)

综述

这就是一个完整的过程,在这个过程之上,从开发小功能点/修改BUG到上线,其实用不了几分钟。当然如果考虑到高可用还有很多事情要做。这只是一个开端。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-04-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 搭建git服务器
  • 用fabric快速部署
  • 综述
相关产品与服务
持续部署
CODING 持续部署(CODING Continuous Deployment,CODING-CD)用以管理软件在经过构建之后的发布和部署交付过程,可以无缝对接上游 Git 仓库、制品仓库实现全自动化部署,同时支持 Webhook 等外部对接能力,方便集成各种开发、运维工具。在配以合适的技术架构、运维工具的基础上,可以方便地实现蓝绿发布、灰度发布(金丝雀发布)、滚动发布、快速回滚等功能。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档