Skip to content

Commit

Permalink
fix: switch to gunicorn WSGI server
Browse files Browse the repository at this point in the history
  • Loading branch information
satterly committed Apr 7, 2024
1 parent 2a246f8 commit 6c5ee87
Show file tree
Hide file tree
Showing 10 changed files with 32 additions and 58 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ contrib/kubernetes/helm/alerta/charts
.idea/*

/.bundle/

/venv/
6 changes: 1 addition & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@ ENV WEBUI_VERSION=8.7.0
ENV NGINX_WORKER_PROCESSES=1
ENV NGINX_WORKER_CONNECTIONS=1024

ENV UWSGI_PROCESSES=5
ENV UWSGI_LISTEN=100
ENV UWSGI_BUFFER_SIZE=8192
ENV UWSGI_MAX_WORKER_LIFETIME=30
ENV UWSGI_WORKER_LIFETIME_DELTA=3
ENV GUNICORN_WORKERS=5

ENV HEARTBEAT_SEVERITY=major
ENV HK_EXPIRED_DELETE_HRS=2
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ API to ease deployment more generally:
`NGINX_WORKER_CONNECTIONS`
- maximum number of simultaneous connections that can be opened by a worker process (default:`1024`)

`UWSGI_PROCESSES`
- number of processes for uWSGI (default:`5`)
`GUNICORN_WORKERS`
- number of worker processes for Gunicorn (default:`5`)

`UWSGI_LISTEN`
- max number of concurrent connections (default:`100`)
Expand Down
8 changes: 8 additions & 0 deletions config/templates/app/gunicorn.conf.py.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

bind = 127.0.0.1:29000
worker_tmp_dir = '/dev/shm'
workers = {{ env.GUNICORN_WORKERS }}

{%- if env.DEBUG %}
loglevel = 'debug'
{%- endif %}
12 changes: 5 additions & 7 deletions config/templates/app/nginx.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ http {
fastcgi_temp_path /tmp/fastcgi_temp;
proxy_temp_path /tmp/proxy_temp;
scgi_temp_path /tmp/scgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;

include /etc/nginx/mime.types;

Expand Down Expand Up @@ -47,13 +46,12 @@ http {
access_log /dev/stdout main;

location /api {
include /etc/nginx/uwsgi_params;
uwsgi_pass backend;
proxy_pass backend;

uwsgi_param Host $host;
uwsgi_param X-Real-IP $remote_addr;
uwsgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
uwsgi_param X-Forwarded-Proto $http_x_forwarded_proto;
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 X-Forwarded-Proto $http_x_forwarded_proto;
}

root /web;
Expand Down
8 changes: 6 additions & 2 deletions config/templates/app/supervisord.conf.j2
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ logfile=/tmp/supervisord.log
loglevel={{ env.SUPERVISORD_LOG_LEVEL|lower or 'debug' }}
pidfile=/tmp/supervisord.pid

[program:uwsgi]
command=/venv/bin/uwsgi --ini /app/uwsgi.ini
[program:gunicorn]
command=/venv/bin/gunicorn wsgi:app -c /app/gunicorn.conf.py
directory=/path/to/project
user=nobody
autostart=true
autorestart=true
redirect_stderr=true

[program:nginx]
Expand Down
34 changes: 0 additions & 34 deletions config/templates/app/uwsgi.ini.j2

This file was deleted.

2 changes: 1 addition & 1 deletion contrib/kubernetes/backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y \

RUN pip install --no-cache-dir virtualenv && \
virtualenv --python=python3 /venv && \
/venv/bin/pip install uwsgi alerta alerta-server==$VERSION
/venv/bin/pip install gunicorn alerta alerta-server==$VERSION

ENV PATH $PATH:/venv/bin

Expand Down
12 changes: 6 additions & 6 deletions docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ ALERTA_CONF_FILE=${ALERTA_CONF_FILE:-/app/alerta.conf}
ALERTA_SVR_CONF_FILE=${ALERTA_SVR_CONF_FILE:-/app/alertad.conf}
ALERTA_WEB_CONF_FILE=${ALERTA_WEB_CONF_FILE:-/web/config.json}
NGINX_CONF_FILE=/app/nginx.conf
UWSGI_CONF_FILE=/app/uwsgi.ini
GUNICORN_CONF_FILE=/app/gunicorn.conf.py
SUPERVISORD_CONF_FILE=/app/supervisord.conf

ADMIN_USER=${ADMIN_USERS%%,*}
Expand Down Expand Up @@ -69,10 +69,10 @@ if [ ! -f "${NGINX_CONF_FILE}" ]; then
fi
nginx -t -c ${NGINX_CONF_FILE}

# Generate uWSGI config, if not supplied.
if [ ! -f "${UWSGI_CONF_FILE}" ]; then
echo "# Create uWSGI configuration file."
python3 -c "${JINJA2}" < ${UWSGI_CONF_FILE}.j2 >${UWSGI_CONF_FILE}
# Generate Gunicorn config, if not supplied.
if [ ! -f "${GUNICORN_CONF_FILE}" ]; then
echo "# Create Gunicorn configuration file."
python3 -c "${JINJA2}" < ${GUNICORN_CONF_FILE}.j2 >${GUNICORN_CONF_FILE}
fi

# Generate web config, if not supplied.
Expand All @@ -88,7 +88,7 @@ echo Alerta Client ${CLIENT_VERSION}
echo Alerta WebUI ${WEBUI_VERSION}

nginx -v
echo uwsgi $(uwsgi --version)
echo gunicorn $(gunicorn --version)
mongo --version | grep MongoDB
psql --version
python3 --version
Expand Down
2 changes: 1 addition & 1 deletion requirements-docker.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
lxml==4.9.2
pysaml2==7.2.1
python-ldap==3.4.3
uWSGI==2.0.21
gunicorn==21.2.0

0 comments on commit 6c5ee87

Please sign in to comment.