项目部署,环境搭建(pip/ makefile)
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
- -f 指定fabfile模块,默认当前目录下fabfile.py;
- -H, --hosts 指定远程主机,多个用' , '分隔,格式同 ssh的host_string,即 username@host;
- -l 显示当前fabfile中可用命令
- --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)相关推荐
- Linux上搭建SpringBoot项目部署环境和流程分享
Linux上搭建SpringBoot项目部署环境和流程分享 背景介绍 环境搭建 1.JDK 2.Mysql 数据库 3.Redis 4.Nginx 项目部署 总结 背景介绍 最近在开发一个 Sprin ...
- SpringBoot热部署环境搭建和原理分析
SpringBoot热部署环境搭建 插件会监控 classpath的资源变化 对类加载采用了两种类加载器(只重启开发人员编写的代码部分) 一. 现象 开发项目过程中,修改了某些代码后需要本地验证时,需 ...
- vuejs项目开发环境搭建(ESlint安装)
vuejs项目开发环境搭建(ESlint安装) vuejs项目开发环境搭建,有时候需要安装ESlint! eslint对ES6语法支持更好,可以通过eslint在团队开发中快速统一ES6的语法,精简代 ...
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
1.JDK的安装 首先下载JDK,这个从sun公司官网可以下载,根据自己的系统选择64位还是32位,安装过程就是next一路到底.安装完成之后当然要配置环境变量了. ----------------- ...
- VS中编译带Qt的他人项目,环境搭建及解决报错
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 VS中编译带Qt的他人项目,环境搭建及解决报错 一.安装VS及Qt及Qt VS Tools 二.报错及解决办法 1.未能找到程序集&q ...
- 0、Java项目开发环境搭建
Java项目开发环境搭建详解 工欲善其事,必先利其器. 一.环境搭建 1.JDK安装及环境变量配置 点击查看 2.Maven安装及环境变量配置 点击查看 Maven配置远程仓库地址: 打开ma ...
- centos7 vim查找_实战 | 一文掌握Centos7下搭建Django前后端分离项目部署环境
点击上方 "Python Web与Django大咖之路"关注我! 工 作 原 理 一.安装nginx 安装依赖包 yum install gcc gcc-c++ pcre-deve ...
- 【Java24】健康项目:环境搭建,预约管理(检查项和检查组管理)
文章目录 1. 技术架构和流程 2.数据库建模工具使用 3.环境搭建 3.1 项目结构 3.2 maven项目搭建 3.2.1 创建health_parent父工程 3.2.2 创建health_co ...
- Linux史上最全(30000字)知识点总结,含部署环境搭建步骤(建议收藏后看)
认识Linux 入门概述 我们为什么要学习Linux linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板.就如同在国内再搞一 ...
最新文章
- ACNO.15猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再
- Jsp实现网上定餐系统
- 树的更多相关算法-3
- msfconsole 无法启动,解决办法
- html下拉框传递参数,HTML通过事件传递参数到js详解及实例
- Codeforces Round #573 (Div. 2) C. Tokitsukaze and Discard Items
- RedHat6使用centos6的yum源
- STC学习:红外测试
- linux性能监测工具
- ioca0中断 pic单片机_PIC单片机学习心得
- WindowsXP_KB909667_x86_ENU
- java无经验_应届生没有项目经验怎么面试?(java篇)
- u-boot-2016.09 make工具之fixdep
- wed标准的基础知识
- 最近智商拙计,做做题补一下
- 5种小型设备上深度学习推理的高效算法
- 激光雷达与深度相机对比——以RS-LIDAR-16和Realsense D455为例
- python复数的概念及运算_python 复数运算
- 送给计算机老师平安夜贺卡,平安夜送给老师的平安祝福语
- Kubernetes ~ k8s 从入门到入坑。
热门文章
- MyEclipse代码提示快捷键和常用设置
- zw版【转发·台湾nvp系列Delphi例程】HALCON HighpassImage
- redhat安装yum的四种方法(修改)
- RAC环境下配置TAF (Final)
- 今天发现的好几个PP文字,不敢独享,gaga
- 大数据分析处理有哪些流程
- 大数据分析推动业务增长的方法有哪些
- 大数据分析应用在哪些方面上
- Cannot find class [***] for bean with name '***' defined in file[***]
- spring boot jpa的一对一关联(简洁)