]> git.ipfire.org Git - pbs.git/commitdiff
systemd: Add unit files for web UI
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Jan 2019 18:50:59 +0000 (18:50 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 4 Jan 2019 18:50:59 +0000 (18:50 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/scripts/pakfire-web
src/systemd/pakfire-web-1.service.in [new file with mode: 0644]
src/systemd/pakfire-web-2.service.in [new file with mode: 0644]
src/web/__init__.py

index f453fa147968804b61cd43f33612af20cdbb0ff5..b30d25a31966a69b413d28e1f887832bd1af998b 100644 (file)
@@ -419,7 +419,9 @@ docker: Dockerfile
 if HAVE_SYSTEMD
 systemdsystemunit_DATA = \
        src/systemd/pakfire-hub-1.service \
-       src/systemd/pakfire-hub-2.service
+       src/systemd/pakfire-hub-2.service \
+       src/systemd/pakfire-web-1.service \
+       src/systemd/pakfire-web-2.service
 
 CLEANFILES += \
         $(systemdsystemunit_DATA)
@@ -430,7 +432,9 @@ endif
 
 EXTRA_DIST += \
        src/systemd/pakfire-hub-1.service.in \
-       src/systemd/pakfire-hub-2.service.in
+       src/systemd/pakfire-hub-2.service.in \
+       src/systemd/pakfire-web-1.service.in \
+       src/systemd/pakfire-web-2.service.in
 
 dist_database_DATA = \
        src/database.sql
index a50a92bf71e66d64f9e7055082f4c14773c933f2..c035cca1752937fa068f66e544a83f9b84b6a31c 100644 (file)
@@ -1,30 +1,21 @@
 #!/usr/bin/python
 
-import daemon
-import os
-import signal
-import sys
-
+import tornado.ioloop
 import tornado.options
 
-from pakfire.buildservice.web import Application
-
-#tornado.options.parse_command_line()
+import pakfire.buildservice.web
 
-if __name__ == "__main__":
-       app = Application()
+tornado.options.define("debug", type=bool, default=False, help="Enable debug mode")
+tornado.options.define("port", type=int, default=9000, help="Port to listen on")
 
-       context = daemon.DaemonContext(
-               working_directory=os.getcwd(),
-#              stdout=sys.stdout, stderr=sys.stderr, # XXX causes errors...
-       )
+def run():
+       tornado.options.parse_command_line()
 
-       context.signal_map = {
-               signal.SIGHUP  : app.reload,
-               signal.SIGTERM : app.shutdown,
-       }
+       # Initialise application
+       app = pakfire.buildservice.web.Application(debug=tornado.options.options.debug)
+       app.listen(tornado.options.options.port, xheaders=True)
 
-#      with context:
-#              app.run()
+       # Launch IOLoop
+       tornado.ioloop.IOLoop.current().start()
 
-       app.run()
+run()
diff --git a/src/systemd/pakfire-web-1.service.in b/src/systemd/pakfire-web-1.service.in
new file mode 100644 (file)
index 0000000..f72af7d
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=Pakfire Web UI #1
+After=network.target
+
+[Service]
+ExecStart=@bindir@/pakfire-web --port=9001
+User=pakfire
+
+[Install]
+WantedBy=multi-user.target
diff --git a/src/systemd/pakfire-web-2.service.in b/src/systemd/pakfire-web-2.service.in
new file mode 100644 (file)
index 0000000..3ceb79d
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=Pakfire Web UI #2
+After=network.target
+
+[Service]
+ExecStart=@bindir@/pakfire-web --port=9002
+User=pakfire
+
+[Install]
+WantedBy=multi-user.target
index a02f021eb280d06eea50cf1c1f8327edadd6f77d..d1c14a192b6a386c861b97afb97d947caec761a9 100644 (file)
@@ -2,16 +2,11 @@
 # encoding: utf-8
 
 import logging
-import multiprocessing
-import os.path
-import tornado.httpserver
 import tornado.locale
-import tornado.options
 import tornado.web
 
 from .. import Backend
 from ..constants import *
-from ..decorators import *
 
 # Import all handlers
 from . import api
@@ -31,15 +26,9 @@ from .handlers import *
 
 from . import ui_modules
 
-# Enable logging
-tornado.options.define("debug", default=False, help="Run in debug mode", type=bool)
-tornado.options.parse_command_line()
-
 class Application(tornado.web.Application):
-       def __init__(self, **_settings):
+       def __init__(self, **kwargs):
                settings = dict(
-                       debug = tornado.options.options.debug,
-                       gzip  = True,
                        login_url = "/login",
                        template_path = TEMPLATESDIR,
                        static_path = STATICDIR,
@@ -105,7 +94,7 @@ class Application(tornado.web.Application):
                        },
                        xsrf_cookies = True,
                )
-               settings.update(_settings)
+               settings.update(kwargs)
 
                # Load translations.
                tornado.locale.load_gettext_translations(LOCALEDIR, PACKAGE_NAME)
@@ -244,48 +233,10 @@ class Application(tornado.web.Application):
                        (r"/api/packages/autocomplete", api.ApiPackagesAutocomplete),
                ], default_handler_class=errors.Error404Handler, **settings)
 
-               logging.info("Successfully initialied application")
-
-       @lazy_property
-       def backend(self):
-               """
-                       Backend connection
-               """
-               return Backend()
-
-       def __del__(self):
-               logging.info("Shutting down application")
-
-       @property
-       def ioloop(self):
-               return tornado.ioloop.IOLoop.instance()
-
-       def shutdown(self, *args):
-               logging.debug("Caught shutdown signal")
-               self.ioloop.stop()
-
-       def run(self, port=7001):
-               logging.debug("Going to background")
+               # Launch backend
+               self.backend = Backend()
 
-               http_server = tornado.httpserver.HTTPServer(self, xheaders=True)
-
-               # If we are not running in debug mode, we can actually run multiple
-               # frontends to get best performance out of our service.
-               if self.settings.get("debug", False):
-                       http_server.listen(port)
-               else:
-                       cpu_count = multiprocessing.cpu_count()
-
-                       http_server.bind(port)
-                       http_server.start(num_processes=cpu_count)
-
-               # All requests should be done after 60 seconds or they will be killed.
-               self.ioloop.set_blocking_log_threshold(60)
-
-               self.ioloop.start()
-
-       def reload(self):
-               logging.debug("Caught reload signal")
+               logging.info("Successfully initialied application")
 
        ## UI methods