Centos7 中使用搭建devpi并且使用Supervisor守护进程

一、先介绍一下supervisor

  1.安装supervisor

    使用yum安装或者使用pip安装都可以,使用yum安装的相对简单一些,并且不用拷贝一份 supervisord.conf 的配置文件,在这里介绍一下pip安装的方式吧,我是后编译了一个python,执行下面一系列的命令:

/usr/local/python/bin/pip3 install supervisor
ln -s /usr/local/python/bin/supervisorctl /usr/bin/
ln -s /usr/local/python/bin/supervisord /usr/bin/
mkdir /etc/supervisor

  然后需要在这个文件中写入如下,都是固定的,直接拷贝即可:

vim /etc/supervisor/supervisord.conf

  写入下面:

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Notes:
;  - Shell expansion ("~" or "$HOME") is not supported.  Environment
;    variables can be expanded using this syntax: "%(ENV_HOME)s".
;  - Quotes around values are not supported, except in the case of
;    the environment= options as shown below.
;  - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
;  - Command will be truncated if it looks like a config file comment, e.g.
;    "command=bash -c 'foo ; bar'" will truncate to "command=bash -c 'foo ".

[unix_http_server]
file=/var/run/supervisor.sock   ; the path to the socket file

[supervisord]
logfile=/var/log/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=50MB        ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/var/run/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false               ; start in foreground if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200

; The rpcinterface:supervisor section must remain in the config file for
; RPC (supervisorctl/web interface) to work.  Additional interfaces may be
; added by defining them in separate [rpcinterface:x] sections.

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

; The supervisorctl section configures how supervisorctl will connect to
; supervisord.  configure it match the settings in either the unix_http_server
; or inet_http_server section.

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = conf.d/*.conf

  其中主要是红色,随后进行:

mkdir /etc/supervisor/conf.d
cd /etc/supervisor/conf.d

  之后就要编辑要监管的服务了,编辑写入:

vim /etc/supervisor/conf.d/devpi.conf

[program:devpi]
command=/usr/local/python/bin/devpi-server  --port 3141 --host 10.213.X.X --serverdir /home/ops/devpi
directory=/home/ops/devpi
autostart=true
autorestart=true
startretries=3
user=root
stopasgroup=true
killasgroup=true
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /var/log/devpi-running.log

  真正的模板对应改文件如下,并含解释:

[program:DeployLinux]   #DeployLinux  为程序的名称
command=dotnet DeployLinux.dll #需要执行的命令
directory=/home/publish #命令执行的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=root #用户
stopsignal=INT 
autostart=true #是否自启动
autorestart=true #是否自动重启
startsecs=3 #自动重启时间间隔(s)
stderr_logfile=/var/log/ossoffical.err.log #错误日志文件
stdout_logfile=/var/log/ossoffical.out.log #输出日志文件

  随后启动服务,即可:

supervisord -c /etc/supervisor/supervisord.conf 

  查看状态,以及重新启动命令如下:

supervisorctl status
supervisorctl restart devpi

  这一部分的内容大概就是这些,参考文章:https://www.cnblogs.com/wyt007/p/8288929.html

  下面是devpi-server的相关内容:

  二、安装devpi-server

    这里同样是使用pip方式进行的安装,执行 pip install 该服务即可,安装成功后,可以使用如下命令查看版本:

/usr/local/python/bin/devpi-server --version

  还需要安装其他几个相关包:

/usr/local/python/bin/pip3 install -q -U devpi-web
/usr/local/python/bin/pip3 install -q -U devpi-client

  然后需要重新启动一下devpi,执行:

/usr/local/python/bin/devpi-server  --port 3141 --host 10.213.X.X --serverdir /home/ops/devpi --init

  这里我创建了一个devops的用户:

/usr/local/python/bin/devpi user -c devops password=devops
/usr/local/python/bin/devpi login devops --password=devops
/usr/local/python/bin/devpi index -c devops bases=root/pypi
/usr/local/python/bin/devpi use devops/devops
/usr/local/python/bin/devpi index devops/devops mirror_url="https://pypi.doubanio.com/simple"

  在我的 ~/.pip/pip.conf 中的为:

[global]
index-url = https://pypi.doubanio.com/simple

[search]
index = https://pypi.doubanio.com/simple

[install]
trusted-host = 10.213.X.X    #就是我的devpi的服务器

  随后可以使用下面两个命令进行查看:

devpi use
devpi index
devpi index root/pypi mirror_url="https://pypi.doubanio.com/simple"  具体的记不太清楚了

  下面进行测试看一看:

devpi login devops
devpi use
cd /tmp/filelock-3.0.10/  # 要上传的包目录下
devpi upload  # 上传到devops索引下
devpi list filelock # 查看索引

  

这里有一篇参考文章,如:https://www.cnblogs.com/panhongyin/p/7065830.html

原文地址:https://www.cnblogs.com/hjc4025/p/10675046.html