在接触supervisor进程管理工具之前,使用springboot打包部署到linux服务器的流程是这样子的,如下图所示:



上图展示的就是最一般的流程,如果项目是小项目或者demo可以这样子去部署,但是实际生产中会有各种各样的问题存在,比如:

  1. 项目发布之后,由于各种可能的原因,服务器宕机或者服务进程挂掉,不能自动重启;
  2. 如果项目是频繁更新,频繁发布,这样子简直会把人累死;
  3. ...

    ok,今天先来解决第一个问题,服务重启的问题。

supervisor介绍

Supervisor,是一个进程控制系统,是一个客户端/服务器端系统允许用户在UNIX-LIKE 操作系统中去监控,控制一些进程。Supervisor作为主进程,Supervisor下管理的时一些子进程,当某一个子进程异常退出时,Supervisor会立马对此做处理,通常会守护进程,重启该进程,保证进程可用。

supervisor安装

一般服务器都部署在ecs上面,推荐使用yum命令安装,简单省心。

首先,使用命令

yum -y install  supervisor

supervisor配置

系统会自动安装,等待安装完毕之后,输入命令:

vim /etc/supervisor.d/test.ini

使用vim命令新建一个test.ini文件,该文件是管控进程的配置文件,内容大致如下,可根据个人需要增删配置:

#启动程序的名称
[program:test]
#配置的java启动环境
environment=JAVA_HOME=/app/jdk/jdk1/bin
#启动命令
command= /app/jdk/jdk1/bin/java -Xms2048m -Xmx4096m -Dspring.profiles.active=dev -Dserver.port=8080 -jar /app/jar/test.jar
#jar所在文件目录
directory=/app/jar
#用户
user=root
stopsignal=INT
#自动启动
autostart=true
#自动重启
autorestart=true
#重启时间1s
startsecs=1
#错误日志
stderr_logfile=/app/log/sp/test.err.log
#标准打印日志,满50MB区分
stdout_logfile=/app/log/sp/test.out.log

至此,supervisor配置结束,如果有多个jar项目要跑,可以复制多个ini项目,注意内存分配。

supervisor启动

使用如下命令来启动或者更新supervisor,

# 启动supervisor
systemctl start supervisord
# 更新配置文件
supervisorctl update
# 启动某个应用
supervisorctl start aaaa
supervisorctl stop aaaa
# 查看状态
supervisorctl status

总结

使用supervisor工具之后,可以把自己解放出来,不用再担心深夜服务停掉而自己不知道的问题,由于服务器部署在阿里云上面,只要不是大规模断电等极其意外的情况,都可以保证在服务器不挂的情况下,保证系统的正常运转。

晚上终于可以安心睡觉了,下篇文章采用持续集成解决第二个问题。

linux(centos)下安装supervisor进程管理工具的更多相关文章

  1. 【htop】Linux CentOS 6.5下安装htop进程管理工具

    一.Htop的使用简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (fo ...

  2. ​Linux环境下搭建禅道管理工具-包含软件资源

    ​Linux环境下搭建禅道管理工具 1:百度云盘下载: 禅道--链接: https://pan.baidu.com/s/1Stu7nOZVIPO5TnpJWjWtiQ 提取码:dnik CentOs操 ...

  3. Supervisor 进程管理工具

    简介: Supervisor 进程管理工具 一.安装 shell > yum -y install python-pip shell > pip install supervisor # ...

  4. Linux(CentOs)下安装Phantomjs + Casperjs

    Linux(CentOs)下安装Phantomjs + Casperjs 是参照cnMiss's Blog http://ju.outofmemory.cn/entry/70691的博客进行安装的 1 ...

  5. linux/centos下安装nginx(rpm安装和源码安装)详细步骤

    Centos下安装nginx rpm包                                                                                 ...

  6. Linux CentOS下安装Tomcat9

    本文讲解在Linux CentOS下安装Tomcat9,以及Web项目的部署发布. 环境:阿里云ECS 云服务器Linux CentOS 使用XShell客户端连接服务器,进行操作实践. 1.下载To ...

  7. centos上安装supervisor来管理dotnetcore等应用程序

    supervisor 介绍: 这是一款用python编写的进程管理工具,可以守护他管理的所有进程,防止异常退出,以及提供一个可视化的web界面来手动管理,打开关闭重启各种应用,界面如下: 关于在cen ...

  8. supervisor进程管理工具的使用

    supervisor是一款进程管理工具,当想让应用随着开机启动,或者在应用崩溃之后自启动的时候,supervisor就派上了用场. 广泛应用于服务器中,用于引导控制程序的启动 安装好superviso ...

  9. [Linux]CentOS下安装和使用tmux

    前天随意点开博客园,看到了一篇关于tmux的文章 Tmux - Linux从业者必备利器,特意还点进去看了.毕竟Linux对于做游戏服务端开发的我来说,太熟悉不过了.不过我就粗略地看了一眼,就关掉了. ...

随机推荐

  1. jQuery BlockUI Plugin Demo 6(Options)

    Options BlockUI's default options look (exactly) like this: // override these in your code to change ...

  2. 记EXSI虚拟机CentOS7断电无法启动修复过程

    参考:https://msd.misuland.com/pd/3148108429789233656 EXSI6.7安装虚拟机CentOS7.5 1804 断电后启动页面进度条很慢 最后出现如下提示 ...

  3. 微信服务号一些记录,与DTCMS微信功能二次开发

    1.首先必须获得Token CRMComm crm = new CRMComm();            string error = "";            string ...

  4. 网络损伤仪细分市场:eCPRI网络损伤的技术要求

    关于“网络损伤仪”的叫法 网络损伤仪,也称作为广域网仿真仪,广域网损伤仪,WAN Emulation,Network Impairment Emulator. 为什么会带WAN广域网这个限定词? 应该 ...

  5. Ie浏览器请求400错误,谷歌火狐等浏览器正常请求.

    做项目的时候,遇到一个小的问题.一个location.href="请求的url"在其它浏览器上是可以正常请求的.但是在ie浏览器上确出现奇怪的http请求400错误,我们先来对于h ...

  6. JDK+Jmeter 环境搭建

    1.下载JDK安装包,默认安装next即可 2. 3. 4. 5. 6.变量名:JAVA_HOME 变量的值为你安装JDK的目录 我这里是放在C盘 7. 8.添加新的变量值: %JAVA_HOME%\ ...

  7. Python中的并行编程速度

    这里主要想记录下今天碰到的一个小知识点:Python中的并行编程速率如何? 我想把AutoTool做一个并行化改造,主要目的当然是想提高多任务的执行速度.第一反应就是想到用多线程执行不同模块任务,但是 ...

  8. 如何保持人际关系zz

    作者:Faaany链接:https://www.zhihu.com/question/35590289/answer/63675007来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  9. windows和linux环境下使用google的glog日志库

    一.概述 glog是google推出的一款轻量级c++开源日志框架,源码在github上,目前最新release版本是v0.3.5. githut地址:https://github.com/googl ...

  10. react封装通用tab组件

    import React, { Component } from 'react' import PropTypes from 'prop-types' import _ from 'lodash' i ...