Projet

Général

Profil

0001-add-uwsgi-as-available-application-server-50525.patch

Emmanuel Cazenave, 13 avril 2021 15:43

Télécharger (9,82 ko)

Voir les différences:

Subject: [PATCH] add uwsgi as available application server (#50525)

 roles/app-setup/tasks/main.yml                | 48 +++++++++++++++++++
 .../templates/server-uwsgi-supervisor.j2      | 27 +++++++++++
 roles/app-setup/vars/main.yml                 |  3 ++
 roles/authentic/vars/main.yml                 |  1 +
 roles/base/tasks/main.yml                     | 15 ++++++
 roles/base/templates/get-uwsgidecorators.j2   | 15 ++++++
 roles/bijoe/vars/main.yml                     |  1 +
 roles/chrono/vars/main.yml                    |  1 +
 roles/combo/vars/main.yml                     |  1 +
 roles/fargo/vars/main.yml                     |  1 +
 roles/hobo/vars/main.yml                      |  1 +
 roles/passerelle/vars/main.yml                |  1 +
 roles/wcs/vars/main.yml                       |  1 +
 roles/welco/vars/main.yml                     |  1 +
 14 files changed, 117 insertions(+)
 create mode 100644 roles/app-setup/templates/server-uwsgi-supervisor.j2
 create mode 100644 roles/base/templates/get-uwsgidecorators.j2
roles/app-setup/tasks/main.yml
107 107
    src: server-supervisor.j2
108 108
    dest: "/etc/supervisor/conf.d/{{server_app_name}}.conf"
109 109
  become: yes
110

  
111
- name: "{{app_name}} - copy uwsgi configuration file"
112
  copy:
113
    src: "{{uwsgi_settings_orig}}"
114
    dest: "{{uwsgi_settings}}"
115

  
116
- name: "{{app_name}} - comment cron options in uwsgi configuration file"
117
  replace:
118
    path: "{{uwsgi_settings}}"
119
    regexp: '^(cron.*)'
120
    replace: '# \1'
121

  
122
- name: "{{app_name}} - change http-to option in uwsgi configuration file"
123
  ini_file:
124
    path: "{{uwsgi_settings}}"
125
    section: uwsgi
126
    option: http-socket
127
    value: ":{{server_port}}"
128

  
129
- name: "{{app_name}} - set py-auto-reload in uwsgi configuration file"
130
  ini_file:
131
    path: "{{uwsgi_settings}}"
132
    section: uwsgi
133
    option: py-auto-reload
134
    value: 1
135

  
136
- name: '{{app_name}} - change local configuration path in uwsgi configuration file'
137
  replace:
138
    path: '{{uwsgi_settings}}'
139
    regexp: '/etc/{{project_name}}/'
140
    replace: '{{app_settings_dir}}/settings.d/'
141

  
142
- name: "{{app_name}} - uwsgi server supervisor configuration"
143
  template:
144
    src: server-uwsgi-supervisor.j2
145
    dest: "/etc/supervisor/conf.d/{{server_app_name}}-uwsgi.conf"
146
  become: yes
147

  
148
- name: "{{app_name}} - create some directories"
149
  file:
150
    path: "{{item}}"
151
    state: directory
152
    owner: "{{user}}"
153
    group: "{{user}}"
154
  become: yes
155
  loop:
156
     - "{{run_dir}}"
157
     - "{{spooler_dir}}"
roles/app-setup/templates/server-uwsgi-supervisor.j2
1
[program:{{server_app_name}}-uwsgi]
2
command=/usr/bin/uwsgi --ini {{uwsgi_settings}} -H {{venv_py3}} --spooler {{state_dir}}/spooler/
3
environment={{settings_env_var}}="{{app_settings}}"
4
process_name={{server_app_name}}-uwsgi
5
user={{user}}
6
numprocs=1
7
stdout_logfile={{log_dir}}/stdout.log
8
stderr_logfile={{log_dir}}/stderr.log
9

  
10
autostart=false
11
autorestart=true
12
startsecs=10
13
; Need to wait for currently executing tasks to finish at shutdown.
14
; Increase this if you have very long running tasks.
15
stopwaitsecs = 600
16

  
17
stopsignal=KILL
18
; When resorting to send SIGKILL to the program to terminate it
19
; send SIGKILL to its whole process group instead,
20
; taking care of its children as well.
21
killasgroup=true
22
stopasgroup=true
23

  
24
; if rabbitmq is supervised, set its priority higher
25
; so it starts first
26
priority=998
27

  
roles/app-setup/vars/main.yml
1 1
log_dir: "/var/log/{{server_app_name}}"
2
run_dir: "/run/{{project_name}}"
2 3
state_dir: "/var/lib/{{project_name}}"
4
spooler_dir: "{{state_dir}}/spooler"
3 5
tenants_dir: "/var/lib/{{project_name}}/tenants"
6
uwsgi_settings: "{{publik_settings}}/{{project_name}}/uwsgi.ini"
roles/authentic/vars/main.yml
8 8
project_name: "{{apps['authentic']['project_name']}}"
9 9
server_port: "{{apps['authentic']['server_port']}}"
10 10
settings_env_var: AUTHENTIC2_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/authentic2-multitenant-uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
roles/base/tasks/main.yml
29 29
       - virtualenv
30 30
       - pkg-config
31 31
       - libsystemd-dev
32
       - uwsgi
33
       - uwsgi-plugin-python3
34
       - python3-uwsgidecorators
32 35
    state: present
33 36
  become: yes
34 37

  
......
107 110
- name: execute getlasso
108 111
  command: "{{venv_py3_bin}}/getlasso.sh"
109 112

  
113
- name: create get-uwsgidecorators scripts
114
  template:
115
    src: get-uwsgidecorators.j2
116
    dest: "{{venv_py3_bin}}/get-uwsgidecorators.sh"
117
    mode: "u=rwx,g=rx,o=rx"
118
  vars:
119
    virtualenv_python: "{{venv_py3_python}}"
120
    system_python: "/usr/bin/python3"
121

  
122
- name: execute get-uwsgidecorators
123
  command: "{{venv_py3_bin}}/get-uwsgidecorators.sh"
124

  
110 125
- name: source install eopayment
111 126
  include_tasks: install_source.yml
112 127
  vars:
roles/base/templates/get-uwsgidecorators.j2
1
#!/bin/sh
2

  
3
# Get venv site-packages path
4
DSTDIR=`{{virtualenv_python}} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`
5

  
6
SRCDIR=`{{system_python}} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`
7

  
8
# Clean up
9
rm -f $DSTDIR/uwsgidecorators.py*
10

  
11
# Link
12
ln -sv $SRCDIR/uwsgidecorators.py $DSTDIR
13

  
14
exit 0
15

  
roles/bijoe/vars/main.yml
8 8
project_name: "{{apps['bijoe']['project_name']}}"
9 9
server_port: "{{apps['bijoe']['server_port']}}"
10 10
settings_env_var: BIJOE_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
roles/chrono/vars/main.yml
8 8
project_name: "{{apps['chrono']['project_name']}}"
9 9
server_port: "{{apps['chrono']['server_port']}}"
10 10
settings_env_var: CHRONO_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
roles/combo/vars/main.yml
8 8
project_name: "{{apps['combo']['project_name']}}"
9 9
server_port: "{{apps['combo']['server_port']}}"
10 10
settings_env_var: COMBO_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
roles/fargo/vars/main.yml
8 8
project_name: "{{apps['fargo']['project_name']}}"
9 9
server_port: "{{apps['fargo']['server_port']}}"
10 10
settings_env_var: FARGO_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
roles/hobo/vars/main.yml
8 8
project_name: "{{apps['hobo']['project_name']}}"
9 9
server_port: "{{apps['hobo']['server_port']}}"
10 10
settings_env_var: HOBO_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/server/uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
roles/passerelle/vars/main.yml
8 8
project_name: "{{apps['passerelle']['project_name']}}"
9 9
server_port: "{{apps['passerelle']['server_port']}}"
10 10
settings_env_var: PASSERELLE_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
roles/wcs/vars/main.yml
9 9
project_name: "{{apps['wcs']['project_name']}}"
10 10
server_port: "{{apps['wcs']['server_port']}}"
11 11
settings_env_var: WCS_SETTINGS_FILE
12
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
12 13
virtualenv: "{{venv_py3}}"
roles/welco/vars/main.yml
8 8
project_name: "{{apps['welco']['project_name']}}"
9 9
server_port: "{{apps['welco']['server_port']}}"
10 10
settings_env_var: WELCO_SETTINGS_FILE
11
uwsgi_settings_orig: "{{src_dir}}/{{app_name}}/debian/uwsgi.ini"
11 12
virtualenv: "{{venv_py3}}"
12
-