aliyun服务器下实现ngrok服务端开机自启动注意事项
前面一篇讲解了在树莓派下实现ngrok客户端的开机自启动,原本以为在aliyun服务器上可以很轻松的实现ngrok服务端的轻松启动,但是却遇到了困难。
按照自启动服务的格式写好了服务脚本:
[Unit]
Description=ngrok
[Service]
Type=simple
ExecStart=/usr/local/ngrok/bin/ngrokd -domain="spursgo.com" -httpAddr=":88" > /dev/null 2>&1 &
[Install]
WantedBy=multi-user.target
乍一看没有问题,因为我之前就是用 /usr/local/ngrok/bin/ngrokd -domain="spursgo.com" -httpAddr=":88" > /dev/null 2>&1 &
指令来启动ngrok服务端的,并且保持在后台运行。
然后,就准备启动了。
systemctl start ngrok
执行后,命令行下没有报错信息,暗自窃喜应该成功了。
systemctl status ngrok
来查看ngrok的执行情况,可是却看到了这样的画面:
居然启动失败了,很糟糕。赶快看一下报错信息。
咦,好像有一行信息特别重要: Sep 29 14:00:57 centos systemd[1]: ngrok.service: main process exited, code=exited, status=2/INVALIDARGUMENT
出现了一个关键字:INVALIDARGUMENT,参数错误。怎么回事呢?这条指令我不是已经验证过的吗?没有问题呀,为什么还是说参数错误呢?
journalctl | grep -i ngrok
来查询一下我们的运行日志,看能不能找到问题的具体所在:
错误信息很多,我们定义到时间最近的,最重要的一条信息好像是:
Sep 29 14:00:57 centos ngrokd[28098]: panic: listen tcp: lookup tcp/88": Servname not supported for ai_socktype
百度了一下Servname not supported for ai_socktype,网上说好像是没有指出服务端口,回想一下我们前面明明是指明了端口的呀,但是端口被包含在双引号里面,是不是这个双引号的问题呢?
先试一试吧!
把“:88”的双引号去掉,执行重载服务指令
systemctl daemon-reload
,然后按照前面的指令来启动服务并且查询状态:很好,启动成功,问题解决!