supervisor+daphne+djangochannels
参照官网配置:https://channels.readthedocs.io/en/latest/deploying.html
1.supervisor
主要是用来管理进程,比如我们想让一个进程一直执行当前退出时,自动重启
分为客户端和服务器端
supervisord 服务器主管名为supervisord。它负责在自己的调用中启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程,记录其子进程stdout和stderr 输出,以及生成和处理与子进程生命周期中的点相对应的“事件”。 服务器进程使用配置文件。这通常位于/etc/supervisord.conf中。此配置文件是“Windows-INI”样式配置文件。通过适当的文件系统权限保持此文件的安全非常重要,因为它可能包含未加密的用户名和密码。 supervisorctl 主管的命令行客户端部分名为 supervisorctl。它为supervisord提供的功能提供了类似shell的界面。从 supervisorctl,用户可以连接到不同的 supervisord进程(一次一个),获取由子进程控制的状态,停止和启动子进程,并获取supervisord的运行进程列表。 命令行客户端通过UNIX域套接字或Internet(TCP)套接字与服务器通信。服务器可以声明客户端的用户在允许他执行命令之前应该提供身份验证凭据。客户端进程通常使用与服务器相同的配置文件,但其中包含[supervisorctl]部分的任何配置文件都可以使用。
启动
/usr/local/bin/supervisord -c /etc/supervisord.conf
supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
启动守护进程:supervisord -c /etc/supervisor/supervisord.conf
重载配置:supervisorctl reload
报错信息:
Error: .ini file does not include supervisorctl section
解决办法:
一个权限问题,步骤:
1. 先确保supervisord.conf中有[supervisord],[supervisorctl]有这两个基本模块,还有[program:XXX]自己程序的配置(可以在supervisord.conf也可以在/etc/supervisor/*.ini中)
2. 最关键的两个命令:chmod +x /usr/bin/supervisord
chmod +x /usr/bin/supervisorctl
chmod +x /etc/supervisord.conf主要是把把相关文件都授权了
3. 把supervisord杀掉后再次启动supervisord
Exited too quickly (process log may have details)
解决办法:
1. 先确认[program:XXX]中自己的程序的command=<启动命令>和 directory=<运行命令的路径>没有问题,python是不是用的自己要的环境的python(比如虚拟环境的),log文件的文件夹是不是已经创建(没创建的话supervisor没权限生成log文件),以及改log文件是不是授权给所有用户了(可参考前面的解决办法chmod +x aaaaa.log)
2. 确保用上面的配置中的command在指定路径可以直接运行不会报错,这时候一般就不会有什么问题了。这时候tail你自己的log文件一般就能看到log信息,启动失败报错的信息也会在你的log文件中,照着解决后supervisorctl reload就好了。
3. 如果上面的命令确保可以跑,但还是没法正常运行,也看不到自己程序的报错(不然你就能根据报错解决问题了),那么恭喜,你遇到了跟我一样的情况。我的解决办法很诡异,尝试把[program:XXX]中的名字换成了一个跟启动命令不一样的另一个名字(不要太短),reload之后居然就可以跑了
生成配置文件
安装好supervisor之后,默认是没有生成配置文件的。可以通过以下命令生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
我们通常是把配置文件放到/etc/下面,当然也可以放到任意路径下面。
启动
以下启动顺序由上到下优先级,依次递减
supervisord #默认去找$CWD/supervisord.conf,也就是当前目录
supervisord #默认$CWD/etc/supervisord.conf,也就当前目录下的etc目录
supervisord #默认去找/etc/supervisord.conf的配置文件
supervisord -c /home/supervisord.conf #到指定路径下去找配置文件
supervisor组件
还有一个比较坑的 如果你是直接把laravel官方文档中的supervisor配置拿过来的话 一定记得改驱动如下图所
nodaemon=false ; 如果是true,supervisord进程将在前台运行
默认为false,也就是后台以守护进程运行。。。非必须设置
上面是重载,下面是重新加载配置文件,当我们修改文件重新启动
supervisorctl reload
### 或者
supervisorctl -c /etc/supervisord.conf
默认supervisor是不启动的
那个-n -c 是个前台程序没有用的
# 如果是 Ubuntu 添加以下内容(这里要写全路径,因为此时PATH的环境变量未必设置)
/usr/local/bin/supervisord -c /etc/supervisord.conf
# 如果是 Centos 添加以下内容
/usr/bin/supervisord -c /etc/supervisord.conf
查看正在守候的进程
supervisorctl
如果没有开机自启,那么最开始是需要启动服务的。。。需要unlink
supervisor+daphne+djangochannels的更多相关文章
- django-channels的部署(supervisor+daphne+nginx)
项目中需要一个聊天室的功能,所以需要websocket通信,选择了使用channels模块,主要记录下channels部署的配置和一些坑. 原项目是通过nginx+uwsgi部署的,这里我没做任何改动 ...
- django(channel)到 ubuntu
1.准备工作 删除各app/migrations/下的以数字开头的数据库同步日志文件: 假设你使用的是Pycharm,我们要生成环境包: pip freeze > requirements.tx ...
- asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)
概述 本文目的是搭建三台asp.net core 集群, 并配上 nginx做负载均衡 首先准备要运行的源码 http://pan.baidu.com/s/1c20x0bA 准备三台服务器(或则虚 ...
- 进程监控工具supervisor 启动Mongodb
进程监控工具supervisor 启动Mongodb 一什么是supervisor Superviosr是一个UNIX-like系统上的进程监控工具. Supervisor是一个Python开发的cl ...
- Linux Supervisor 守护进程基本配置
supervisor:C/S架构的进程控制系统,可使用户在类UNIX系统中监控.管理进程.常用于管理与某个用户或项目相关的进程. 组成部分supervisord:服务守护进程supervisorctl ...
- supervisor的安装与简单介绍
1,介绍 Supervisor是一个进程管理工具,官方的说法 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要 ...
- supervisor监管进程max file descriptor配置不生效的问题
配置了 sudo vim /etc/security/limits.conf * soft nofile * hard nofile 单独起进程没问题, 放到supervisor下监管启动,则报错 ...
- centos 6.7 搭建tornado + nginx + supervisor的方法(已经实践)
首先,本来不想写这篇博客了,但是我测试了很多网上的例子包括简书的,全不行,我总结原因是自己太笨,搞了俩个晚上,后来决定,自己还是写一篇记录下来,保证自己以后使用 环境: centos6.7 64 py ...
- python supervisor使用
Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...
随机推荐
- BAT 定时将多个本地文件同步到共享目录
copy.bat 具体执行脚本,需要修改共享目录访问用户名,密码,同步的文件类型 list.txt 前面为本地文件夹,后面为共享目录,中间以”,”进行分割 附件地址: https://files. ...
- docker容器连接
前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. runoob@runoob: ...
- 详解Azure的权限控制
注意:本文档仅限于Azure国际版,国内版略有不同 Azure中的角色分配相对来说是比较复杂的的,对于任何云组织来说,云的资源访问管理权限都是一项非常重要的功能,azure中的授权系统叫做基于角色 ...
- 三大框架 之 Hibernate生成策略与缓存策略(主键生成策略、持久化、持久化类划分、一级缓存、事物管理)
目录 Hibernate生成策略与缓存策略 主键生成策略 主键分类 主键的生成策略 持久化 什么是持久化 什么是持久化类 持久化类编写规则 持久化类的划分 三种状态区分 持久态对象特征 一级缓存 什么 ...
- pt-table-checksum报错Skipping chunk【转】
用pt-table-checksum校验数据时有以下报错,是因为current chunk size大于默认chunk size limit=2.0 24636 rows -02T20:: Skipp ...
- VS2019,打开项目之后显示:System.NullReferenceException: 未将对象引用设置到对象的实例
关闭项目,删除项目文件夹下的隐藏文件夹.vs和bin/obj文件夹
- System.InvalidOperationException:“No coercion operator is defined between types 'System.Int16' and 'System.Boolean'.”
modelBuilder.Entity<MentItems>().Property(e=>e.IsValid) .HasColumnType("bit(1)") ...
- Unity 3D网络游戏实战 pdf
Unity 3D网络游戏实战(全) 目录: 掌握Unity3D基本元素 1.1 简单的游戏 1.1.1在场景中创建一个立方体 1.1.2编写可以使立方体运动的程序 1.1.3测试游戏1.1.4总结1. ...
- Xilinx Zynq-7000 嵌入式系统设计与实现
Xilinx Zynq-7000 嵌入式系统设计与实现 基于ARM Cortex-A9双核处理器和Vivado的设计方法 目录 第1章Zynq-7000 SoC设计导论 1.1全可编程片上系统基础知识 ...
- python web 框架
Web框架(Web framework)是一种开发框架,用来支持动态网站.网络应用和网络服务的开发. wsgiref模块 wsgiref模块就是python基于wsgi协议(Web Server Ga ...