supervisord-monitor集群管理服务器进程

在一台服务器上通过supervisor对该服务器的进程进行管理,很容易实现。网上有很多教程,比如我之前的博客:supervisor的使用教程
如果在多台服务器上都部署了supervisor做进程守护,每个supervisor都有各自的web管理,那么如果要管理多台服务器上的程序时,岂不是要登陆多个supervisor页面控制台吗?如果能把它们集合在一个页面上统一进行控制,那该有多好呢?是的,已经有人研发了这么一个工具–supervisord-monitor,这是一个php研发的工具,代码托管在gitlab,最近一次更新是四个月前。
https://github.com/mlazarov/supervisord-monitor
我们只需要把supervisord-monitor 部署到一台服务器上,就可以对其他服务器进行集群式管理了,当然,前提条件是每台服务器都必须安装supervisor,并配置运行好。
1、安装php 由于supervisord-monitor是php写的,因此首先需要安装php.

yum -y install php-fpm

我们进入到php安装后的配置文件中,将用户组修改为同nginx一致。
vim /etc/php-fpm.d/www.conf

user = root group = root

由于是自己的服务器,我这里用的都是root用户。用root启动php时,会报错,需要按照如下进行启动。
/usr/sbin/php-fpm -R &

通过netstat -antp 查看进程,我们可以看到php-fpm在本地端口9000上运行成功。
通过ps aux|grep php-fpm 查看进程,可以看到php-fpm以root用户运次着。
2、测试php 我们先测试下nginx是否成功运行。直接在浏览器中输入服务器ip地址,我这里开的是虚拟机,地址为:192.168.134.130,在浏览器中输入后,显示如下界面则,成功运行。
supervisord-monitor集群管理服务器进程
文章图片

然后,我们测试下php页面能否正常打开。
进入到nginx的配置:
vim /etc/nginx/nginx.conf

在server段落添加如下location:
#add location ~ .php$ { fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; fastcgi_paramSCHEME $scheme; includefastcgi_params; }

然后再添加index.php页面:
vim/usr/share/nginx/html/index.php

写入如下php测试页面:

保存后,重启下nginx:
pikll -9 nginx# 杀死nginx进程 nginx# 重启nginx

好吧,我一般都是通过杀死进程的方式重启nginx的。
然后,在浏览器中输入:192.168.134.130/index.php
出现php的配置信息页面,则nginx + php-fpm配置成功。
如果出现将index.php下载下来的情况,有可能是因为php的user同nginx的不一致。
3、安装supervisord-monitor 通过git将supervisord-monitor下载下来。我这里将其下载到/root目录下。
git clone https://github.com/mlazarov/supervisord-monitor.git

其目录结构如下:
[root@localhost ~]# tree /root/supervisord-monitor/ -L 1 /root/supervisord-monitor/ ├── application ├── composer.json ├── package.json ├── public_html ├── Readme.md ├── supervisord-monitor.png └── system

其中application文件夹下为配置文件,public_html为前端显示页面。
首先进入到application中,将默认的配置文件重命名下:
cd /root/supervisord-monitor/application/configcp supervisor.php.example supervisor.php

然后打开该配置文件,我们的所有需要连接的服务器都是在这个文件中进行设置的。
vim supervisor.php

按照如下格式,输入需要连接的服务器的ip地址和用户名密码即可。
$config['supervisor_servers'] = array( '192.168.134.130' => array( 'url' => 'http://192.168.134.130/RPC2', 'port' => '9001', 'username' => 'user', 'password' => '123' ), );

4、设置nginx 新建一个nginx配置文件,专门用来管理supervisord-mointor。
vim /etc/nginx/conf.d/supervisor.conf

写入如下配置:
server { listen80 default_server; server_name192.168.134.130; root/root/supervisord-monitor/public_html; location / { indexindex.php index.html; } location /control/ { indexindex.php; rewrite/(.*)$/index.php?$1last; } location ~ .php$ { try_files $uri =404; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; fastcgi_paramSCHEME $scheme; includefastcgi_params; } }

保存后,重启nginx。
再次在浏览器中打开:192.168.134.130,一切顺利的话,便可以进入到如下界面,可以对多个服务器上的进程进行监管。
supervisord-monitor集群管理服务器进程
文章图片

其中,第一个是我后加的,还是在前面提到的/root/supervisord-monitor/application/config/supervisor.php中进行添加的。
5、给网站加密码 到这里我们就做好了服务器集群进程的管理了,但是有一点,这个网站如果不加密的话,任何人都可以在任何浏览器上登录,随便管理我们的服务器,这样太危险了。为此,我们通过htpasswd对该网页进行加密处理,需要登录才能进入网页。
首先,安装httpd-tools:
yum -y install httpd-tools

然后在指定位置创建密码文件,这里我们创建在supervisord-monitor的配置文件中:
htpasswd -c /root/supervisord-monitor/application/config/password admin#创建password文件,以及用户的登录名admin New password: admin Re-type new password: admin Adding password for user admin

这样我们就创建了一个用户名及密码都为admin的账户。
最后,再将其写入到nginx的配置中即可:
vim /etc/nginx/conf.d/supervisor.conf

添加如下:
auth_basic "Please input password"; #这里是验证时的提示信息 auth_basic_user_file /root/supervisord-monitor/application/config/password; # 刚才配置的password文件

再次重启nginx后,登录网站,会弹出登录窗口。登录即可。
【supervisord-monitor集群管理服务器进程】这样我们便完成了supervisor的集群式管理。

    推荐阅读