🚀(paas) add PaaS deployment scripts, tested on Scalingo
add PaaS deployment scripts, tested on Scalingo
This commit is contained in:
committed by
aleb_the_flash
parent
69c6e58017
commit
117677bd14
@@ -11,6 +11,7 @@ and this project adheres to
|
|||||||
### Added
|
### Added
|
||||||
|
|
||||||
- ✨(backend) monitor throttling rate failure through sentry #964
|
- ✨(backend) monitor throttling rate failure through sentry #964
|
||||||
|
- 🚀(paas) add PaaS deployment scripts, tested on Scalingo #957
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|||||||
2
Procfile
Normal file
2
Procfile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
web: bin/buildpack_start.sh
|
||||||
|
postdeploy: python manage.py migrate
|
||||||
9
bin/buildpack_postcompile.sh
Executable file
9
bin/buildpack_postcompile.sh
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -o errexit # always exit on error
|
||||||
|
set -o pipefail # don't ignore exit codes when piping output
|
||||||
|
|
||||||
|
echo "-----> Running post-compile script"
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
rm -rf docker docs env.d gitlint
|
||||||
16
bin/buildpack_postfrontend.sh
Executable file
16
bin/buildpack_postfrontend.sh
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -o errexit # always exit on error
|
||||||
|
set -o pipefail # don't ignore exit codes when piping output
|
||||||
|
|
||||||
|
echo "-----> Running post-frontend script"
|
||||||
|
|
||||||
|
# Move the frontend build to the nginx root and clean up
|
||||||
|
mkdir -p build/
|
||||||
|
mv src/frontend/dist build/frontend-out
|
||||||
|
|
||||||
|
mv src/backend/* ./
|
||||||
|
mv deploy/paas/* ./
|
||||||
|
|
||||||
|
echo "3.13" > .python-version
|
||||||
|
echo "." > requirements.txt
|
||||||
15
bin/buildpack_start.sh
Executable file
15
bin/buildpack_start.sh
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Start the Django backend server
|
||||||
|
gunicorn -b 0.0.0.0:8000 meet.wsgi:application --log-file - &
|
||||||
|
|
||||||
|
# Start the Nginx server
|
||||||
|
bin/run &
|
||||||
|
|
||||||
|
# if the current shell is killed, also terminate all its children
|
||||||
|
trap "pkill SIGTERM -P $$" SIGTERM
|
||||||
|
|
||||||
|
# wait for a single child to finish,
|
||||||
|
wait -n
|
||||||
|
# then kill all the other tasks
|
||||||
|
pkill -P $$
|
||||||
52
deploy/paas/servers.conf.erb
Normal file
52
deploy/paas/servers.conf.erb
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# ERB templated nginx configuration
|
||||||
|
# see https://doc.scalingo.com/platform/deployment/buildpacks/nginx
|
||||||
|
|
||||||
|
upstream backend_server {
|
||||||
|
server localhost:8000 fail_timeout=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen <%= ENV["PORT"] %>;
|
||||||
|
server_name _;
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
root /app/build/frontend-out;
|
||||||
|
|
||||||
|
# Django rest framework
|
||||||
|
location ^~ /api/ {
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_pass http://backend_server;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Django admin
|
||||||
|
location ^~ /admin/ {
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_pass http://backend_server;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Serve static files with caching
|
||||||
|
location ~* ^/assets/.*\.(css|js|json|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
||||||
|
expires 30d;
|
||||||
|
add_header Cache-Control "public, max-age=2592000";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Serve static files
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
# Add no-cache headers
|
||||||
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||||||
|
add_header Pragma "no-cache"; # HTTP 1.0 header for backward compatibility
|
||||||
|
add_header Expires 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Optionally, handle 404 errors by redirecting to index.html
|
||||||
|
error_page 404 =200 /index.html;
|
||||||
|
}
|
||||||
@@ -13,11 +13,12 @@ https://docs.djangoproject.com/en/3.1/ref/settings/
|
|||||||
# pylint: disable=too-many-lines
|
# pylint: disable=too-many-lines
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from os import path
|
from os import environ, path
|
||||||
from socket import gethostbyname, gethostname
|
from socket import gethostbyname, gethostname
|
||||||
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
import dj_database_url
|
||||||
import sentry_sdk
|
import sentry_sdk
|
||||||
from configurations import Configuration, values
|
from configurations import Configuration, values
|
||||||
from lasuite.configuration.values import SecretFileValue
|
from lasuite.configuration.values import SecretFileValue
|
||||||
@@ -92,7 +93,9 @@ class Base(Configuration):
|
|||||||
|
|
||||||
# Database
|
# Database
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
"default": {
|
"default": dj_database_url.config()
|
||||||
|
if environ.get("DATABASE_URL")
|
||||||
|
else {
|
||||||
"ENGINE": values.Value(
|
"ENGINE": values.Value(
|
||||||
"django.db.backends.postgresql_psycopg2",
|
"django.db.backends.postgresql_psycopg2",
|
||||||
environ_name="DB_ENGINE",
|
environ_name="DB_ENGINE",
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ dependencies = [
|
|||||||
"Brotli==1.2.0",
|
"Brotli==1.2.0",
|
||||||
"brevo-python==1.2.0",
|
"brevo-python==1.2.0",
|
||||||
"celery[redis]==5.5.3",
|
"celery[redis]==5.5.3",
|
||||||
|
"dj-database-url==3.1.0",
|
||||||
"django-configurations==2.5.1",
|
"django-configurations==2.5.1",
|
||||||
"django-cors-headers==4.9.0",
|
"django-cors-headers==4.9.0",
|
||||||
"django-countries==8.0.0",
|
"django-countries==8.0.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user