2019独角兽企业重金招聘Python工程师标准>>>

1 python包管理--pip

  • pip search 你想要的包 # 查询相关包
  • pip install 包名 [==版本号]; # 指定版本可选
  • pip freeze >requires.txt # 导出当前环境下的配置列表
  • pip install -r requires.txt # 根据配置列表文件安装指定版本包

2 makefile 脚本环境搭建

unix系上脚本可以做到自动化运维;执行make,会自动寻找当前目录下的makefile/Makefile文件;

makefile语法:

目标 : 条件

    脚本

举例:

clean:

    find . -name '*.pyc' -delete        

命令行执行 make clean即可

3 Fabric 自动化运维利器

官网 http://www.fabfile.org/

入门文档 http://docs.fabfile.org/en/1.10/tutorial.html

  • 命令行fab
  1. -f 指定fabfile模块,默认当前目录下fabfile.py;
  2. -H, --hosts 指定远程主机,多个用' , '分隔,格式同 ssh的host_string,即 username@host;
  3. -l 显示当前fabfile中可用命令
  4. --colorize-errors  错误信息作色

举个栗子~

#!/usr/bin/env python
# encoding: utf-8'''
makefile的fabfile移植版
'''
from fabric.api import run, cd, settings, abort, env
from fabric.contrib.console import confirmclass DeployClass():'''部署脚本'''def init_constant(self, *arg):'''初始化常量'''self.PREFIX_PATH = '/data/www/'self.ALL_PATH = [self.PREFIX_PATH + i.strip() for i in arg if i]self.CTL = 'supervisorctl -s unix:///tmp/supervisor.sock 'def update(self, *arg):'''更新当前分支下代码'''# 初始化self.init_constant(arg)# 校验并去除无效路径self.pre_test()for project_path in self.ALL_PATH:with cd(project_path):branch = self._get_current_branch()if not branch: continuerun('git pull origin %s' % branch)def oper_supervisor(self, action, no_start, no_end, prefix):'''多进程服务操作(start/stop/restart):params action 操作:params no_start 进程编号起:params no_end  进程编号止:params prefix  进程名称前缀'''assert action in ('start', 'stop', 'restart')self.init_constant()for no in range(int(no_start), int(no_end)+1):cmd = '%s %s%s' % (action, prefix, no)run('%s %s' % (self.CTL, cmd))def oper_supervisor_multi(self, action, *process):'''多进程服务操作(start/stop/restart):params action 操作:params process 进程名称,...'''assert action in ('start', 'stop', 'restart')self.init_constant()for pro in process:cmd = '%s %s' % (action, pro)run('%s %s' % (self.CTL, cmd))@staticmethoddef _get_current_branch():'''获取当前路径下的分支名称'''# res = run("git branch|grep '^\*'|awk -F'*' 'print {$2}'")with settings(warn_only=True):print '------------update[%s]start-----------' % run('pwd')res = run('git branch')if res.failed:if confirm('[%s] is not a git rep, want exit?' % run('pwd')):abort('ok, you stop it !')else:return Nonebranch = run("git branch|grep '^\*'|awk -F'*' '{print $2}'")return branchdef pre_test(self):'''先行测试'''print '------------>all_path-----------%s'% self.ALL_PATHwith settings(warn_only=True):# 测试路径是否合法for _path in self.ALL_PATH:res = run('test -d %s' % _path)if res.failed:if confirm('[%s] not exist! end this?' % _path):abort('ok, you stop it !')else:print '============rm path [%s]================' % _pathself.ALL_PATH.remove(_path)  # 继续执行时,剔除无效路径DC = DeployClass()def update(*arg):'''更新'''DC.update(*arg)def oper_supervisor(action, no_start, no_end, prefix):'''操作项目的多个进程'''DC.oper_supervisor(action, no_start, no_end, prefix)def oper_supervisor_multi(action, *process):'''操作多个进程的项目'''DC.oper_supervisor_multi(action, *process)

转载于:https://my.oschina.net/niuqingshan/blog/629830

项目部署,环境搭建(pip/ makefile)相关推荐

  1. Linux上搭建SpringBoot项目部署环境和流程分享

    Linux上搭建SpringBoot项目部署环境和流程分享 背景介绍 环境搭建 1.JDK 2.Mysql 数据库 3.Redis 4.Nginx 项目部署 总结 背景介绍 最近在开发一个 Sprin ...

  2. SpringBoot热部署环境搭建和原理分析

    SpringBoot热部署环境搭建 插件会监控 classpath的资源变化 对类加载采用了两种类加载器(只重启开发人员编写的代码部分) 一. 现象 开发项目过程中,修改了某些代码后需要本地验证时,需 ...

  3. vuejs项目开发环境搭建(ESlint安装)

    vuejs项目开发环境搭建(ESlint安装) vuejs项目开发环境搭建,有时候需要安装ESlint! eslint对ES6语法支持更好,可以通过eslint在团队开发中快速统一ES6的语法,精简代 ...

  4. Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建

    1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ----------------- ...

  5. VS中编译带Qt的他人项目,环境搭建及解决报错

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VS中编译带Qt的他人项目,环境搭建及解决报错 一.安装VS及Qt及Qt VS Tools 二.报错及解决办法 1.未能找到程序集&q ...

  6. 0、Java项目开发环境搭建

    Java项目开发环境搭建详解   工欲善其事,必先利其器. 一.环境搭建 1.JDK安装及环境变量配置 点击查看 2.Maven安装及环境变量配置 点击查看 Maven配置远程仓库地址:   打开ma ...

  7. centos7 vim查找_实战 | 一文掌握Centos7下搭建Django前后端分离项目部署环境

    点击上方 "Python Web与Django大咖之路"关注我! 工 作 原 理 一.安装nginx 安装依赖包 yum install gcc gcc-c++ pcre-deve ...

  8. 【Java24】健康项目:环境搭建,预约管理(检查项和检查组管理)

    文章目录 1. 技术架构和流程 2.数据库建模工具使用 3.环境搭建 3.1 项目结构 3.2 maven项目搭建 3.2.1 创建health_parent父工程 3.2.2 创建health_co ...

  9. Linux史上最全(30000字)知识点总结,含部署环境搭建步骤(建议收藏后看)

    认识Linux 入门概述 我们为什么要学习Linux linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板.就如同在国内再搞一 ...

最新文章

  1. ACNO.15猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再
  2. Jsp实现网上定餐系统
  3. 树的更多相关算法-3
  4. msfconsole 无法启动,解决办法
  5. html下拉框传递参数,HTML通过事件传递参数到js详解及实例
  6. Codeforces Round #573 (Div. 2) C. Tokitsukaze and Discard Items
  7. RedHat6使用centos6的yum源
  8. STC学习:红外测试
  9. linux性能监测工具
  10. ioca0中断 pic单片机_PIC单片机学习心得
  11. WindowsXP_KB909667_x86_ENU
  12. java无经验_应届生没有项目经验怎么面试?(java篇)
  13. u-boot-2016.09 make工具之fixdep
  14. wed标准的基础知识
  15. 最近智商拙计,做做题补一下
  16. 5种小型设备上深度学习推理的高效算法
  17. 激光雷达与深度相机对比——以RS-LIDAR-16和Realsense D455为例
  18. python复数的概念及运算_python 复数运算
  19. 送给计算机老师平安夜贺卡,平安夜送给老师的平安祝福语
  20. Kubernetes ~ k8s 从入门到入坑。

热门文章

  1. MyEclipse代码提示快捷键和常用设置
  2. zw版【转发·台湾nvp系列Delphi例程】HALCON HighpassImage
  3. redhat安装yum的四种方法(修改)
  4. RAC环境下配置TAF (Final)
  5. 今天发现的好几个PP文字,不敢独享,gaga
  6. 大数据分析处理有哪些流程
  7. 大数据分析推动业务增长的方法有哪些
  8. 大数据分析应用在哪些方面上
  9. Cannot find class [***] for bean with name '***' defined in file[***]
  10. spring boot jpa的一对一关联(简洁)