Ubuntu安装和使用supervisor

对于需要以进程的方式常驻在Ubuntu系统中或开机启动的脚本程序,通常使用supervisor进程管理工具进行管理。本文将简单介绍supervisor进程管理工具的安装和使用。
安装

sudo apt-get install supervisor

新建进程配置
安装supervsor进程管理工具后,建议在/etc/supervisor/conf.d/文件夹中为每一个进程创建一个进程配置。

cd /etc/supervisor/conf.d/
sudo touch test.conf


配置详解

[program:test]
command=sh /usr/local/bin/test.sh ;被监控的进程路径
numprocs=1 ; 启动一个进程
directory=/usr/local/bin/ ;执行前切换路径
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
stdout_logfile=logfile ; 指定日志文件

启动进程

supervisorctl reload
supervisorctl start test

启动进程

supervisorctl start xxx

重启进程

supervisorctl restart xxx

重启所有属于名为group的分组进程

supervisorctl stop group

停止全部进程

supervisorctl stop all

载入最新配置的文件

supervisorctl reload

根据最新的配置文件,启动新配置或有改动的进程

supervisorctl update

frp内网穿透设置

内网有时候快速搭建原型发给用户看的时候,配置服务器很麻烦,未进入生产环境的应用也不敢往正式服务器上放。所以本地的快速访问很是需要和方便。

看了下内网穿透的方式基本上都是属于数据转发,有软件和硬件两种途径。下面我列出主流和我都试用的。硬件都是咸鱼上淘的二手的。

软件有:ngrok、 frp、 花生壳服务端

硬件有:花生壳棒、 花生壳盒子、零遁、汉土、固定IP小魔棒

其中最坑的就是花生壳,首先就是用的它是因为以前TP路由器里经常带着的,想着是个老牌子了也知名。先用了服务端软件方式穿透,用了段时间被封了,理由是我在国外登录了。好吧!写代码的有几个不偶尔VPN去google下呢。忍了!然后一个月过后莫名奇妙没了,一看理由一个月内没有访问流量给删除了。好吧~ 花生壳各种收费模式太多了,基本上每一个点都要收费,强烈建议不要使用!映射也有严格限制。80端口也无法做多域名绑定。一个网站就得占用一条映射。

固定IP模式基本上是用公网IP做了桥接。比较方便,但是80端口需要备案,而且流量也挺贵。

最后还是采用了软件方案比较好点。于是又试用了ngrok和frp。觉得从免费和域名来说,frp还是比较良心的。

服务端配置很简单。

客户端配置web

[web]
type = http
local_port = 80
custom_domains = *.yourdomain.com

这里的custom_domains 类型是 string[] 可以用逗号做多个隔开,也可以用泛域名。

ethereum初探五:接入开发

以太坊下载后我们就可以启用geth进行启动节点,然后使用接口接入以太坊区块进行应用层的开发了。

首先安装 看我的文章:ethereum初探一:以太坊安装

在正式开始前,我们要先安装node,到node官网上下载linux64位的二进制包。

$cd /usr/local/src

$wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz

下载完了解压:

$xz -d node-v8.9.4-linux-x64.tar.xz

$tar -xvf node-v8.9.4-linux-x64.tar.xz

然后进行链接:

$ln -s /usr/local/src/node-v8.9.4-linux-x64/bin/node /usr/local/bin/node

$ln -s /usr/local/src/node-v8.9.4-linux-x64/bin/npm /usr/local/bin/npm

检查下:

$node -v

$npm -v

启动以太坊:

geth –datadir=/chaindata/.eth –nodiscover –rpc –rpcapi  –rpccorsdomain=’*’ –rpcaddr=”localhost”  –ws –wsorigins=’*’  console

这里先为了测试可以用*号,后续为了安全一定要把各项参数都改下。变内网做安全防火墙策略。具体细节不表。

安装web3,这里有个坑。网上目前资料很少,直接去官网才发现web3已经变成1.0,很多不兼容。而且1.0还是测试阶段。所以我还是选用了0.20.X. 我们先换下npm安装源,国外那源国内能2个小时不带动的。

$npm config set registry http://registry.npm.taobao.org/

查看下:$npm get registry.

$npm install web3@^0.20.1

没有git 先安装下git。截止我发稿最新的是0.20.3

