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 文件

  1 # encoding=utf8
  2
  3 import sys
  4 import commands
  5 import os
  6 import re
  7 import getpass
  8 import time
  9 import requests
 10
 11 current_user = getpass.getuser()
 12
 13
 14 def get_pid(port):
 15     output = commands.getoutput(‘ps aux|grep "[p]ython main.py"‘)
 16     lines = output.split(‘\n‘)
 17     ps_dict = {}
 18     re_obj = re.compile(r‘%s +(\d+).*main\.py (\d+)$‘ % current_user)
 19     for line in lines:
 20         result = re_obj.findall(line)
 21         if not result:
 22             continue
 23         pid, port1 = result[0]
 24         ps_dict[port1] = pid
 25
 26     return ps_dict.get(str(port))
 27
 28
 29 def usage():
 30     print ‘Usage: restart_port.py <port|all> <port_from> <process_number>‘
 31     sys.exit(1)
 32
 33
 34 def kill_port(port):
 35     pid = get_pid(port)
 36     if pid:
 37         cmd = ‘kill -9 %s‘ % pid
 38         print ‘killing process ...‘
 39         status, output = commands.getstatusoutput(cmd)
 40         # time.sleep(2)
 41         print ‘process %s for port %s is killed‘ % (pid, port)
 42
 43
 44 def restart_port(port):
 45     pid = get_pid(port)
 46     if pid:
 47         cmd = ‘kill -9 %s‘ % pid
 48         status, output = commands.getstatusoutput(cmd)
 49         time.sleep(1)
 50     cmd = ‘nohup python main.py %s >> logs/p_%s.log &‘ % (
 51         port, port)
 52     # status,output = commands.getstatusoutput(cmd)
 53     os.system(cmd)
 54
 55
 56 def check_port_is_health(port):
 57     need_check = True
 58     while need_check:
 59         time.sleep(1)
 60         try:
 61             response = requests.get(‘http://127.0.0.1:%s‘ % port)
 62             if response.status_code == 200:
 63                 need_check = False
 64             else:
 65                 need_check = True
 66                 print ‘response.status_code=‘, response.status_code
 67         except Exception, e:
 68             print ‘port=‘, port, str(e)
 69             need_check = True
 70         if need_check:
 71             print ‘port=‘, port
 72             restart_port(port)
 73
 74 if __name__ == ‘__main__‘:
 75     try:
 76         port = sys.argv[1]
 77     except:
 78         usage()
 79
 80     if port == ‘all‘:
 81         try:
 82             port_from = int(sys.argv[2])
 83         except:
 84             usage()
 85
 86         try:
 87             process_number = int(sys.argv[3])
 88         except:
 89             usage()
 90
 91         for port in range(port_from, port_from + process_number):
 92             restart_port(port)
 93             # check_port_is_health(port)
 94     elif port == ‘kill‘:
 95         try:
 96             port_from = int(sys.argv[2])
 97         except:
 98             usage()
 99
100         try:
101             process_number = int(sys.argv[3])
102         except:
103             usage()
104
105         for port in range(port_from, port_from + process_number):
106             kill_port(port)
107     else:
108         restart_port(port)
109         check_port_is_health(port)

restart_port.py

时间: 2024-10-10 08:07:54

Tornado + vue.js 前后端分离运行脚本的相关文章

gin+vue的前后端分离开源项目

该项目是gin+vue的前后端分离项目,使用gorm访问MySQL,其中vue前端是使用vue-element-admin框架简单实现的: go后台使用jwt,对API接口进行权限控制.此外,Web页面在token过期后的半个小时内,用户再次操作会自动刷新token: 项目很小,适合gin新手学习!(后续有时间会补上相关教程) GitHub地址:https://github.com/Bingjian-Zhu/gin-vue 一.运行go后台项目 (1)把项目clone到GOPATH/src目录下

一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器

一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 controller.mapper.service.html.jsp.vue.php..py ... 等各种类型代码,采用 velocity 模板引擎在页面动态配置生成代码,前后端动态权限配置,前端权限精确到 按钮 级别,后端权限精确到 uri 上,QQ授权第三方单用户登录...等 基本环境: JDK

docker-compose 部署 Vue+SpringBoot 前后端分离项目

一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker-compose 部署Vue+SpringBoot 前后端分离项目 整体项目配置结构,这里在不影响原来项目的结构,因此将所有配置文件都提出来存放到docker文件夹内了,但注意docker-compose文件须放到项目总的根目录下哦! 1.新增后端所需配置文件api-Dockerfile # 指定基

vue+springboot前后端分离工程中跨域问题的解决

vue+springboot前后端分离工程中跨域问题的解决 假如是在同一台机器上开发,前后端分离的工程中出现跨域问题的原因是,前端工程和后端工程运行在不同的端口上.只要协议.域名.端口有一个不同就会产生跨域问题,所以在前端工程中请求后端的接口时就会因为端口不同而产生跨域问题. 一.解决跨域的原理 假设前端A要去访问服务器C,可以在A和C之间之间设置一个代理B,A访问C时先访问B,再由B代为请求C并把请求结果返回给A,这样就可以解决跨域问题.其中需要保证的是A访问B和B访问C都不能存在跨域. 二.

基于Vue的前后端分离项目实践

一.为什么需要前后端分离 1.1什么是前后端分离  前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功能和职责上的一种划分,前端负责页面的渲染,部分页面交互的逻辑,然后通过网络请求与后端进行数据的交互:后端则着重关注业务逻辑的处理,直接操控数据库. 1.2前后端未分离前(1)jsp + servlet 开发模式: JSP页面:负责视图层的渲染及交互,内部可以嵌入java 代码,在某些场景下开发起来比

Vue.js前后端同构方案之准备篇——代码优化

作者:王鹤 导语 目前Vue.js的火爆不亚于当初的React,本人对写代码有洁癖,代码也是艺术.此篇是准备篇,工欲善其事,必先利其器.我们先在代码层面进行优化,对我们完成整个技术架构是起到基础作用的.此准备篇是独立的,即使你们的项目不使用Vue.js,也不影响文章的阅读,是代码的基础优化. 一.前言 目前Vue.js的火爆不亚于当初的React,本人对写代码还是有一定洁癖的,代码也是艺术.很长时间在找寻最适合自己的前端开发框架,包括在React最火的时候,我依然在坚持寻找,但React在我心目

解决vue+springboot前后端分离项目,前端跨域访问sessionID不一致导致的session为null问题

问题: 前端跨域访问后端接口, 在浏览器的安全策略下默认是不携带cookie的, 所以每次请求都开启了一次新的会话. 在后台打印sessionID我们会发现, 每次请求的sessionID都是不同的, 既然每次请求都是一个新的会话, 那我们去获取session的时候自然就是null了. 解决办法如下: 环境: vue 2.0 springboot 2.1.6 一.前端部分 1.  在vue引入axios的位置添加以下代码 import axios from 'axios' axios.defau

python框架django中结合vue进行前后端分离

一.创建django项目 1.django-admin startproject mysite # 创建mysite项目 2.django-admin startapp app01# 创建app01应用  二.安装vue 安装vue-cli:npm install -g vue-cli (Vue-cli是Vue的脚手架工具,-g表示在全局下安装vue-cli) 安装webpack: npm install webpack -g  (包管理工具,主要是打包和解包用的) 创建项目:vue init

关于使用vue搭建前后端分离的项目,部署过程遇到的问题

1.首先应该有三个端口号:app前端.网页前端.后台接口  后台接口有很多,但是会映射到zuul上,保证他的端口号是对外开放的,其他不被占用就行 2.pc前端访问后台路径 他的baseUrl是每一次请求的基础路径,需要写服务器后台对外开放的ip和端口号,tomcat部署前端服务也得需要另一个端口号 3.然后发现他的静态资源都访问不到,可以看我的另一篇博客  https://www.cnblogs.com/vv-lilu/p/11106894.html 4.使用vue-lic3搭建的手机端框架,静