1:安装supervisor
yum install epel-release
yum install -y supervisor
supervisor没有发布在标准的CentOS源在,需要安装epel源。这种方式安装的可能不是最新版本,但比较方便,安装完成之后,配置文件会自动帮你生成。并且会自动加入到系统服务里面 可以随系统启动而启动
对应的执行文件放到:/usr/bin里面了
默认配置文件:/etc/supervisord.conf
进程管理配置文件放到:/etc/supervisord.d/
目录下即可
默认日志文件:/tmp/supervisord.log
,可以查看进程的启动信息
2:执行sudo vim /etc/supervisor/supervisord.conf 编辑文件
在文件底部的[include]的files后面加上值
/home/blockchain/eth/eth-private/supervisord_geth.conf 与前面的conf空格隔开
3:在/home/blockchain/eth/eth-private/目录里面创建supervisord_geth.conf 文件,文件内容如下
;下面的值后面的;前面都要加上空格 不然会报错哦
; 设置进程的名称,使用 supervisorctl 来管理进程时需要使用该进程名
;command这里的geth 要写全路径 不然会报not such file相关的问题
;要加上--datadir设置datadir路径,不然会默认为datadir为/root/.ethereum,而这个目录是不存在的进而会mkdir /root/.ethereum但是因为没有这个权限,所以又继续报了权限不足问题
;要加上--ethash.dagdir 设置ethashdagdir路径,不然会默认为/root/.ethash,而这个目录是不存在的进而会mkdir /root/.ethash但是因为没有这个权限,所以又继续报了权限不足问题
;要加上console 2>>/home/blockchain/eth/eth-private/geth.log不然会报invalid command &的错误 很奇怪啊 不明白呢
[program:geth]
command= nohup /home/blockchain/eth/go-ethereum-1.8.13/build/bin/geth console 2>>/home/blockchain/eth/eth-private/geth.log --datadir /home/blockchain/.ethereum --ethash.dagdir "/home/blockchain/.ethash" --rpc --rpcaddr 192.168.1.190 --rpcport 8545 --rpccorsdomain "*" --rpcapi admin,personal,web3,eth --mine &
;numprocs=1 ; 默认为1
;process_name=%(program_name)s ; 默认为 %(program_name)s,即 [program:x] 中的 x
directory=/home/blockchain/ ; 执行 command 之前,先切换到工作目录 报 couldn't chdir to /home/blockchain/的错误,是因为directory=...; 这一行分号前面没有加空格,加上之后就没有报错了
user=blockchain ; 使用 blockchain 用户来启动该进程
; 程序崩溃时自动重启,重启次数是有限制的,默认为3次
autorestart=true
redirect_stderr=true ; 重定向输出的日志
stdout_logfile = /home/blockchain/eth/eth-private/supervisord_geth.log
loglevel=info
4:然后电脑重新启动之后 supervisord服务启动 然后supervisord会将geth进程启动起来
可以通过ps aux|grep geth查看geth是否运行
通过ps aux|grep supervisord是否已启动
5:也可以通过 sudo /usr/bin/supervisord -c /etc/supervisord.conf来启动supervisord
6:关闭supervisord有两种方式
6.1 ps aux|grep supervisord得到进程PID
kill -s SIGTERM PID关闭进程
6.2 sudo kpill 进程名 如sudo kpill supervisord来关闭进程
7:如果没有开机启动成功 估计就是安装的权限问题 执行
systemctl enable supervisord
然后会要求输入root密码去加入开机启动服务里面