#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

[program:uwsgi]
command=/usr/local/bin/uwsgi --ini /pulsar/conf/uwsgi.ini
autostart=true
autorestart=true
startsecs=5
stopasgroup=true
killasgroup=true
stopsignal=TERM
log_stdout=true
log_stderr=true
priority=500
stdout_logfile=/var/log/supervisor/uwsgi.log
stderr_logfile=/var/log/supervisor/uwsgi-error.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=2
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=2


[program:nginx]
command=/usr/sbin/nginx
autostart=true
autorestart=true
startsecs=5
stopasgroup=true
killasgroup=true
stopsignal=TERM
log_stdout=true
log_stderr=true
priority=500
stdout_logfile=/var/log/supervisor/nginx.log
stderr_logfile=/var/log/supervisor/nginx-error.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=2
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=2

[program:collector]
command=/pulsar/django/collector.sh
autostart=true
autorestart=true
startsecs=5
stopasgroup=true
killasgroup=true
stopsignal=TERM
log_stdout=true
log_stderr=true
priority=500
stdout_logfile=/var/log/supervisor/collector.log
stderr_logfile=/var/log/supervisor/collector-error.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=2
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=2
