一个网站的诞生10--自动化部署

所谓自动部署就是说,如果用10台机器跑tornado程序提供Web服务,它们上面的代码都是一样的,这也叫生产环境。在公司写新代码,写好了,测试通过,这叫开发环境。然后执行自动部署程序,它把新代码提交到版本管理服务器,然后连上生产环境的10台服务器,让它们更新代码,再重启tornado程序,新代码就上线了,用户看到的就是新发布的网站。

自动部署的关键是两个东西,一个是版本服务器,一个是远程操作。

推荐用git版本服务器,推荐寥雪峰的git教程,写得非常清晰,是目前为止我见到的最容易入手的,链接在这里http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

推荐用python fabric远程操作,http://www.fabfile.org/

做自动化部署,第一步是创建一个公网IP的git版本服务器,这样10台web server能访问git服务器。然后在开发环境把代码提交到git版本服务器。这个过程请参考寥同学的教程,这里就不重复了。

第二步,ssh登录到任意一台web server,手动执行命令,从git服务器更新代码,然后把tornado程序开起来,记下这个过程的所有步骤。

第三部,用fabric把第二步的步骤写一遍,填上10台web server的ip地址,将来就可以一次性更新10台机器了。

zuijiacanting.com的自动化部署脚本类似如下,remote_deploy.py:

#!/usr/bin/env python

#! -*- coding:utf-8 -*-

from __future__ import with_statement

import os

from fabric.api import *

#ip of web server

env.hosts=[‘106.111.111.111‘]

def commit_to_remote():

d = os.path.abspath("xx/yy")

local("cd %s;git push origin master" % d)

def deploy_zjct():

code_dir="/home/xxx/yyy"

with cd(code_dir):

run("sudo git pull origin master")

run("sudo reboot")

在开发环境下,如果新代码已经准备好了,执行命令"fab -f remote_deploy.py commit_to_remote",把新代码提交到git版本服务器,然后再执行"fab -f remote_deploy.py deploy_zjct",fabric以ssh的方式登录到web server,更新代码,然后重启。重启运行新代码。不重启也可以,kill掉tornado进程,自动监控会重启tornado进程,重启后也是运行新代码。如果要更新多台机器,在env.hosts把ip地址加进去就可以了。

fabric能做的事情非常多,不仅仅是上面这么简单,可以实现各种酷炫的特效。

一个网站的诞生10--自动化部署

时间: 2024-10-07 23:07:45

一个网站的诞生10--自动化部署的相关文章

一个网站的诞生09--自动监控

部署Web App,需要买一个域名,我推荐http://www.namecheap.com/,用信用卡或者paypal付款,一年10刀. 如果需要VPS,买Linode.com的,它家新推出每月10刀的主机,性能绝佳,如果选择东京的机房,从大陆访问很快,用海外的主机不需要备案,这是最大的卖点. 网站的tornado代码运行了,网站可以访问了.有时候网站会因为各种原因崩溃,比如被攻击,代码bug,流量太大等等. 这时候就需要一个自动监控脚本.这个脚本监控网站的tornado进程,每隔几秒检测一次进

一个网站的诞生05--如何把网站做到估值过亿

网站的意义,在于创造对用户有价值的东西,估值是网站意义的一个衡量指标,提升估值的手段,也就等价于把网站做得更有用. 如何计算一个网站的估值?国际标准是每个活跃用户的价值是40刀左右,Whatsapp卖了190亿刀,它有4.5亿活跃用户.中国略有差别,微信的估值是40亿~50亿刀,有3亿用户,但中国的用户商业价值不够高,人均GDP太低,所以每个活跃用户的价值是10-15刀,也就是RMB60-90元.如果网站(包括同名App)要想估值过亿,要有一百万的活跃用户.另一种估算方式是,行业第二名的估值是第

一个网站的诞生01--缘由

