首先我是在ubuntu系统容器中搭建zabbix,前面跟着官网做,下载相关软件包都没有问题。到了要进入mysql,这时候系统报错,找不到mysql.socket文件。我到他说的目录下果然没看到这个文件,网上说这个文件丢失的话可以指定ip登陆一次,然后就会生成,但是我指定ip也登陆不了。我一直怀疑是什么文件缺失,或者mysql未安装,所以花了大量时间去排以及下载mysql。但是都没能解决问题。后面我试着看来一下当前的mysql进程,突然发现mysql根本没启动。但是我用service命令启动报错找不到相关service命令文件。使用./etc/init.d/mysqld restart命令也报找不到,但是我进去看相关文件还是存在的。于是我再init.d下执行./mysqld restart,这次竟然可以了,mysql成功启动,后续操作正常进行。但是到了使用systemctl命令启动zabbix服务的时候却报错,后面在网上查询才发现docker的ubuntu容器中无法使用systemctl命令,必须在启动的时候加额外的参数。但是我测试了网上说的各种参数,都不行。于是最后放弃了docker容器,使用服务器搭建zabbix。但后来我找到了解决的办法,具体的命令如下:
docker run -ti -d --privileged=true 120.78.175.101:5000/root/ubuntu:fanish "/sbin/init"
现在来说说我在服务器上搭建的过程吧,在我还没有得到上述的解决方案的时候,我尝试在服务器上搭建zabbix,结果遇到了新的问题。
服务器上搭建zabbix前期比容器中顺利,知道最后一步启动服务,我启动服务一直报错。排查日志发现zabbix-client的端口被占用,处理了端口冲突,我胸有成竹重新启动,结果还是报错。一下我就不知道怎么办了,错误提示也没有,日志的问题也解决了。手上没有更多的资料,似乎这个问题无法解决了。但是我不愿放弃,离成功明明就只有最后一步了,于是我反复查看我手上拥有的唯一线索---日志,终于,我在日志中发现了一个被我一直忽略的提示,顺着这个提示,我发现是我配置文件里把一行注释给打开了(虽然我并不记得我有过这样的操作),最后服务成功启动,而我就像个二逼被这个低级错误消耗了两个小时。成功启动服务的我志得意满,马上打开浏览器访问服务,结果404。。。
合着刚解决一个问题,还没前进一步,马上就又遇到敌方阻截,眼看成功就在眼前,真的是造化弄人呀。很快我就排出了是服务器的80端口没有打开对外访问。我记得iptable、selinux都是关闭了的呀,到底是什么阻止了外网访问我的端口,我记得以前我是通过修改一个配置文件开放端口的,可是很久没开放过端口,已经记不得是哪个文件了。网上开放端口的教程很多,但是我使用之后都无效,端口始终无法开发。似乎我不弄明白到底是什么阻挡了外网访问我就没办法解决这个问题。经过不断尝试,我发现是ufw阻止了外网访问,而我服务器上的ufw状态有些诡异,这也是造成我没能尽快定位问题的因素之一,可能是其他人做了一些配置。最后我通过
sudo apt-get install iptables
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables-save
//做一下持久化
apt-get install iptables-persistent
netfilter-persistent save
netfilter-persistent reload
成功开放80端口,服务被正常访问。(关于持久化如何完成可以看https://www.jianshu.com/p/2ec5d16db02b
)
搭建zabbix的全过程也就结束了。
网友评论