tornado nginx supervisor

6342 단어
설치: sudo apt - get install python - tornado
        sudo apt-get install nginx
        sudo apt-get install supervisor
 
1. nginx 설정.내 가 설치 한 nginx 디 렉 터 리 는 두 개의 프로필 입 니 다. /etc/nginx/nginx.conf   화해시키다  /etc/nginx/conf.d/foo.conf.
실제로 nginx. conf 에는 파일 foo. conf 가 포함 되 어 있 습 니 다.
따라서 특별한 수요 가 없다 면 nginx. conf 를 변경 할 필요 가 없습니다. conf. d 폴 더 에서 conf 파일 을 새로 만 듭 니 다.
 
 
 

foo. conf 의 내용;
upstream  foo  {
    #ip_hash;
    #consistent_hash $args;       nginx       ,         80        6900,6901,6902  。       。     supervisor,          web  ,  6900,6901,6902
    server   127.0.0.1:6900 weight=1 max_fails=2 fail_timeout=30s;
    server   127.0.0.1:6901 weight=1 max_fails=2 fail_timeout=30s;
    server   127.0.0.1:6902 weight=1 max_fails=2 fail_timeout=30s;
    
}

server {
    listen  80;
    server_tag off;
    index index.html;
    charset utf-8;
 
  
  

    location / {
        proxy_read_timeout  100;
        proxy_pass_header   User-Agent;
        proxy_set_header    Host             $http_host;
        proxy_set_header    X-Real-IP        $remote_addr;
        proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header    X-Scheme         $scheme;
        proxy_set_header    Accept-Encoding  'gzip';
        proxy_pass          http://foo;
        proxy_redirect      off;
        proxy_store         off;
        
    }
    
    
    location /stat {
        stub_status    on;
        access_log    off;
    }
       
    
    proxy_buffering off;

}

nginx: sudo / usr / sbin / nginx 실행
이 오류 가 발생 하면:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
80 이 점용 되 었 기 때문에 nginx 에 의 해 점용 되 었 을 가능성 이 높 습 니 다.
프로 세 스 가 끝 났 거나 nginx 프로 세 스 가 끝 났 는 지 찾 습 니 다. /usr/sbin/nginx -s stop
4. / etc / supervisor / supervisord. conf 내용: ()
[unix_http_server]
file=/var/run//supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('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

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf
## include , /etc/supervisor/conf.d/ conf 。

예 를 들 어 conf. d 폴 더 에 새로 만 든 tornado. conf 파일
[program:tornado-80]
command=python /var/www/starter.py 6901 #      web,   nginx  ,     6902,6900  
directory=/var/www/
user=www-data
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/tornado.log
loglevel=info

 
슈퍼 바 이 저 시작:
사용법: / etc / init. d / supervisord {start | stop | restart | force - load | status | force - stop} 이 슈퍼 바 이 저 명령 행 에 들 어 갑 니 다.
sudo supervisorctl
 
 
5. 슈퍼 바 이 저 프로 세 스 수호:
#!/bin/sh

pywebn=`ps aux | grep supervisord | grep -v "grep" | wc -l`; #wc -l             ,     1,        ,      

if [ "$pywebn" != "1" ]; then
    sleep 1;
    /usr/bin/python /usr/local/bin/supervisord -c /etc/supervisord.conf;

else
    break;
fi

 
 6. 잘못 배열
INFO gave up: tornado entered FATAL state, too many start retries too quickly
이 인터넷 에는 많은 상황 이 있 습 니 다. 기본적으로 당신 의 프로그램 이 실행 되 었 기 때문에 종료 되 었 습 니 다. 그리고 실행 되 었 다가 다시 종료 되 었 습 니 다. 그래서 발생 한 것 입 니 다.
프로그램 에 문제 가 있 는 지 확인 하려 면 python web. py 80 일 때 문제 가 있 습 니 다. python web. py 8888 로 바 꾸 면 괜 찮 습 니 다.
셸 에서 python 을 직접 실행 합 니 다.  web.py 80  문제 없어 요.
 
 
만약 supervisor 에 문제 가 있다 면, / var / log / supervisor / supervisord. log 를 볼 필요 가 있 는 것 외 에, 예 를 들 어 / var / log / tornado. log 를 볼 필요 가 있 습 니 다.
 
 
다음으로 전송:https://www.cnblogs.com/maseng/p/3497745.html

좋은 웹페이지 즐겨찾기