大概在半年前,我觉得需要做一个网站,寻找新奇有趣的餐厅. 喜欢美食的人,在中意餐厅吃久了,总想找新餐厅换换口味,试试新菜和新的食材. 寻找新餐厅并不容易,甚至是艰难.由于众所周知的原因,网上流传的餐厅文,美食文,常常不可信,编排越精美,越可能是软广---大家天天都很忙,很少有闲心做这么精美的文宣.我跟这些美食文找过,失望大于希望,成功率不到一半.而且,魔都太大,打听到的餐厅,总要去试吃一下,来来回回总跑上几个小时吧?时间很宝贵,这么做太不划算了! 上海的餐厅大众点评网收集的最齐全,如果我把它上面

一个网站的诞生04--抓取一个餐厅的某个月的全部评论

第一个Spider是抓上海的城市id,顺带抓它的下一级行政区id. 第二个Spider是抓上海的Top一万家餐厅的Shopid. 本文是第三个Spider,根据一个餐厅的Shopid,抓取它在某个月内的全部评论. 三个Spider的累加效果,就是抓取任意一个城市的TopN家餐厅的全部评论.第三个Spider修改一下,还可以做到只抓取某天的评论,只抓取某人的评论,从抓取的角度看就全齐了. 经过前两次的spider热身,这次做个复杂点的. URLhttp://www.dianping.com/sho

一个网站的诞生02--用Scrapy抓取数据

如果想抓数据,就需要有爬虫程序,业内叫crawler或者spider. 有各种语言版本的开源爬虫,c++, Java,  php,在github上搜一下,以"spider c++"为关键字,有245个开源爬虫,以"spider java"为关键字,有48个.那python呢?156个. 爬虫技术在业界已经很成熟了,有很多开源框架,在它们的帮助下写爬虫可以很快,几个小时就能写一个不错的东东用.爬虫技术也会很复杂,如果要做分布式抓取和全文检索,一般使用Nutch. 最有

一个网站的诞生03--抓取评论数最多的一万家餐厅

在大众点评网上,有很多种方式对餐厅进行排序,比如http://www.dianping.com/search/category/1/10/o10,是上海全市按照评论总数最多对餐厅进行排序,下面有50个分页,也就是上海历年累计评论综述最多的750家餐厅.但只有750家,少了点.上海有18个区,逐区点击的话,每区都会显示前750家餐厅,比如这个http://www.dianping.com/search/category/1/10/r802o10,是浦东新区八佰伴地段的前750家.上海现在有十万家餐

一个网站的诞生08-- 在Web App嵌入地图

LBS-Location Based Service,基于位置的服务.如果要在Web App嵌入地图,差不多可以做成LBS了.zuijiancanting.com的设计理念,是把Top餐厅放在地图上,那么当你到某个地方逛逛,或者有约会,拖拉一下地图就可以找到合适的餐厅. 提供地图API服务的公司很多,国外有GoogleMap,OpenStreetMap,国内有百度地图,腾讯地图,高德地图.GoogleMap由于某些原因不能正常使用,不在选择之列.我最先考虑的是OpenStreetMap,因为除了

一个网站的诞生06-- ORM

网站上的数据,存在数据库里.一般用Mysql,也有用sqlite,Postgre.操作数据库要会SQL语言,这个有点麻烦,常常需要查手册.此外,每家数据库在实现SQL语言的时候,常常会加料,增加一些自己独有的东西.而且,SQL语言不是面向对象/基于对象,很多抽象更高的东西不能使用. 于是,ORM就出现了. ORM是Object Relation Model,也就是 对象关系映射.简而言之,ORM将将数据库的记录表示成对象.选择一个好的ORM,由它的层面解决数据库和SQL语言问题,可以很开心.程序

一个网站的诞生07-- Tornado Web Server

用Spider抓取数据,然后再做各种处理,然后放到web页面供大家使用. 那么,就需要一个Web Server. 几乎每种语言都有一大堆Web Server开发框架,Python也不例外,比如这里http://www.zhihu.com/question/20706333.廖雪峰同学还有个python的教程http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014023080708