diff options
author | xengineering <mail2xengineering@protonmail.com> | 2021-03-07 11:10:38 +0100 |
---|---|---|
committer | xengineering <mail2xengineering@protonmail.com> | 2021-03-07 11:10:38 +0100 |
commit | 249d11ccee0bccbd4785794913c44c2eafc2c460 (patch) | |
tree | 40c81495e3773452732abece93db8979c3cd2a90 | |
parent | 47b30cea327420ed6f17ccc6fd521ad89f4b4e4f (diff) | |
download | web-template-249d11ccee0bccbd4785794913c44c2eafc2c460.tar web-template-249d11ccee0bccbd4785794913c44c2eafc2c460.tar.zst web-template-249d11ccee0bccbd4785794913c44c2eafc2c460.zip |
Implement Deployment
-rw-r--r-- | Makefile | 9 | ||||
-rwxr-xr-x | scripts/install | 27 | ||||
-rwxr-xr-x | scripts/uninstall | 19 | ||||
-rw-r--r-- | src/Makefile | 3 | ||||
-rw-r--r-- | systemd/web_template.service.jinja2 | 14 |
5 files changed, 66 insertions, 6 deletions
@@ -1,8 +1,11 @@ # vim: shiftwidth=4 tabstop=4 noexpandtab -all: - echo "make all - nothing to do in this pure python project ;)" - debug: make -C src/ debug +install: + ./scripts/install + +uninstall: + ./scripts/uninstall + diff --git a/scripts/install b/scripts/install new file mode 100755 index 0000000..bbba17c --- /dev/null +++ b/scripts/install @@ -0,0 +1,27 @@ +#!/usr/bin/python3 +# vim: shiftwidth=4 tabstop=4 expandtab + + +import configparser +import jinja2 +import subprocess + + +# read config +config = configparser.ConfigParser() +config.read("./src/config.ini") +cfg = {} +for option in config.options("web-template"): + cfg[option] = config.get("web-template", option) + +# generate systemd unit file +with open("./systemd/web_template.service.jinja2", "r") as f: + template = jinja2.Template(f.read()) +unit_file = template.render(cfg) + +# install the project +subprocess.run("mkdir -p /opt/{}".format(cfg["project_name"]), shell=True) +subprocess.run("rsync --delete -vrL ./src/ /opt/{}/".format(cfg["project_name"]), shell=True) +with open("/etc/systemd/system/{}.service".format(cfg["project_name"]), "w") as f: + f.write(unit_file) + diff --git a/scripts/uninstall b/scripts/uninstall new file mode 100755 index 0000000..9b1b8e7 --- /dev/null +++ b/scripts/uninstall @@ -0,0 +1,19 @@ +#!/usr/bin/python3 +# vim: shiftwidth=4 tabstop=4 expandtab + + +import configparser +import subprocess + + +# read config +config = configparser.ConfigParser() +config.read("./src/config.ini") +cfg = {} +for option in config.options("web-template"): + cfg[option] = config.get("web-template", option) + +# uninstall the project +subprocess.run("rm -rf /opt/{}/".format(cfg["project_name"]), shell=True) +subprocess.run("rm /etc/systemd/system/{}.service".format(cfg["project_name"]), shell=True) + diff --git a/src/Makefile b/src/Makefile index 43ea379..b8e4285 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,8 +1,5 @@ # vim: shiftwidth=4 tabstop=4 noexpandtab -all: - echo "make all - nothing to do in this pure python project ;)" - debug: ./server.py diff --git a/systemd/web_template.service.jinja2 b/systemd/web_template.service.jinja2 new file mode 100644 index 0000000..86b3c3d --- /dev/null +++ b/systemd/web_template.service.jinja2 @@ -0,0 +1,14 @@ + +[Unit] +Description={{ project_description }} +After=network.target + +[Service] +User={{ user }} +Group={{ group }} +WorkingDirectory=/opt/{{ project_name }}/ +ExecStart=python3 /opt/{{ project_name }}/server.py + +[Install] +WantedBy=multi-user.target + |