Files
django-tinywiki/start-django.sh

85 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
: ${UWSGI_BUFFER_SIZE:=32768}
: ${UWSGI_SOCKET_NAME:=uwsgi.sock}
: ${UWSGI_SOCKET:=/data/run/${UWSGI_SOCKET_NAME}}
: ${UWSGI_PIDFILE_NAME:=uwsgi.pid}
: ${UWSGI_PIDFILE:=/data/run/${UWSGI_SOCKET_NAME}}
: ${UWSGI_PROCESSES:=4}
: ${HTTP_PORT:=8000}
: ${HTTP_ADDRESS:=0.0.0.0}
: ${HTTP_SOCKET:=${HTTP_ADDRESS}:${HTTP_PORT}}
: ${UWSGI_MAX_REQUESTS:=4000}
migrate_db() {
echo "Migrating database ..."
poetry run python manage.py migrate
if [ $? -ne 0 ]; then
echo "Unable to migrate database!" >&2
exit 5
fi
}
collectstatic() {
echo "Running collectstatic ..."
yes yes | poetry run python manage.py collectstatic
if [ $? -ne 0 ]; then
echo "Unable to collect static files!" >&2
exit 5
fi
}
createsuperuser() {
poetry run python manage.py createsuperuser "$@"
}
if [ $# -eq 0 -o "$1" = "start" ]; then
if [ -z "$DEBUG" -o $DEBUG != "1" ]; then
echo "Starting UWSGI server ..."
venv="$(poetry env info | head -n 6 | grep Path | awk '{print $2}')"
poetry run uwsgi \
--chdir /app \
--module django_project.wsgi:application \
--master --pidfile /data/run/uwsgi.pid \
--http-socket "$HTTP_SOCKET" \
--socket "$UWSGI_SOCKET" \
--processes $UWSGI_PROCESSES \
--harakiri 60 \
--max-requests $UWSGI_MAX_REQUESTS \
--buffer-size $UWSGI_BUFFER_SIZE \
--vacuum \
--venv "$venv" \
--home "$venv"
rc=$?
if [ $rc -ne 0 ]; then
echo "UWSGI Server not started" >&2
exit $rc
fi
else
echo "Starting development server ..."
poetry run python manage.py runserver $HTTP_SOCKET
rc=$?
if [ $rc -ne 0 ]; then
echo "Developemnt server was not started!" >&2
exit $rc
fi
fi
elif [ "$1" == "init" -o "$1" == "update" ]; then
migrate_db
collectstatic
elif [ "$1" == "suinit" ]; then
shift
migrate_db
collectstatic
createsuperuser "$@"
elif [ "$1" == "migrate" ]; then
migrate_db
elif [ "$1" == "collectstatic" ]; then
collectstatic
elif [ "$1" == "createsuperuser" ]; then
shift
createsuperuser "$@"
else
exec "$@"
fi