$vi base.js

var Web3 = require(‘web3’);
var web3 = new Web3();
console.log(web3);

web3.setProvider(new web3.providers.HttpProvider(‘http://localhost:8545’));
console.log(web3.version);
var coinbase = web3.eth.accounts[0];
console.log(coinbase);

$node base.js

ethereum初探四:geth命令详解

命令用法

geth [选项] 命令 [命令选项] [参数…]

版本:

1.7.3-stable

命令:

account    管理账户
attach     启动交互式JavaScript环境(连接到节点)
bug        上报bug Issues
console    启动交互式JavaScript环境
copydb     从文件夹创建本地链
dump       Dump(分析)一个特定的块存储
dumpconfig 显示配置值
export     导出区块链到文件
import     导入一个区块链文件
init       启动并初始化一个新的创世纪块
js         执行指定的JavaScript文件(多个)
license    显示许可信息
makecache  生成ethash验证缓存(用于测试)
makedag    生成ethash 挖矿DAG(用于测试)
monitor    监控和可视化节点指标
removedb   删除区块链和状态数据库
version    打印版本号
wallet     管理Ethereum预售钱包
help,h     显示一个命令或帮助一个命令列表

ETHEREUM选项:

--config value          TOML 配置文件
--datadir “xxx”         数据库和keystore密钥的数据目录
--keystore              keystore存放目录(默认在datadir内)
--nousb                 禁用监控和管理USB硬件钱包
--networkid value       网络标识符(整型, 1=Frontier, 2=Morden (弃用), 3=Ropsten, 4=Rinkeby) (默认: 1)
--testnet               Ropsten网络:预先配置的POW(proof-of-work)测试网络
--rinkeby               Rinkeby网络: 预先配置的POA(proof-of-authority)测试网络
--syncmode "fast"       同步模式 ("fast", "full", or "light")
--ethstats value        上报ethstats service  URL (nodename:secret@host:port)
--identity value        自定义节点名
--lightserv value       允许LES请求时间最大百分比(0 – 90)(默认值:0) 
--lightpeers value      最大LES client peers数量(默认值:20)
--lightkdf              在KDF强度消费时降低key-derivation RAM&CPU使用

开发者(模式)选项:

--dev               使用POA共识网络,默认预分配一个开发者账户并且会自动开启挖矿。
--dev.period value  开发者模式下挖矿周期 (0 = 仅在交易时) (默认: 0)

ETHASH 选项:

--ethash.cachedir                        ethash验证缓存目录(默认 = datadir目录内)
--ethash.cachesinmem value               在内存保存的最近的ethash缓存个数  (每个缓存16MB ) (默认: 2)
--ethash.cachesondisk value              在磁盘保存的最近的ethash缓存个数 (每个缓存16MB) (默认: 3)
--ethash.dagdir ""                       存ethash DAGs目录 (默认 = 用户hom目录)
--ethash.dagsinmem value                 在内存保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 1)
--ethash.dagsondisk value                在磁盘保存的最近的ethash DAGs 个数 (每个1GB以上) (默认: 2)

 

交易池选项:

--txpool.nolocals            为本地提交交易禁用价格豁免
--txpool.journal value       本地交易的磁盘日志:用于节点重启 (默认: "transactions.rlp")
--txpool.rejournal value     重新生成本地交易日志的时间间隔 (默认: 1小时)
--txpool.pricelimit value    加入交易池的最小的gas价格限制(默认: 1)
--txpool.pricebump value     价格波动百分比(相对之前已有交易) (默认: 10)
--txpool.accountslots value  每个帐户保证可执行的最少交易槽数量  (默认: 16)
--txpool.globalslots value   所有帐户可执行的最大交易槽数量 (默认: 4096)
--txpool.accountqueue value  每个帐户允许的最多非可执行交易槽数量 (默认: 64)
--txpool.globalqueue value   所有帐户非可执行交易最大槽数量  (默认: 1024)
--txpool.lifetime value      非可执行交易最大入队时间(默认: 3小时)

 

性能调优的选项:

--cache value                分配给内部缓存的内存MB数量,缓存值(最低16 mb /数据库强制要求)(默认:128)
--trie-cache-gens value      保持在内存中产生的trie node数量(默认:120)

 

帐户选项:

--unlock value              需解锁账户用逗号分隔
--password value            用于非交互式密码输入的密码文件

 

API和控制台选项:

--rpc                       启用HTTP-RPC服务器
--rpcaddr value             HTTP-RPC服务器接口地址(默认值:“localhost”)
--rpcport value             HTTP-RPC服务器监听端口(默认值:8545)
--rpcapi value              基于HTTP-RPC接口提供的API
--ws                        启用WS-RPC服务器
--wsaddr value              WS-RPC服务器监听接口地址(默认值:“localhost”)
--wsport value              WS-RPC服务器监听端口(默认值:8546)
--wsapi  value              基于WS-RPC的接口提供的API
--wsorigins value           websockets请求允许的源
--ipcdisable                禁用IPC-RPC服务器
--ipcpath                   包含在datadir里的IPC socket/pipe文件名(转义过的显式路径)
--rpccorsdomain value       允许跨域请求的域名列表(逗号分隔)(浏览器强制)
--jspath loadScript         JavaScript加载脚本的根路径(默认值:“.”)
--exec value                执行JavaScript语句(只能结合console/attach使用)
--preload value             预加载到控制台的JavaScript文件列表(逗号分隔)

 

网络选项:

--bootnodes value    用于P2P发现引导的enode urls(逗号分隔)(对于light servers用v4+v5代替)
--bootnodesv4 value  用于P2P v4发现引导的enode urls(逗号分隔) (light server, 全节点)
--bootnodesv5 value  用于P2P v5发现引导的enode urls(逗号分隔) (light server, 轻节点)
--port value         网卡监听端口(默认值:30303)
--maxpeers value     最大的网络节点数量(如果设置为0,网络将被禁用)(默认值:25)
--maxpendpeers value    最大尝试连接的数量(如果设置为0,则将使用默认值)(默认值:0)
--nat value             NAT端口映射机制 (any|none|upnp|pmp|extip:<IP>) (默认: “any”)
--nodiscover            禁用节点发现机制(手动添加节点)
--v5disc                启用实验性的RLPx V5(Topic发现)机制
--nodekey value         P2P节点密钥文件
--nodekeyhex value      十六进制的P2P节点密钥(用于测试)

 

矿工选项:

--mine                  打开挖矿
--minerthreads value    挖矿使用的CPU线程数量(默认值:8)
--etherbase value       挖矿奖励地址(默认=第一个创建的帐户)(默认值:“0”)
--targetgaslimit value  目标gas限制:设置最低gas限制(低于这个不会被挖?) (默认值:“4712388”)
--gasprice value        挖矿接受交易的最低gas价格
--extradata value       矿工设置的额外块数据(默认=client version)

 

GAS价格选项:

--gpoblocks value      用于检查gas价格的最近块的个数  (默认: 10)
--gpopercentile value  建议gas价参考最近交易的gas价的百分位数,(默认: 50)

 

虚拟机的选项:

--vmdebug        记录VM及合约调试信息

 

日志和调试选项:

--metrics            启用metrics收集和报告
--fakepow            禁用proof-of-work验证
--verbosity value    日志详细度:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (default: 3)
--vmodule value      每个模块详细度:以 <pattern>=<level>的逗号分隔列表 (比如 eth/*=6,p2p=5)
--backtrace value    请求特定日志记录堆栈跟踪 (比如 “block.go:271”)
--debug                     突出显示调用位置日志(文件名及行号)
--pprof                     启用pprof HTTP服务器
--pprofaddr value           pprof HTTP服务器监听接口(默认值:127.0.0.1)
--pprofport value           pprof HTTP服务器监听端口(默认值:6060)
--memprofilerate value      按指定频率打开memory profiling    (默认:524288)
--blockprofilerate value    按指定频率打开block profiling    (默认值:0)
--cpuprofile value          将CPU profile写入指定文件
--trace value               将execution trace写入指定文件

 

WHISPER实验选项:

--shh                        启用Whisper
--shh.maxmessagesize value   可接受的最大的消息大小 (默认值: 1048576)
--shh.pow value              可接受的最小的POW (默认值: 0.2)

 

弃用选项:

--fast     开启快速同步
--light    启用轻客户端模式

 

其他选项:

–help, -h    显示帮助

 

版权:

Copyright 2013-2017 The go-ethereum Authors