在一台服务器上通过supervisor对该服务器的进程进行管理,很容易实现。网上有很多教程,比如我之前的博客:supervisor的使用教程
<https://blog.csdn.net/geerniya/article/details/80004771>


如果在多台服务器上都部署了supervisor做进程守护,每个supervisor都有各自的web管理,那么如果要管理多台服务器上的程序时,岂不是要登陆多个supervisor页面控制台吗?如果能把它们集合在一个页面上统一进行控制,那该有多好呢?是的,已经有人研发了这么一个工具–supervisord-monitor,这是一个php研发的工具,代码托管在gitlab,最近一次更新是四个月前。

https://github.com/mlazarov/supervisord-monitor
<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,在浏览器中输入后,显示如下界面则,成功运行。


然后,我们测试下php页面能否正常打开。

进入到nginx的配置:
vim /etc/nginx/nginx.conf
在server段落添加如下location:
#add location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php;
fastcgi_paramSCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param
SCHEME $scheme; include fastcgi_params; }
然后再添加index.php页面:
vim /usr/share/nginx/html/index.php
写入如下php测试页面:
<?php phpinfo(); ?>
保存后,重启下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/config cp 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 { listen 80 default_server; server_name 192.168.134.130; root
/root/supervisord-monitor/public_html; location / {index index.php index.html;
} location /control/ {index index.php; rewrite /(.*)$ /index.php?$1 last; }
location ~ .php$ { try_files$uri =404; fastcgi_pass 127.0.0.1:9000;
fastcgi_indexindex.php; fastcgi_param SCRIPT_FILENAME $document_root
$fastcgi_script_name; fastcgi_param SCHEME $scheme; include fastcgi_params; } }
保存后,重启nginx。

再次在浏览器中打开:192.168.134.130,一切顺利的话,便可以进入到如下界面,可以对多个服务器上的进程进行监管。


其中,第一个是我后加的,还是在前面提到的/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 passwordfor 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后,登录网站,会弹出登录窗口。登录即可。

这样我们便完成了supervisor的集群式管理。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信