Tornado + vue.js 前后端分离运行脚本
shell脚本部分:
#!/bin/bash 主脚本
(./cem-demo_publish_front)
(./cem-demo_publish_backend) #!/bin/bash 后端脚本
cd /data/www/cem-base-demo && git pull && ./restart_all.sh #!/bin/bash 前端脚本
cd /data/www/cem-front-demo && rm -fr dist && git pull && npm run build
#cp /data/www/cem-front/index.html /data/www/cem-base/static/index_prod.html
cp -fr /data/www/cem-front-demo/dist /data/www/cem-base-demo/ #!/bin/bash restart_all.sh
python restart_port.py all 9060 4
Python restart_port.py 文件
# encoding=utf8 import sys
import commands
import os
import re
import getpass
import time
import requests current_user = getpass.getuser() def get_pid(port):
output = commands.getoutput('ps aux|grep "[p]ython main.py"')
lines = output.split('\n')
ps_dict = {}
re_obj = re.compile(r'%s +(\d+).*main\.py (\d+)$' % current_user)
for line in lines:
result = re_obj.findall(line)
if not result:
continue
pid, port1 = result[0]
ps_dict[port1] = pid return ps_dict.get(str(port)) def usage():
print 'Usage: restart_port.py <port|all> <port_from> <process_number>'
sys.exit(1) def kill_port(port):
pid = get_pid(port)
if pid:
cmd = 'kill -9 %s' % pid
print 'killing process ...'
status, output = commands.getstatusoutput(cmd)
# time.sleep(2)
print 'process %s for port %s is killed' % (pid, port) def restart_port(port):
pid = get_pid(port)
if pid:
cmd = 'kill -9 %s' % pid
status, output = commands.getstatusoutput(cmd)
time.sleep(1)
cmd = 'nohup python main.py %s >> logs/p_%s.log &' % (
port, port)
# status,output = commands.getstatusoutput(cmd)
os.system(cmd) def check_port_is_health(port):
need_check = True
while need_check:
time.sleep(1)
try:
response = requests.get('http://127.0.0.1:%s' % port)
if response.status_code == 200:
need_check = False
else:
need_check = True
print 'response.status_code=', response.status_code
except Exception, e:
print 'port=', port, str(e)
need_check = True
if need_check:
print 'port=', port
restart_port(port) if __name__ == '__main__':
try:
port = sys.argv[1]
except:
usage() if port == 'all':
try:
port_from = int(sys.argv[2])
except:
usage() try:
process_number = int(sys.argv[3])
except:
usage() for port in range(port_from, port_from + process_number):
restart_port(port)
# check_port_is_health(port)
elif port == 'kill':
try:
port_from = int(sys.argv[2])
except:
usage() try:
process_number = int(sys.argv[3])
except:
usage() for port in range(port_from, port_from + process_number):
kill_port(port)
else:
restart_port(port)
check_port_is_health(port)
restart_port.py
Tornado + vue.js 前后端分离运行脚本的更多相关文章
- python django框架+vue.js前后端分离
本文用于学习django+vue.js实现web前后端分离协作开发.以一个添加和删除数据库书籍应用为实例. django框架官方地址:https://www.djangoproject.com/ vu ...
- 全宇宙首个.NET5+Vue.js前后端分离以及业务模块化快速开发框架【NetModular】发布~
最近.Net圈子很热闹啊,我也来凑凑,今天中午耗时长达半小时,把NetModular升级到了.NET5,详情查看分支https://github.com/iamoldli/NetModular/tre ...
- Flask & Vue 构建前后端分离的应用
Flask & Vue 构建前后端分离的应用 最近在使用 Flask 制作基于 HTML5 的桌面应用,前面写过<用 Python 构建 web 应用>,借助于完善的 Flask ...
- gin+vue的前后端分离开源项目
该项目是gin+vue的前后端分离项目,使用gorm访问MySQL,其中vue前端是使用vue-element-admin框架简单实现的: go后台使用jwt,对API接口进行权限控制.此外,Web页 ...
- vue+springboot前后端分离实现单点登录跨域问题处理
最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的.因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统.那就意味着做单点登 ...
- 一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器
一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 c ...
- docker-compose 部署 Vue+SpringBoot 前后端分离项目
一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker ...
- SpringBoot+Jpa+SpringSecurity+Redis+Vue的前后端分离开源系统
项目简介: eladmin基于 Spring Boot 2.1.0 . Jpa. Spring Security.redis.Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 ...
- 基于Vue的前后端分离项目实践
一.为什么需要前后端分离 1.1什么是前后端分离 前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功 ...
随机推荐
- webapp项目新建java class、webapp目录树结构
上一篇中我们介绍了IDEA.maven新建webapp项目的两种方式,分别是:在命令行中用模板创建.直接在IDEA中选择骨架创建. 但都存在一个问题:目录树不完整.有些人会不知道接下来该如何创建j ...
- CI/CD:Jenkins的流水线demo入门
在敏捷开发或者devops中,Jenkins常常作为CI/CD的主选平台,而流水线(Pipeline)是CI/CD的一个常见的体现形式,通过流水线,我们可以配置一个从编译打包,部署,自动化测试,到产品 ...
- LVS-NAT:搭建HTTP及HTTPS负载均衡集群
目录 LVS-NAT:搭建HTTP及HTTPS负载均衡集群 环境说明: 搭建NAT模式的HTTP负载集群 1. 配置好IP地址信息 2. DR上开启IP转发 3.DR上配置lvs-nat的转发机制 4 ...
- Azure Load Balancer(二) 基于内部的负载均衡来转发为访问请求
一,引言 上一节,我们使用 Azure Load Balancer 类型为外部的,来转发我们的 Web 服务.今天我们看看另一种类型为 “Internal” 的 Azure Load Balancer ...
- spring boot 中使用spring security阶段小结
1 项目结构图 2 AnyUserDetailsService package com.fengyntec.config; import com.fengyntec.entity.UserEntity ...
- PYTHON实战完整教程1-配置VSCode开发环境
一.安装 为降低学习门槛,保证学习目标的聚焦,我们在windows(使用WinServer2019虚拟机)上搭建开发环境.(系列教程最后结束时,也会部署到linux上) 打开Python官网 http ...
- 不能错过的分布式ID生成器(Leaf ),好用的一批!
本文收录在个人博客:www.chengxy-nds.top,技术资料共享,同进步 不了解分布式ID的同学,先行去看<一口气说出 9种 分布式ID生成方式,面试官有点懵了>温习一下基础知识, ...
- 如何有效防止sql注入
SQL注入攻击是黑客对数据库进行攻击常用的手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验参差不齐,相当大一部分程序员在编写代码的时候,没 ...
- 你可以 CRUD,但你不是 CRUD 程序员!
什么是务实 务实程序员他们总是在面临问题时,透过问题看到本质,从具体的场景出发,从大局着想,了解整个问题的来龙去脉,他们会对自己的行为负责,在项目面临问题时,他们不会撒手不管或者任由风险一步步扩大直至 ...
- 2020-06-21:ZK的哪些基础能力构建出了哪些上层应用?
福哥答案2020-06-21: 福哥口诀法:数负命Ma集配分(使用场景:数据发布订阅.负载均衡.命名服务.Master 选举.集群管理.配置管理.分布式队列和分布式锁) 数据发布订阅:dubbo的rp ...