PM2 / Monit - 迁移到systemd

PM2 / Monit - 迁移到systemd

确保以非root用户身份运行zend和节点跟踪器

  • 从官方指南安装包

  • 使用pm2停止跟踪器

  • 将跟踪器升级到版本10.12.0

  • 为节点跟踪器创建systemd单元

  • 使用systemd启动跟踪器

  • 用monit停止zend

  • 为zend创建systemd单元

  • 用systemd启动zend

  • 检查zend和zentracker的状态

  • 启动时启用服务单元

  • 确保防火墙由systemd监控

  • 杀死并删除pm2

  • 删除并清除monit

  • acme.sh - 迁移到 certbot

描述

指令

描述

指令

1

安装certbot的Universe存储库和软件包,并确保从官方指南安装其他软件包,并保持最新版

sudo apt install software-properties-common -y

跳过在Debian系统上添加Universe存储库,请勿跳过此步骤中的其他条目

sudo add-apt-repository universe -y

请务必复制整个命令,尤其是对于长命令字符串

sudo apt-get install build-essential software-properties-common apt-transport-https lsb-release dirmngr pwgen git jq ufw curl aria2 -y
2

更新包缓存

sudo apt-get update
3

安装curl并添加nodejs存储库并更新包缓存

注意:Ubuntu跳过此步骤

只限Debian 9 

sudo apt-get install curl -y curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt-get update
4

安装npm,将其升级到10.12.0

sudo apt-get install npm -y && sudo npm install -g n && sudo n 10.12.0
5

停止节点跟踪器

注意:如果由于某种原因您在pm2中运行了多个跟踪器,则可能必须将“0”更改为与您的跟踪器对应的数字,并停止这些跟踪器。 您可以从运行中获取数字列表:pm2 list

pm2 stop 0
6

将目录更改为克隆节点跟踪器的位置,这将是官方指南的〜/ nodetracker,通常是旧文档或其他指南的〜/ zencash / secnodetracker

cd ~/nodetracker

如果由于目录不存在而导致上述命令失败,请执行以下命令

mv ~/zencash/secnodetracker ~/nodetracker && cd ~/nodetracker
7

使用新的存储库URL更新git,并检索最新的源代码

git checkout -- package.json git remote set-url origin https://github.com/ZencashOfficial/nodetracker.git git fetch origin git checkout master git pull

注意:如果git返回有关任何文件的错误,请运行以下命令(将'filename替换为错误消息中返回的文件)并重复上述命令

git checkout -- filename
8

安装跟踪器所需的最新节点模块集

npm install
9

仅在尚未运行时执行步骤9和10。 如果您已经升级到nodetracker 0.3.1,那么这已经完成了。

10

找到节点的IPv4和/或IPv6公共地址,并将它们作为通过端口9033连接的外部IP地址附加到zen.conf文件(默认)

只有超级节点需要执行此步骤中的每个命令

安全节点需要至少一个外部地址和端口附加到ZEN.CONF

注意:安全节点只需要一种类型的IP,超级节点需要两种类型

注意:将<IPv4>替换为节点的公共IPv4,删除<bracket>

注意:使用压缩表示法中的节点的公共IPv6替换<IPv6>,而不使用前导零,删除<bracket>

使用以下链接确保您的IPv6地址采用压缩符号:

https://www.ultratools.com/tools/ipv6Compress

 为IPv4创建环境变量

IPV4=<IPv4>

将外部IPv4附加到zen.conf中

echo "externalip=$IPV4" >> ~/.zen/zen.conf

为IPv6创建环境变量

IPV6=<IPv6>

将外部IPv6附加到zen.conf中

echo "externalip=$IPV6" >> ~/.zen/zen.conf

将端口附加到zen.conf - 安全+超级节点

echo "port=9033" >> ~/.zen/zen.conf
11

再次运行节点设置以刷新跟踪器服务器列表,并初始化新跟踪器,按Enter键以通过每个值保留当前设置

  • 为“节点类别”提示输入“secure”

node setup.js
12

用monit停止zend,然后停止monit。 两个命令都显示为通过systemctl和sysinit停止(只需要一个,但两者都是为了完整性)

sudo monit stop zend && sleep 8 sudo systemctl stop monit sudo service monit stop
13

为zend创建一个systemd单元文件,复制并粘贴整个文本块

echo \ "[Unit] Description=Zen daemon [Service] User=$USER Type=forking ExecStart=/usr/bin/zend -daemon -pid=$HOME/.zen/zend.pid PIDFile=$HOME/.zen/zend.pid Restart=always RestartSec=10 [Install] WantedBy=multi-user.target" | sudo tee /lib/systemd/system/zend.service
14

测试zend单元文件

sudo systemctl start zend && sleep 30
15

为Node Tracker创建systemd单元文件,复制并粘贴整个文本块

echo \ "[Unit] Description=Zen node daemon installed on ~/nodetracker/ [Service] User=$USER Type=simple WorkingDirectory=$HOME/nodetracker/ ExecStart=$(which node) $HOME/nodetracker/app.js Restart=always RestartSec=10 [Install] WantedBy=multi-user.target" | sudo tee /lib/systemd/system/zentracker.service
16

测试跟踪器单元文件

sudo systemctl start zentracker
17

检查所有节点跟踪器输出日志的内容是否正常,如果一切正常,请使用CTRL + c退出

sudo journalctl -fu zentracker

 

18

检查zend和跟踪器的状态,两者都应该返回active (running)如果状态未将您返回到命令提示符,请按CTRL + c退出状态详细信息

sudo systemctl status zend zentracker

 

19

如果两者都正常工作,请在boot时启用它们

sudo systemctl enable zend zentracker
20

使用systemctl启用防火墙

注意:许多指南缺乏在systemctl下启用此功能

如果未安装防火墙,请参阅: 第5部分保护-Host

sudo ufw -f enable sudo systemctl start ufw sudo systemctl enable ufw sudo systemctl status ufw

 

21

从startup中删除pm2

sudo rm /etc/systemd/system/pm2* sudo rm /etc/systemd/system/multi-user.target.wants/pm2*
22

杀死并删除PM2(如果上述所有操作都没有错误执行)

您可能会看到有关更新npm的消息,您可以忽略它

pm2 kill sudo npm remove pm2 -g sudo rm -r ~/.pm2

 

 

23

从启动中删除monit(您可能不需要这两个命令,两者都存在以适应systemd或init脚本)

如果您不确定monit的配置方式,请运行这两个命令

 

注意:如果执行的命令与monit的设置方式不符,预计会出现错误。 您可以安全地从这里提供的两个命令的一个命令中解除错误。

sudo systemctl disable monit sudo update-rc.d monit remove
24

从系统中删除并清除monit并删除旧存储库(如果以上所有执行都没有错误)

sudo apt-get remove monit -y sudo apt-get purge monit -y sudo apt-get -y autoremove rm -rf ~/zen_node.sh
25

acme.sh-迁移到certbot