]> git.parisson.com Git - teleforma.git/commitdiff
fix prod mode with asgi for channels, adapt wsgi params and settings for pre-prod
authorGuillaume Pellerin <guillaume.pellerin@parisson.com>
Tue, 22 Jun 2021 00:09:07 +0000 (02:09 +0200)
committerGuillaume Pellerin <guillaume.pellerin@parisson.com>
Tue, 22 Jun 2021 00:09:07 +0000 (02:09 +0200)
15 files changed:
app/asgi.py [new file with mode: 0644]
app/asgi.sh [new file with mode: 0755]
app/bin/app.sh [deleted file]
app/bin/init.sh [deleted file]
app/bin/wait.sh [deleted file]
app/init.sh [new file with mode: 0755]
app/settings.py
app/wait.sh [new file with mode: 0755]
app/wsgi.sh [new file with mode: 0755]
docker-compose.yml
env/debug.env
env/prod.env
env/prod.yml
lib/pdfannotator
requirements.txt

diff --git a/app/asgi.py b/app/asgi.py
new file mode 100644 (file)
index 0000000..fd5bbdc
--- /dev/null
@@ -0,0 +1,30 @@
+import os, sys
+from django.core.asgi import get_asgi_application
+
+#sys.path.append(os.path.dirname('.'))
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
+django_asgi_app = get_asgi_application()
+
+from channels.auth import AuthMiddlewareStack
+from channels.routing import ProtocolTypeRouter, URLRouter
+from django.urls import re_path
+from teleforma.ws import chat
+
+websocket_urlpatterns = [
+    re_path(r'ws/chat/(?P<room_name>\w+)/$', chat.ChatConsumer.as_asgi()),
+]
+
+
+application = ProtocolTypeRouter({
+    "http": django_asgi_app,
+    "websocket": AuthMiddlewareStack(
+        URLRouter(
+            websocket_urlpatterns
+        )
+    ),
+})
+
+
+
+
+
diff --git a/app/asgi.sh b/app/asgi.sh
new file mode 100755 (executable)
index 0000000..0546b3e
--- /dev/null
@@ -0,0 +1,3 @@
+
+daphne -b 0.0.0.0 -p 8000 asgi:application
+
diff --git a/app/bin/app.sh b/app/bin/app.sh
deleted file mode 100755 (executable)
index 45cc51b..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-
-# paths
-app='/srv/app'
-manage=$app'/manage.py'
-wsgi=$app'/wsgi.py'
-static='/srv/static/'
-media='/srv/media/'
-src='/srv/src/'
-uwsgi_log='/var/log/uwsgi/app.log'
-debug_log='/var/log/app/debug.log'
-
-# uwsgi params
-port=8000
-processes=8
-threads=16
-autoreload=3
-uid='www-data'
-gid='www-data'
-# patterns='*.js;*.css;*.jpg;*.jpeg;*.gif;*.png;*.svg;*.ttf;*.eot;*.woff;*.woff2'
-
-# Install a package in development mode
-# without rebuidling docker image.
-# You need at first checkout your sources in 'lib' folder
-# in host project side, then run :
-# pip install -e /srv/lib/mypackage...
-#pip install mysqlclient==1.3.13
-
-# Install (staging) libs
-# /srv/bin/build/local/setup_lib.sh
-
-# waiting for other services
-sh $app/bin/wait.sh
-
-# django setup
-#python $manage wait-for-db
-
-# initial setup
-# if [ ! -f .init ]; then
-#     bash $app/bin/init.sh
-#     touch .init
-# fi
-
-# app start
-if [ "$1" = "--runserver" ]; then
-    python $manage runserver 0.0.0.0:8000
-else
-    # static files auto update
-    # watchmedo shell-command --patterns="$patterns" --recursive \
-    #     --command='python '$manage' collectstatic --noinput' $app &
-
-    python $manage collectstatic --noinput
-
-    chown www-data: $debug_log
-
-    uwsgi --socket :$port --wsgi-file $wsgi --chdir $app --master \
-    --processes $processes --threads $threads \
-    --uid $uid --gid $gid --logto $uwsgi_log --touch-reload $wsgi
-fi
diff --git a/app/bin/init.sh b/app/bin/init.sh
deleted file mode 100755 (executable)
index 1aa59bf..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-# paths
-app='/srv/app'
-manage=$app'/manage.py'
-
-python $manage migrate --noinput
-python $manage create-admin-user
-python $manage create-default-organization
-python $manage build-front
-
-# @todo searching every fixtures file in each folder
-python $manage loaddata $app/organization/job/fixtures/organization-job.json
-python $manage loaddata $app/organization/projects/fixtures/organization-projects-repositorysystems.json
-
-bash /srv/doc/build.sh
diff --git a/app/bin/wait.sh b/app/bin/wait.sh
deleted file mode 100755 (executable)
index e4c9450..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-/srv/bin/misc/wait-for-it/wait-for-it.sh -h $DB_HOST -p $DB_PORT;
-/srv/bin/misc/wait-for-it/wait-for-it.sh -h redis -p 6379;
diff --git a/app/init.sh b/app/init.sh
new file mode 100755 (executable)
index 0000000..1aa59bf
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+# paths
+app='/srv/app'
+manage=$app'/manage.py'
+
+python $manage migrate --noinput
+python $manage create-admin-user
+python $manage create-default-organization
+python $manage build-front
+
+# @todo searching every fixtures file in each folder
+python $manage loaddata $app/organization/job/fixtures/organization-job.json
+python $manage loaddata $app/organization/projects/fixtures/organization-projects-repositorysystems.json
+
+bash /srv/doc/build.sh
index 32ba886650d3e0c7abc634c6ac04def61f47251e..51dc06388208f38a62c1515890f343fafeaee2f4 100644 (file)
@@ -344,7 +344,7 @@ LOGGING = {
         'file': {
             'level': 'DEBUG',
             'class': 'logging.FileHandler',
-            'filename': "/var/log/app.log",
+            'filename': "/var/log/app/app.log",
             'formatter': 'simple',
         },
         'console': {
@@ -379,7 +379,9 @@ POSTMAN_SHOW_USER_AS = show_user_as
 
 #THUMBNAIL_FORCE_OVERWRITE = True
 
-ALLOWED_HOSTS = ['localhost', 'crfpa.dockdev.pilotsystems.net']
+ALLOWED_HOSTS = ['localhost', 'crfpa.dockdev.pilotsystems.net', 
+    'staging.docker.e-learning.crfpa.pre-barreau.parisson.com', 
+]
 
 JAZZMIN_SETTINGS = {
     "site_title": "CRFPA",
diff --git a/app/wait.sh b/app/wait.sh
new file mode 100755 (executable)
index 0000000..e4c9450
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+/srv/bin/misc/wait-for-it/wait-for-it.sh -h $DB_HOST -p $DB_PORT;
+/srv/bin/misc/wait-for-it/wait-for-it.sh -h redis -p 6379;
diff --git a/app/wsgi.sh b/app/wsgi.sh
new file mode 100755 (executable)
index 0000000..7fcc668
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+# paths
+app='/srv/app'
+manage=$app'/manage.py'
+wsgi=$app'/wsgi.py'
+static='/srv/static/'
+media='/srv/media/'
+src='/srv/src/'
+uwsgi_log='/var/log/uwsgi/app.log'
+debug_log='/var/log/app/debug.log'
+
+# uwsgi params
+port=8000
+processes=64
+#threads=2
+autoreload=3
+uid='www-data'
+gid='www-data'
+# patterns='*.js;*.css;*.jpg;*.jpeg;*.gif;*.png;*.svg;*.ttf;*.eot;*.woff;*.woff2'
+
+# Install a package in development mode
+# without rebuidling docker image.
+# You need at first checkout your sources in 'lib' folder
+# in host project side, then run :
+# pip install -e /srv/lib/mypackage...
+pip3 install -U uwsgi
+
+# Install (staging) libs
+# /srv/bin/build/local/setup_lib.sh
+
+# waiting for other services
+sh $app/wait.sh
+
+# django setup
+#python $manage wait-for-db
+
+# initial setup
+# if [ ! -f .init ]; then
+#     bash $app/bin/init.sh
+#     touch .init
+# fi
+
+# app start
+if [ "$1" = "--runserver" ]; then
+    python $manage runserver 0.0.0.0:8000
+else
+    # static files auto update
+    # watchmedo shell-command --patterns="$patterns" --recursive \
+    #     --command='python '$manage' collectstatic --noinput' $app &
+
+    python $manage collectstatic --noinput
+
+    chown -R www-data: $debug_log
+
+    uwsgi --socket :$port --wsgi-file $wsgi --chdir $app --master \
+    --processes $processes \
+    --uid $uid --gid $gid --logto $uwsgi_log --touch-reload $wsgi
+fi
index 1b97ffd9a9620f6f77756585f3b89bd191a5314e..83c33c214cd18bca335fd3619c2ab4e82b71de13 100644 (file)
@@ -6,7 +6,7 @@ services:
       context: .
       args:
         dev: 1
-    command: /bin/sh /srv/app/bin/app.sh --runserver
+    command: /bin/sh /srv/app/wsgi.sh --runserver
     volumes:
       - ./app/:/srv/app
       - ./bin:/srv/bin
@@ -15,8 +15,10 @@ services:
       - ./var/media:/srv/media
       - ./var/backup:/srv/backup
       - ./var/static:/srv/static
+      - ./var/log/app:/var/log/app
+      - ./var/log/uwsgi:/var/log/uwsgi
     ports:
-      - "8000:8000"
+      - "9001:8000"
     links:
       - postgres
       - redis
index 3634c8f519e398006616ff4c8c427dc48b6e8315..90cb743654d3c7e15618a63828a7875ac7168844 100644 (file)
@@ -1,12 +1,7 @@
 DEBUG=True
 
-MYSQL_ROOT_PASSWORD=mysecretpassword
-MYSQL_DATABASE=teleforma
-MYSQL_USER=teleforma
-MYSQL_PASSWORD=mysecretpassword
 DB_PORT=5432
 DB_HOST=postgres
-
 POSTGRES_PASSWORD=mysecretpassword
 POSTGRES_DATABASE=teleforma
 POSTGRES_USER=teleforma
index 886325c1178acb09b4f3815133be21538f8a41cf..90cb743654d3c7e15618a63828a7875ac7168844 100644 (file)
@@ -1,7 +1,7 @@
-DEBUG=False
+DEBUG=True
 
-MYSQL_ROOT_PASSWORD=mysecretpassword
-MYSQL_DATABASE=teleforma
-MYSQL_USER=teleforma
-MYSQL_PASSWORD=mysecretpassword
-DB_PORT=3306
+DB_PORT=5432
+DB_HOST=postgres
+POSTGRES_PASSWORD=mysecretpassword
+POSTGRES_DATABASE=teleforma
+POSTGRES_USER=teleforma
index 766b5a0081e9d6ed85f237e1d172faefb2b6afa1..52e03f0eaf67b84a9eb67cdfe6d8f0352927a35f 100644 (file)
@@ -1,8 +1,28 @@
 version: '3'
 
 services:
-    app:
-        restart: unless-stopped
-        env_file:
-            - env/prod.env
-
+  app:
+    command: /bin/sh /srv/app/wsgi.sh
+    restart: unless-stopped
+    env_file:
+      - env/prod.env
+  
+  channels:
+    build:
+      context: .
+      args:
+        dev: 1
+    command: /bin/sh /srv/app/asgi.sh
+    volumes:
+      - ./app/:/srv/app
+      - ./bin:/srv/bin
+      - ./lib:/srv/lib
+      - ./teleforma/:/srv/src/teleforma/teleforma
+      - ./var/log/app:/var/log/app
+    ports:
+      - "9002:8000"
+    links:
+      - postgres
+      - redis
+    env_file:
+      - env/prod.env
index 366878027aafe7f42dbcab8eed55e76259dcecd7..c6b953270e4e8a7d97853d7a784f8e6df9ed9c53 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 366878027aafe7f42dbcab8eed55e76259dcecd7
+Subproject commit c6b953270e4e8a7d97853d7a784f8e6df9ed9c53
index 915b449daffb1e27494392d47954f421b2a12ab5..0295153b85cab25f1c92bbda940dead378709f1b 100644 (file)
@@ -30,3 +30,5 @@ xlrd==2.0.1
 xlwt==1.3.0
 psycopg2==2.8.6 
 redis==3.5.3 
+uwsgi==2.0.19
+daphne==3.0.2