tornado nginx supervisor
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.