1
0
Fork 0

Introduce SatNOGS Django control script, update documentation

Signed-off-by: Vasilis Tsiligiannis <acinonyx@openwrt.gr>
environments/stage/deployments/290
Vasilis Tsiligiannis 2019-01-23 21:34:35 +02:00
parent 219e87f7ff
commit a667fc5396
2 changed files with 153 additions and 26 deletions

138
bin/djangoctl.sh 100644
View File

@ -0,0 +1,138 @@
#!/bin/sh -e
#
# SatNOGS Django control script
#
# Copyright (C) 2018-2019 Libre Space Foundation <https://libre.space/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
MANAGE_CMD="django-admin"
WSGI_SERVER="gunicorn"
DJANGO_APP="network"
CELERY_VAR_RUN="/var/run/celery"
usage() {
cat <<EOF
Usage: $(basename "$0") [OPTIONS]... [COMMAND]...
SatNOGS Django control script.
COMMANDS:
prepare Collect static files, compress templates and
apply migrations
initialize Load initial fixtures
run Run WSGI HTTP server
run_celery [worker|beat]
Run Celery worker or beat
develop [SOURCE_DIR] Run application in development mode, optionally
installing SOURCE_DIR in editable mode
develop_celery [SOURCE_DIR]
Run Celery, optionally installing SOURCE_DIR
in editable mode
OPTIONS:
--help Print usage
EOF
exit 1
}
prepare() {
"$MANAGE_CMD" collectstatic --noinput --clear
"$MANAGE_CMD" compress --force
"$MANAGE_CMD" migrate --noinput
}
install_editable() {
pip install \
--no-cache-dir \
--no-deps \
-r "${1}/requirements-dev.txt"
pip install \
--no-cache-dir \
--no-deps \
--force-reinstall \
-e "${1}"
}
run() {
prepare
exec "$WSGI_SERVER" "$DJANGO_APP".wsgi
}
run_celery() {
case "$1" in
worker|beat)
exec celery -A "$DJANGO_APP" "$1" -l INFO --workdir "$CELERY_VAR_RUN"
;;
*)
usage
exit 1
;;
esac
}
develop() {
if [ -d "$1" ]; then
install_editable "$1"
fi
prepare
exec "$MANAGE_CMD" runserver 0.0.0.0:8000
}
develop_celery() {
if [ -d "$1" ]; then
install_editable "$1"
fi
exec celery -A "$DJANGO_APP" worker -B -l INFO
}
initialize() {
"$MANAGE_CMD" initialize
}
parse_args() {
while [ $# -gt 0 ]; do
arg="$1"
case $arg in
prepare|run|initialize)
command="$arg"
break
;;
develop|develop_celery|run_celery)
shift
subargs="$1"
command="$arg"
break
;;
*)
usage
exit 1
;;
esac
shift
done
}
main() {
parse_args "$@"
if [ -z "$command" ]; then
usage
exit 1
fi
if [ -x "manage.py" ]; then
MANAGE_CMD="./manage.py"
fi
"$command" "$subargs"
}
main "$@"

View File

@ -1,54 +1,43 @@
VirtualEnv Installation
=======================
#. **Install the requirements**
#. **Requirements**
Generic requirements which you will need::
You will need python, python-virtualenvwrapper, pip and git
python, python-virtualenvwrapper, pip and git, libmysqlclient-dev (mysql_config)
Debian Stretch (9) specific requirements ::
$ sudo apt-get install libmariadbclient-dev python-pip virtualenvwrapper
#. **Build the environment**
#. **Get the source code**
Clone source code from the `repository <https://gitlab.com/librespacefoundation/satnogs/satnogs-network>`_::
$ git clone https://gitlab.com/librespacefoundation/satnogs/satnogs-network.git
$ cd satnogs-network
#. **Build the environment**
Set up the virtual environment. On first run you should create it and link it to your project path.::
$ cd satnogs-network
$ mkvirtualenv satnogs-network -a .
#. **Configure settings**
Set your environmental variables::
$ cp env-dist .env
#. **Run it!**
Activate your python virtual environment::
$ workon satnogs-network
Install local development requirements::
Just run it::
$ (satnogs-network)$ pip install -r requirements/dev.txt
(satnogs-network)$ ./bin/djangoctl.sh develop .
#. **Database**
#. **Populate database**
Create, setup and populate the database with demo data::
(satnogs-network)$ ./manage.py initialize
(satnogs-network)$ ./bin/djangoctl.sh initialize
Note that the above command requires internet connection, since it fetches
Satellite and Transmitter data from `SatNOGS-DB <https://db.satnogs.org/>`_
#. **Run it!**
Just run it::
(satnogs-network)$ ./manage.py runserver
Your satnogs-network development instance is available in localhost:8000. Go hack!
Your satnogs-network development instance is available in localhost:8000. Go hack!