程序介绍
目前操作还是基于cli命令方式,后期我会考虑集成到Dsso中,以web方式来操作。
本程序能满足你日常的项目上线更加的流程化、自动化。
本程序是由python所编写。
需要安装的模块如下表:
软件/模块
|
版本 |
备注 |
python |
2.7.10 |
|
paramiko |
1.16.0 |
用于ssh链接服务器 |
progressbar |
2.3-py2.7 |
google的一个进度条python模块 |
由于考虑到有些人不愿意安装python、这边也提供了使用exe执行实现自动化上线。
本人的计算机是win7 64bit 运行没问题。
程序结构
本程序由4-5个目录构成(bin、conf、log、script、dist、build):
-
bin:存放了主程序文件。
-
conf:存放了配置文件。
-
log:存放了运行过程中的日志文件。有两种日志文件一个是自己记录的log,还有一个是paramiko模块记录的exec_cmd_xx.log)。
-
script:存放了执行远程服务器shell的命令文件(有两个一个是为了停止服务cmd,另一个是启动服务stop_server.cmd)。
-
dist:如果是使用exe版就存在此目录 -> 存放执行主程序。
-
build:如果是使用exe版就存在此目录 -> 存放python编译后的文件。
程序流程图
python上传流程图
如何使用
- 进入conf文件夹,打开配置文件,配置相关的设置如(主机名、端口、用户名、密码等等)
- 进入script文件夹,分别打开停止和开启服务的命令文件,填写你需要执行的shell命令。一个命令需要写在一行里面,可以使用“#”注释。当然如果你不需要执行命令也可以不写。
- 进入bin文件夹,双击py。
注意:如果你是在dos窗口下执行需要 cd 到bin文件夹下运行 python upload_distribute.py。
- 进入conf文件夹,打开配置文件,配置相关的设置如(主机名、端口、用户名、密码等等)
- 进入script文件夹,分别打开停止和开启服务的命令文件,填写你需要执行的shell命令。一个命令需要写在一行里面,可以使用“#”注释。当然如果你不需要执行命令也可以不写。
- 进入dist文件夹,双击exe执行主程序。
执行过程展示
python上传执行过程图
相关文件展示
这里展示了配置两个模块:easy、bee。其中easy是完整的,而bee有一部分被注释所以在运行程序,检测的时候会报错。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
[easy]
host=192.168.137.12
port=22
username=root
password=oracle
# 需要上传的文件
local_file=C:\Users\Administrator\Desktop\index.html
# 你需要上传的文件名和目录
remote_file=/usr/local/apache-tomcat-8.0.30/webapps/examples/index.html
# 远程永久备份目录,文件上传后会创建一份备份
remote_backup_dir=/tmp/backup/new
# 远程临时备份目录,备份原来存在的文件。用于失败自动恢复
remote_ori_backup_dir=/tmp/backup/ori
# 启动服务命令文件
start_cmd_file=./../script/start_server.cmd
stop_cmd_file=./../script/stop_server.cmd
[bee]
#host = 192.168.137.11
#port = 22
#username = root
#password = oracle
# 需要上传的文件
local_file=C:\Users\Administrator\Desktop\a.txt
# 你需要上传的文件名和目录
remote_file=/tmp/a.txt
# 远程永久备份目录,文件上传后会创建一份备份
remote_backup_dir=/tmp/backup/
# 远程临时备份目录,备份原来存在的文件。用于失败自动恢复
remote_tmp_backup_dir=/tmp/tmp_backup/
# 启动服务命令文件
stop_cmd_file=./../script/start_server.cmd
start_cmd_file=./../script/stop_server.cmd
|
1. stop_server.cmd
|
# ip addr del 192.168.137.22/24 dev eth0
source/root/.bash_profile&&/bin/bash/usr/local/apache-tomcat-8.0.30/bin/shutdown.sh
|
2. start_server.cmd
|
# ip addr add 192.168.137.22/24 dev eth0
# rm -rf /www/sample
# cd /www && tar -zxf /www/sample.tar.gz
source/root/.bash_profile&&/bin/bash/usr/local/apache-tomcat-8.0.30/bin/startup.sh
|
细心的人注意到以上的shell脚本尽然 添加了 source /root/.bash_profile &&,我这样使用的原因是。使用python ssh登陆linux执行shell的时候,感觉他不会执行用户家目录下的.bash_profile程序。因此有些程序执行的路径就会不对。例如,我的系统中自带的jdk版本是:OpenJDK 1.6.0_24,而我自己的环境变量中设置的是使用 java 1.7.0_79。所以他会只用 系统自带的jdk,这样不是我所希望的。
动脑筋的人可能会说那我在命令文件中的最开始就执行一次 source /root/.bash_profile 在后面每行命令前就不需要添加 source /root/.bash_profile && 了?很不行的告诉你,刚开始我也是这样想的,可惜在开发试验的过程中这样是不行的。所以个人感觉,他每次执行就好像是另外开启了一个session一样。
这里只展示程序的主过程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
if__name__=='__main__':
try:
# 设置日志文件
time_str=str(time.time())
log_file='../log/upload_distribution_'+time_str+'.log'
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
filename=log_file,
filemode='w',
datefmt='%Y-%m-%d %X')
# 定义配置文件路径
conf_file_name='../conf/upload_distribute.conf'
# 选择配置文件section
conf,section=select_section(conf_file_name)
# 检测配置文件正确性
check_config(conf,section)
# 执行停止命令
stop_cmd_file=conf.get(section,'stop_cmd_file')
exec_file_cmd(conf,section,stop_cmd_file)
# 备份原文件
backup_ori(conf,section)
# 上传文件
upload(conf,section)
# 备份新上传的文件
backup_new(conf,section)
# 执行启动命令
start_cmd_file=conf.get(section,'start_cmd_file')
exec_file_cmd(conf,section,start_cmd_file)
# 监听服务是否启动成功
# 实行完毕暂停
os.system('pause')
except Exception ase:
print traceback.format_exc()
__err_exit_show_msg(str(e))
|
小技巧
在上面我展示的执行过程是模拟发布tomcat项目上传单文件的,应为java web项目可以打包成一个war包用户上传和部署。但是如果是使用 nginx/apache 项目的总不肯能一个个文件的上传发布吧。
这里我们以你的 nginx/apache 项目是在 /www 目录下为例来说明一下(这里说明的是全量发布):
- 你可以将你要发布项目打包,如:tar.gz
- 配置好配置文件。
- 可以在cmd 文件中,在启动服务前执行移除之前项目和解包命令如:
|
rm-rf/www/sample
cd/www&&tar-zxf/www/sample.tar.gz
# 执行启动服务的命令.....
|
当然这样在你的/www目录下应该留下一个sample.tar.gz项目文件,对于本人来说是不影响的。
在这里多啰嗦一句,如果你的项目是做了负载,当你上项目的时候可以先 down 掉一个服务器中的虚拟IP(也有可能是不虚拟IP)不让外界访问。down 掉IP的命令可以写在 stop_server.cmd 文件中,如果发布并启动服务成功你需要UP IP,UP IP的命令可以写在start_server.cmd文件中。
Python源代码
python源码:distribute_project_py.tar.bz2
EXE可执行文件:distribute_project_exe.tar.bz2
- 大小: 71.9 KB
分享到:
相关推荐
该Python自动化上线脚本通过一系列的命令操作实现了从开发环境到生产环境的自动部署过程,涵盖了文件拷贝、解压、同步等关键步骤。借助于 `os.system()` 函数,可以方便地执行系统级别的命令;同时,正则表达式的...
2019年python自动化运维进阶篇20期视频教程,百度网盘下载视频。 课程目录: ├─01第一天 │ 01.drf vue分享.mp4 │ 02.课程简单介绍.mp4 │ 03 helloworld.mp4 │ 04 httpRequest对象与httpResponse对象.mp4 │ ...
为了在远程环境中运行,可以使用`scrapy deploy`命令将项目上传到Scrapy Cloud,这是一个专门为Scrapy优化的云服务,提供了便捷的监控和调度功能。 此外,文件中可能还包含了处理异常、设置请求头和代理、处理反爬...
"基于python+Django的轻量级自动化办公系统"是一个典型的毕业设计项目,旨在利用Python和Django框架开发一个用于提升工作效率的办公自动化系统。 【系统功能】 这个轻量级自动化办公系统可能包含以下功能: 1. **...
例如,当设备上传特定数据时,规则引擎可以触发相应操作,如将数据存入数据库、发送通知或执行其他云函数。这极大地简化了业务逻辑的实现,提高了开发效率。 除了基本功能,tencentcloud-sdk-python-iot-3.0.579还...
1. **社交媒体**:在社交媒体平台,用于自动检测和过滤用户上传的不适当内容,保障社区环境健康。 2. **在线教育**:在教育平台,防止有害信息对学生造成影响。 3. **电子商务**:电商平台可以利用此服务对商品...
自动发布系统能够根据预定的规则和触发条件,自动完成代码的打包、验证、推送和上线,确保软件在不同环境下的稳定运行。通过自动化发布,团队可以更快地响应市场需求,同时减轻了手动操作的压力。 在提供的文件列表...
> * 魔鬼部署系统采用Python+Django+Vue+Element开发,有效提升运维效率。 > * 漂亮的操作界面、项目管理、快速上线、一键回滚。 > * 目前仅支持git项目部署、在上线过程中会放弃git当前所有的修改和创建,` 需要...
8. **文件上传与下载**:试题、答案可能涉及文件上传,Python的`werkzeug`库提供了处理文件上传的功能。 9. **错误处理与日志记录**:`logging`模块用于系统运行时的日志记录,有助于调试和追踪问题。 10. **单元...
Python优秀项目 基于Flask字符级卷积神经网络的细粒度的中文情感分析系统源码+部署文档+全部数据资料 将顾客打分+评论情感进行两极映射,基于数据自动标注+基于弱监督预训练的数据增强方式自动扩充+优化数据集,实验...
4. **通知公告**:发布和管理学生会的各类公告,支持文本、图片等多媒体形式。可以结合电子邮件服务,如SMTP,实现邮件通知。 5. **论坛交流**:创建讨论区,允许成员之间就活动、问题等进行交流。这可能涉及到论坛...
查询的结果采用的分页下载,下拉到浏览器底部会自动显示下一页,查询的结果可以按照最新上线,入住最多,价格升序或降序进行排序展示。用户查询到自己满意的房源后可以下单,用户下单后房东登录可以选择接单或者拒单...
总之,`django_fab_deployer-0.0.5`是Django开发者的一个强大工具,它通过封装和自动化部署过程,降低了项目上线的复杂度,使得开发者能够更专注于代码编写和功能实现,而非部署细节。对于那些经常处理多环境部署的...
【上线倒计时单页网站模板】是一种专为即将上线的网站设计的页面模板,它包含了一种简洁而直观的方式,让访客可以清楚地看到网站上线的剩余时间,并且具备了留言功能,使得用户可以在网站正式发布前进行互动与反馈。...
【课程内容列表】 .gitignore PEP8风格指南.md Python编程惯例.md Python参考书籍.md Python之禅.md ...软件测试和自动化测试.md Day91-100\97.电商网站技术要点剖析.md Day91-100\98.项目部署上线和性能调优.md
对于那些希望将项目快速上线而无需自行管理服务器的开发者来说,PythonAnywhere是一个理想的选择。 接下来,我们来看看这个“wagtail-pythonanywhere-quickstart”项目。它很可能包含了以下关键组件和步骤: 1. **...
开发者可以方便地将应用程序部署到SAE,实现快速上线和扩展。 2. **Python**: Python是一种高级编程语言,以其简洁明了的语法和强大的库支持而闻名。在Web开发领域,Python有多种框架可以选择,如Django、Flask等...
本教程将详细介绍如何在虚拟主机上上传并管理你的网站源码,帮助你顺利地将你的项目上线运行。 首先,理解虚拟主机的概念是必要的。虚拟主机是一种在单一服务器上划分出多个独立的、具有各自操作系统和资源分配的...
4.1 网站上线后的实际效果评估,包括用户量、活跃度、资源使用情况等。 4.2 对比传统教学方式,探讨网络教学平台在地理教学中的优势和改进空间。 5 结论 本项目成功地利用Python和Django构建了一个中学地理——...