最近在研究蜜罐,发现了mhn这个项目,想要部署一下试试,但是在安装过程中遇到了一些困难,本文记录了这一过程,供像我一样的小白参考。
github
的项目文档告诉我,mhn
不支持ubuntu16
,而我的服务器版本都是ubuntu17
,为了避免踩坑,我选用了和官方测试系统一样的ubuntu12.04
,事实证明这个系统确实很古老,第一件事是安装ssh
,结果apt-get
不能用,主要是默认源已经不可用。
换源方式请参见 http://blog.csdn.net/inslow/article/details/54378350
换源成功后,系统正常了,根据官方说明进行安装:
sudo apt-get install git -y
cd /opt/
sudo git clone https://github.com/threatstream/mhn.git
cd mhn/
sudo ./install.sh
这些步骤一气呵成,然而根据官方说明检查安装的程序是否正确运行时,
sudo /etc/init.d/nginx status
sudo /etc/init.d/supervisor status
sudo supervisorctl status
发现两个fatal
,理论上应该是这样的
geoloc RUNNING pid 31443, uptime 0:00:12
honeymap RUNNING pid 30826, uptime 0:08:54
hpfeeds-broker RUNNING pid 10089, uptime 0:36:42
mhn-celery-beat RUNNING pid 29909, uptime 0:18:41
mhn-celery-worker RUNNING pid 29910, uptime 0:18:41
mhn-collector RUNNING pid 7872, uptime 0:18:41
mhn-uwsgi RUNNING pid 29911, uptime 0:18:41
mnemosyne RUNNING pid 28173, uptime 0:30:08
这里感谢 jackghq大神
他为两个fatal找到了解决方案,参见 http://blog.csdn.net/jackghq/article/details/56281236
在大神的帮助下,我瞬间解决了一个fatal
,只是另一个需要go get
我首先求助同学,装了个open
干你懂的事,然后发现没有装go
自信满满进行了apt-get install golang
,然后发现go get
报错。。。
"crypto: requested hash function is unavailable"
google
告诉我应该是go
的版本太低
go version
一看果然是go1
,据说go1.2
之后就没有问题了。
之后,我就开始了升级golang
之路,放一个官方链接 https://golang.org/dl/
一开始想着自己编译,结果最新的1.9在编译过程中报错,说是1.4版本以上的需要特别安装什么组件,我直接选择了去编译1.2版本,然而,在编译的过程中出现了
--- FAIL: TestParseInSydney (0.00 seconds)
time_test.go:560: ParseInLocation(Feb 01 2013 EST, Sydney) = 2013-02-01 00:00:00 +0000 EST, want 2013-02-01 00:00:00 +1100 AEDT
--- FAIL: TestLoadFixed (0.00 seconds)
time_test.go:1426: Now().In(loc).Zone() = "-01", -3600, want "GMT+1", -3600
据说是澳大利亚的时区改了一下名字,然而一个tzdata
的包的老版本没有改,我们的ubuntu12.04
显然是老版本,14年之后的包都改对了,这时我选择了放弃治疗,直接下载编译好的包。
wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
这个包解压后,小白并不知道如何替换原有的系统软件,于是在
https://studygolang.com/articles/900 学得了以下配置
export GOROOT=yourpath/go
export GOARCH=amd64
export GOOS=linux
export GOBIN=$GOROOT/bin/
export GOTOOLS=$GOROOT/pkg/tool/
export PATH=$GOBIN:$GOTOOLS:$PATH
这时,go version
是1.9了。然而,我最初把mhn
装在了/opt
下,所以需要
sudo go get
但是默认export
不会作用到sudo
的时候
http://blog.sina.com.cn/s/blog_4da051a60102uyvg.html 说明了这一问题的原因,
由于有权限问题,直接sudo vi /etc/sudoers
会无法修改,这里提供简单的方法
sudo visudo
进入nano 2.2.6
Defaults env_reset
改为 Defaults !env_reset
此时,sudo
下依旧找不到go
,所以在
Defaults secure_path=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”
一行手动添加$GOBIN:$GOTOOLS:
这时,终于我的sudo go get
运行正确。
中间还一度连不上github
, 但是最终还是成功搞定。
xxx@svr:/opt/honeymap/server$ sudo go get
# cd .; git clone https://github.com/fw42/go-hpfeeds /opt/honeymap/server/src/github.com/fw42/go-hpfeeds
Cloning into '/opt/honeymap/server/src/github.com/fw42/go-hpfeeds'...
error: Failed connect to github.com:443; Connection timed out while accessing https://github.com/fw42/go-hpfeeds/info/refs
fatal: HTTP request failed
package github.com/fw42/go-hpfeeds: exit status 128
xxx@svr:/opt/honeymap/server$ sudo go build
honeymap.go:5:2: cannot find package "github.com/fw42/go-hpfeeds" in any of:
/opt/go/src/github.com/fw42/go-hpfeeds (from $GOROOT)
/opt/honeymap/server/src/github.com/fw42/go-hpfeeds (from $GOPATH)
xxx@svr:/opt/honeymap/server$ sudo go get
xxx@svr:/opt/honeymap/server$ sudo go build
xxx@svr:/opt/honeymap/server$
最后,sudo supervisorctl start honeymap
终于所有服务都是running
本文在此特别感谢提供解决方案和教程的各位大神。