我的目标:我正在将AWS EC2实例与运行Ubuntu一起使用。 我正在使用超级用户来启动和监视长时间运行的进程,并且希望使用内置的Web GUI仪表板来监视长时间运行的进程。
我的难题:我可以找到有关如何进行设置的说明,但找不到如何在ec2实例上进行设置的说明。我目前只能通过ssh命令行访问我的AWS ec2实例。我希望能够通过笔记本电脑上的办公室中的浏览器查看仪表板。
给我的印象是,我需要配置nginx来“提供”这个gui状态页面。
我的/etc/nginx/sites-available/supervisord
文件:
server {
location / supervisord/ {
proxy_pass http://127.0.0.1:9001/;
proxy_http_version 1.1;
proxy_buffering off;
proxy_max_temp_file_size 0;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection "";
}
}
我的猜测是,我可以将http://127.0.0.1:9001更改为实际服务器的IPV4地址。我知道我的服务器在端口9001上具有tcp侦听器。通过netstat -tulpn | grep LISTEN
tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN -
我的/etc/supervisord.conf
文件:
[inet_http_server] ; inet (TCP) server disabled by default
port=127.0.0.1:9001 ;
[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=debug ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
nocleanup=true ; (don't clean up tempfiles at start;default false)
childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
;serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.
[program:my_program]
command=my_program.py ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
autostart=true ; start at supervisord start (default: true)
startsecs=3 ; # of secs prog must stay up to be running (def. 1)
当我执行curl http://127.0.0.1:9001
时,我获得了返回的全部index.html页面作为主管GUI的文本。
我知道: 1.服务启动 2.端口9001是开放的,该端口上有服务在监听。
我不知道: 1.如何在浏览器中从笔记本电脑访问它:(
答案 0 :(得分:0)
我终于弄清楚了。
使用安全组为您的ec2实例打开端口80和443。 首先确定您的ec2实例位于哪个安全组。在ec2仪表板中,如果选择ec2实例,您将能够看到它在同一行中的安全组,您可能需要向右滚动才能看到它。 。 转到安全组仪表板,然后选择您的安全组。 将其设置为如下所示,您可以稍后对其进行更严格的限制,这只是现在才可以进行:
制作此/etc/nginx/sites-available/supervisord
文件:
upstream supervisord {
server localhost:9001 fail_timeout=0;
}
server {
listen 80;
server_name ec2-**-***-**-**.compute-1.amazonaws.com;
access_log /var/log/access_supervisor.log;
error_log /var/log/error_supervisor.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://supervisord;
}
}
好的,所以我有server_name ec2-**-***-**-**.compute-1.amazonaws.com;
您需要放置公共DNS(IPV4)。如果您转到ec2仪表板并选择实例,您将在屏幕底部看到一个“说明”标签,您可以在其中获取此信息。我在此处放置*以便不暴露我的名字,但是您将在此处放置实际数字,而不是星号。
sudo ln -s /etc/nginx/sites-available/supervisord /etc/nginx/sites-enable/supervisord
sudo nginx -s reload
参考: https://www.dangtrinh.com/2013/11/supervisord-using-built-in-web.html