From 751f9154cc34c44e1afba2ad5f8d900461bd45e7 Mon Sep 17 00:00:00 2001 From: Thomas L Date: Sat, 24 Mar 2018 15:02:11 +0100 Subject: [PATCH] Add files for deployment. Make testing use memory-DB. --- db.py | 10 ++++------ deployment/ticketfrei-web.service | 16 ++++++++++++++++ deployment/uwsgi.ini | 11 +++++++++++ frontend.py | 11 ++++++++--- 4 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 deployment/ticketfrei-web.service create mode 100644 deployment/uwsgi.ini diff --git a/db.py b/db.py index 86437b3..49fffc8 100644 --- a/db.py +++ b/db.py @@ -2,7 +2,7 @@ from bottle import redirect, request from functools import wraps from inspect import Signature import jwt -from os import path, urandom +from os import urandom from pylibscrypt import scrypt_mcf, scrypt_mcf_check import sqlite3 import prepare @@ -10,11 +10,9 @@ from user import User class DB(object): - def __init__(self): + def __init__(self, dbfile): self.config = prepare.get_config() self.logger = prepare.get_logger(self.config) - dbfile = path.join(path.dirname(path.abspath(__file__)), - self.config['database']['db_path']) self.conn = sqlite3.connect(dbfile) self.cur = self.conn.cursor() self.create() @@ -149,8 +147,8 @@ class DBPlugin(object): name = 'DBPlugin' api = 2 - def __init__(self, loginpage): - self.db = DB() + def __init__(self, dbfile, loginpage): + self.db = DB(dbfile) self.loginpage = loginpage def close(self): diff --git a/deployment/ticketfrei-web.service b/deployment/ticketfrei-web.service new file mode 100644 index 0000000..9ffbd00 --- /dev/null +++ b/deployment/ticketfrei-web.service @@ -0,0 +1,16 @@ +[Unit] +Description=Ticketfrei Web Application +After=syslog.target network.target + +[Service] +ExecStart=/usr/bin/uwsgi --ini /srv/ticketfrei/deployment/uwsgi.ini +# Requires systemd version 211 or newer +RuntimeDirectory=uwsgi +Restart=always +KillSignal=SIGQUIT +Type=notify +StandardError=syslog +NotifyAccess=all + +[Install] +WantedBy=multi-user.target diff --git a/deployment/uwsgi.ini b/deployment/uwsgi.ini new file mode 100644 index 0000000..bcb8257 --- /dev/null +++ b/deployment/uwsgi.ini @@ -0,0 +1,11 @@ +[uwsgi] +plugins = python3 +master = true +uid = www-data +gid = www-data +processes = 1 +# logto = /var/log/ticketfrei.log +socket = /var/run/ticketfrei/ticketfrei.sock +chmod-socket = 660 +wsgi-file = /srv/ticketfrei/frontend.py +virtualenv = /srv/ticketfrei/venv diff --git a/frontend.py b/frontend.py index b57ccfe..21c6be9 100755 --- a/frontend.py +++ b/frontend.py @@ -143,6 +143,11 @@ def login_mastodon(user): return dict(error='Login to Mastodon failed.') -config = prepare.get_config() -bottle.install(DBPlugin('/')) -bottle.run(host=config['web']['host'], port=8080) +if __name__ == '__main__': + # testing only + bottle.install(DBPlugin(':memory:', '/')) + bottle.run(host='localhost', port=8080) +else: + config = prepare.get_config() + bottle.install(DBPlugin(config['database']['db_path'], '/')) + application = bottle.default_app()