在项目周期内需要经历三个过程,分别是开发、测试、部署。在这三个过程中,一般需要有三个环境分别与之对应,分别是:开发环境、测试环境和生产环境。为了维护这三个环境的一致性(至少是环境所提供的依赖库和功能一致)和环境的快速搭建,因此在项目的推进过程(环境搭建和代码部署)中,都强调实施的自动化。这时通过编写shell脚本可以满足这一需求。
像python这种脚本语言,有着强大的第三方开发插件库,能够提供丰富的功能。因此在项目的开发过程中,就避免不了引入非常多的第三方插件,丰富项目的功能并节省项目的开发周期。但是大量第三方插件的引入,也为项目环境的搭建部署增加了难度,如果通过人工完成环境的克隆是一个很困难的过程。如果我们在开发过程中,环境的搭建都是通过shell脚本初始化完成的,并且在需要引入新的插件过程中,及时调整shell脚本,那么即使在一个全新的环境中,再次进行环境的初始化,这也是一件非常容易的事情,这也就实现了环境的自动化部署。
结合前面讲解的《python虚拟环境virtualenv的搭建使用》中,python的virtualenv虚拟环境和插件自动安装指令,就可以通过编写shell脚本,轻松的完成环境的搭建。并且由于不同虚拟环境的隔离,新搭建的环境不会对原有的环境产生任何影响。
一、项目实战:搭建一个python环境
#!/bin/bash # 生成virtualenv脚本 set -e #创建virtualenv /usr/local/python27/bin/virtualenv /www/venv #安装依赖模块 unset http_proxy https_proxy /www/venv/bin/pip install psutil #设置代理 #export https_proxy=http://*.*.*.*:8124 #export http_proxy=http://*.*.*.*:8124 #安装依赖模块 /www/venv/bin/pip install lz4 protobuf msgpack-python pyzmq setproctitle mysql-connector-python python-memcached pymongo #安装Dpark /www/venv/bin/pip install https://github.com/douban/dpark/archive/master.zip VENV_PYTHON=/www/venv/bin/python #解决virtualenv环境下dpark无法在mesos集群中运行的问题 sed -i "1s|^.*$|#!$VENV_PYTHON|" /www/venv/lib/python2.7/site-packages/dpark/bin/executor27.py
部分扩展说明:
- psutil:psutil is a module providing an interface for retrieving information on all running processes and system utilization (CPU, memory, disks, network, users) in a portable way by using Python, implementing many functionalities offered by command line tools such as: ps, top, df, kill, free, lsof, free, netstat, ifconfig, nice, ionice, iostat, iotop, uptime, pidof, tty, who, taskset, pmap.It currently supports Linux, Windows, OSX, FreeBSD, Sun Solaris both 32-bit and 64-bit with Python versions from 2.4 to 3.3 by using a single code base. 使用案例:https://pypi.python.org/pypi/psutil
- lz4:This package provides bindings for the lz4 compression library by Yann Collet. 使用案例: https://pypi.python.org/pypi/lz4
二、项目实战:运行所需执行的python脚本
#!/bin/bash set -e cd `dirname $0` source /www/venv/bin/activate DATE=$1 #日志清理分析 python clean_day.py -m mesos --date $DATE python kpi_day_duration.py -m mesos --date $DATE
三、项目实战:环境的初始化
#!/bin/bash #Program: # Program for init warehouse env #History: # 2014/03/20 First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH #init data store path hadoop fs -test -d /data/project if [ $? = 0 ] then hadoop fs -rm -r /data/project fi hadoop fs -mkdir /data/project/eventlog hadoop fs -mkdir /data/project/userlog hadoop fs -mkdir /data/project/definelog #init oozie workspace for load data into hive hadoop fs -test -d /user/oozie/workspaces/adminspaces/init_partition if [ $? = 0 ] then hadoop fs -rm -r /user/oozie/workspaces/adminspaces/init_partition fi hadoop fs -mkdir /user/oozie/workspaces/yidongspaces/init_partition hadoop fs -put ./Oozie/script.q /user/oozie/workspaces/adminspaces/init_partition/script.q hadoop fs -put ./Oozie/workflow.xml /user/oozie/workspaces/adminspaces/init_partition/workflow.xml #init hive database and tables hive -f ./hive/hive.q
四、项目实战:数据录入
#!/bin/bash datestart=$1 dateend=$2 beg_s=`date -d "$datestart" +%s` end_s=`date -d "$dateend" +%s` while [[ "$beg_s" -le "$end_s" ]] do /www/venv/bin/python CleanData.py -d $(date -d @$beg_s +"%Y%m%d%H") beg_s=$((beg_s+3600)) done
相关推荐
这是一个Shell脚本,它允许Django执行基于python的框架。 Shell脚本是一种计算机程序,旨在由Unix Shell(命令行解释器)运行。 Shell脚本的各种方言被认为是脚本语言。 Shell脚本执行的典型操作包括文件操作,程序...
为了解决这个问题,我使用Selenium编写了一个python脚本来浏览GitHub页面,以为您创建和初始化一个新的Repository。 先决条件: Selenium要安装: pip install selenium Chrome浏览器ChromeSelenium驱动程序要安装...
基于官方的nginx Docker映像和h5bp,具有模板和自定义初始化脚本支持。 基本原理 我想要一个满足以下条件的图像: 扩展。 支持从环境变量评估的配置文件模板,如。 它的基本配置源于概述的最佳实践。 可以在启动...
gunicorn-init 该项目为项目提供了一个初始化脚本。 您可以通过设置多个配置文件来运行多个 python web 应用程序。基本用法您将在树目录中找到如何使用此脚本的示例。 例如, CONF_DIR目录(默认为/etc/gunicorn )...
6.18 用_ _init_ _参数自动初始化实例变量 266 6.19 调用超类的_ _init_ _方法 267 6.20 精确和安全地使用协作的超类调用 270 第7章 持久化和数据库 273 引言 273 7.1 使用marshal模块序列化数据 275 7.2 ...
1.2.2 使用Python Shell 5 1.3 开始使用Python——字符串 6 1.3.1 字符串概述 6 1.3.2 为什么需要引号 6 1.3.3 为什么有3种类型的引号 7 1.3.4 使用print()函数 7 1.3.5 理解不同的引号 8 1.4 串联两个字符串 10 1.5...
10.14 创建新的Python环境 10.15 分发包 第十一章:网络与Web编程 11.1 作为客户端与HTTP服务交互 11.2 创建TCP服务器 11.3 创建UDP服务器 11.4 通过CIDR地址生成对应的IP地址集 11.5 创建一个简单的REST...
│ │ └─Module.php 初始化模块脚本 │ └─ ├─web 项目入口目录 │ ├─dev.php 开发入口脚本 │ ├─prod.php 生产入口脚本 │ └─test.php 测试入口脚本 │ ├─composer.json ...
封闭式脚本初始化环境 ./install.sh 文件.pre-commit-config.yaml est untlise lancer应用程序 MongoDB数据库的环境变量和交互作用 ./env-local.sh 皮尔斯·兰斯(Puis lancer) ./startup.sh AZURE部署 蔚蓝海岸 ...
bootstrap.py独立脚本,用于安装基于conda的python环境,该脚本允许初始化隔离的python环境。 ( ) bootstrap.py的安装后回调,使用诗歌进行安装: 您与项目相关的命令 通过python依赖机制,可点击和任何可选的...
初始化Python虚拟环境:请注意,我最终不得不使用命令$ source initialize-pyenv.sh而不是$ sh 。 电报Bot潮汐检查器( ) Telegram机器人从python网络覆盖的页面向Telegram中的频道发送消息,其中包含来自Vilas ...
1. 随机初始化权重并重新训练: ```shell python train.py --dataset photo2cartoon ``` 2. 加载预训练参数进行训练: ```shell python train.py --dataset photo2cartoon --pretrained_model pretrained_models ``...
init_env_setup.sh是一个脚本,用于初始化和设置运行django项目所需的环境。 运行init_env_setup.sh ./init_env_setup.sh -p [PROJ_GIT_REPO] -u [PROJ_NAME] 它将安装nginx,git,pip,gunicorn,virtualenv,...
简述 ...sys.path 从这些位置初始化: 包含输入脚本的目录(或当前目录,当没有指定文件时) PYTHONPATH(目录名列表,与 shell 变量 PATH 语法相同) 与安装相关的默认值 >>> import sys >>> sys
应该安装在/ var / lib / eg_daemon / eg_daemon.init-SysV初始化脚本; 应该安装在/etc/init.d中启动eg_daemon.py时,将创建以下两个文件: /var/run/eg_daemon.pid-此文件将包含守护进程的PID; 守护程序正常停止...
初始化 用于将 Google Compute Engine Debian 实例配置为使用 Google Cloud Platform 的开发人员环境的 bash 启动脚本。 这在您需要定期启动用于开发和测试的实例作为使用您自己的本地机器的替代方案时非常有用。 该...
5.3.1. 初始化并开始类编码 5.3.2. 了解何时去使用 self 和 __init__ 5.4. 类的实例化 5.4.1. 垃圾回收 5.5. 探索 UserDict:一个封装类 5.6. 专用类方法 5.6.1. 获得和设置数据项 5.7. 高级专用类方法 5.8. ...
初始化(构建)dbutils容器映像(需要通过brew / apt / yum安装realpath) $ ./dbutil.sh build 配置(如果需要)并将数据库模式升级到最新版本 $ ./dbutil.sh upgrade 删除架构并删除所有IaC数据 $ ./dbutil.sh...
5、创建两个shell脚本,一个用来创建主索引、一个用来创建增量索引。 13 ⑴、主索引更新脚本 13 ①、创建脚本build_main_index.sh: 13 ②、赋予主索引更新脚本可执行权限: 13 ③、每天凌晨定时重建主索引: 13 ⑵...