add uwsgi as available application server (#50525)

This commit is contained in:
Emmanuel Cazenave 2021-03-31 16:22:35 +02:00
parent 8e21534e3e
commit 934cfff69d
14 changed files with 117 additions and 0 deletions

View File

@ -107,3 +107,51 @@
src: server-supervisor.j2
dest: "/etc/supervisor/conf.d/{{server_app_name}}.conf"
become: yes
- name: "{{app_name}} - copy uwsgi configuration file"
copy:
src: "{{uwsgi_settings_orig}}"
dest: "{{uwsgi_settings}}"
- name: "{{app_name}} - comment cron options in uwsgi configuration file"
replace:
path: "{{uwsgi_settings}}"
regexp: '^(cron.*)'
replace: '# \1'
- name: "{{app_name}} - change http-to option in uwsgi configuration file"
ini_file:
path: "{{uwsgi_settings}}"
section: uwsgi
option: http-socket
value: ":{{server_port}}"
- name: "{{app_name}} - set py-auto-reload in uwsgi configuration file"
ini_file:
path: "{{uwsgi_settings}}"
section: uwsgi
option: py-auto-reload
value: 1
- name: '{{app_name}} - change local configuration path in uwsgi configuration file'
replace:
path: '{{uwsgi_settings}}'
regexp: '/etc/{{project_name}}/'
replace: '{{app_settings_dir}}/settings.d/'
- name: "{{app_name}} - uwsgi server supervisor configuration"
template:
src: server-uwsgi-supervisor.j2
dest: "/etc/supervisor/conf.d/{{server_app_name}}-uwsgi.conf"
become: yes
- name: "{{app_name}} - create some directories"
file:
path: "{{item}}"
state: directory
owner: "{{user}}"
group: "{{user}}"
become: yes
loop:
- "{{run_dir}}"
- "{{spooler_dir}}"

View File

@ -0,0 +1,27 @@
[program:{{server_app_name}}-uwsgi]
command=/usr/bin/uwsgi --ini {{uwsgi_settings}} -H {{venv_py3}} --spooler {{state_dir}}/spooler/
environment={{settings_env_var}}="{{app_settings}}"
process_name={{server_app_name}}-uwsgi
user={{user}}
numprocs=1
stdout_logfile={{log_dir}}/stdout.log
stderr_logfile={{log_dir}}/stderr.log
autostart=false
autorestart=true
startsecs=10
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
stopsignal=KILL
; When resorting to send SIGKILL to the program to terminate it
; send SIGKILL to its whole process group instead,
; taking care of its children as well.
killasgroup=true
stopasgroup=true
; if rabbitmq is supervised, set its priority higher
; so it starts first
priority=998

View File

@ -1,3 +1,6 @@
log_dir: "/var/log/{{server_app_name}}"
run_dir: "/run/{{project_name}}"
state_dir: "/var/lib/{{project_name}}"
spooler_dir: "{{state_dir}}/spooler"
tenants_dir: "/var/lib/{{project_name}}/tenants"
uwsgi_settings: "{{publik_settings}}/{{project_name}}/uwsgi.ini"

View File

@ -8,4 +8,5 @@ nginx_template_name: "std-nginx-server.j2"
project_name: "{{apps['authentic']['project_name']}}"
server_port: "{{apps['authentic']['server_port']}}"
settings_env_var: AUTHENTIC2_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/authentic2-multitenant-uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -29,6 +29,9 @@
- virtualenv
- pkg-config
- libsystemd-dev
- uwsgi
- uwsgi-plugin-python3
- python3-uwsgidecorators
state: present
become: yes
@ -107,6 +110,18 @@
- name: execute getlasso
command: "{{venv_py3_bin}}/getlasso.sh"
- name: create get-uwsgidecorators scripts
template:
src: get-uwsgidecorators.j2
dest: "{{venv_py3_bin}}/get-uwsgidecorators.sh"
mode: "u=rwx,g=rx,o=rx"
vars:
virtualenv_python: "{{venv_py3_python}}"
system_python: "/usr/bin/python3"
- name: execute get-uwsgidecorators
command: "{{venv_py3_bin}}/get-uwsgidecorators.sh"
- name: source install eopayment
include_tasks: install_source.yml
vars:

View File

@ -0,0 +1,15 @@
#!/bin/sh
# Get venv site-packages path
DSTDIR=`{{virtualenv_python}} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`
SRCDIR=`{{system_python}} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`
# Clean up
rm -f $DSTDIR/uwsgidecorators.py*
# Link
ln -sv $SRCDIR/uwsgidecorators.py $DSTDIR
exit 0

View File

@ -8,4 +8,5 @@ nginx_template_name: "std-nginx-server.j2"
project_name: "{{apps['bijoe']['project_name']}}"
server_port: "{{apps['bijoe']['server_port']}}"
settings_env_var: BIJOE_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -8,4 +8,5 @@ nginx_template_name: "chrono-nginx-server.j2"
project_name: "{{apps['chrono']['project_name']}}"
server_port: "{{apps['chrono']['server_port']}}"
settings_env_var: CHRONO_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -8,4 +8,5 @@ nginx_template_name: "std-nginx-server.j2"
project_name: "{{apps['combo']['project_name']}}"
server_port: "{{apps['combo']['server_port']}}"
settings_env_var: COMBO_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -8,4 +8,5 @@ nginx_template_name: "fargo-nginx-server.j2"
project_name: "{{apps['fargo']['project_name']}}"
server_port: "{{apps['fargo']['server_port']}}"
settings_env_var: FARGO_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -8,4 +8,5 @@ nginx_template_name: "std-nginx-server.j2"
project_name: "{{apps['hobo']['project_name']}}"
server_port: "{{apps['hobo']['server_port']}}"
settings_env_var: HOBO_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/server/uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -8,4 +8,5 @@ nginx_template_name: "std-nginx-server.j2"
project_name: "{{apps['passerelle']['project_name']}}"
server_port: "{{apps['passerelle']['server_port']}}"
settings_env_var: PASSERELLE_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -9,4 +9,5 @@ nginx_template_name: "wcs-nginx-server.j2"
project_name: "{{apps['wcs']['project_name']}}"
server_port: "{{apps['wcs']['server_port']}}"
settings_env_var: WCS_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
virtualenv: "{{venv_py3}}"

View File

@ -8,4 +8,5 @@ nginx_template_name: "welco-nginx-server.j2"
project_name: "{{apps['welco']['project_name']}}"
server_port: "{{apps['welco']['server_port']}}"
settings_env_var: WELCO_SETTINGS_FILE
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
virtualenv: "{{venv_py3}}"