summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxengineering <mail2xengineering@protonmail.com>2021-03-07 11:10:38 +0100
committerxengineering <mail2xengineering@protonmail.com>2021-03-07 11:10:38 +0100
commit249d11ccee0bccbd4785794913c44c2eafc2c460 (patch)
tree40c81495e3773452732abece93db8979c3cd2a90
parent47b30cea327420ed6f17ccc6fd521ad89f4b4e4f (diff)
downloadweb-template-249d11ccee0bccbd4785794913c44c2eafc2c460.tar
web-template-249d11ccee0bccbd4785794913c44c2eafc2c460.tar.zst
web-template-249d11ccee0bccbd4785794913c44c2eafc2c460.zip
Implement Deployment
-rw-r--r--Makefile9
-rwxr-xr-xscripts/install27
-rwxr-xr-xscripts/uninstall19
-rw-r--r--src/Makefile3
-rw-r--r--systemd/web_template.service.jinja214
5 files changed, 66 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 8814205..66854cc 100644
--- a/Makefile
+++ b/Makefile
@@ -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
+