From 540337895e0504a861085c00ee06b812d5bf31bb Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 13 Nov 2024 17:31:11 +0800 Subject: [PATCH] bugfix --- killname | 3 ++ makeenv | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100755 killname create mode 100755 makeenv diff --git a/killname b/killname new file mode 100755 index 0000000..2535ab5 --- /dev/null +++ b/killname @@ -0,0 +1,3 @@ +#!/bin/sh + +ps -ef|grep "$1"|grep -v grep|awk '{print("kill -9", $2)}'|sh diff --git a/makeenv b/makeenv new file mode 100755 index 0000000..424a84d --- /dev/null +++ b/makeenv @@ -0,0 +1,144 @@ +#!/usr/bin/python3 + +import os +import sys +import codecs + +if len(sys.argv) < 3: + print(f'Usage:\n{sys.argv[0]} venvname port') + sys.exit(1) + +user = os.getlogin() +home = os.environ.get('HOME') +try: + os.mkdir(f'{home}/ve') +except: + pass + +venv = sys.argv[1] +port = int(sys.argv[2]) +os.system(f'python3 -m venv ~/ve/{venv}') +pwd = os.getcwd() +name = os.path.basename(pwd) +if os.path.exists(f'./app/{name}.py'): + print('env exists') + sys.exit(1) + +dirs = f'./app ./conf ./files ./wwwroot ./script ./logs'.split(' ') +for d in dirs: + try: + os.mkdir(d) + except: + pass +files=f'app/{name}.py conf/config.json files/README.md wwwroot/index.dspy'.split(' ') +for f in files: + os.system(f'touch {f}') + +config_str=f""" +{{ + "logger":{{ + "name":"{name}", + "levelname":"info", + "logfile":"$[workdir]$/logs/sage.log" + }}, + "filesroot":"$[workdir]$/files", + "website":{{ + "paths":[ + ["$[workdir]$/wwwroot",""] + ], + "client_max_size":10000, + "host":"0.0.0.0", + "port":{port}, + "coding":"utf-8", + "indexes":[ + "index.html", + "index.tmpl", + "index.ui", + "index.dspy", + "index.md" + ], + "startswiths":[ + {{ + "leading":"/idfile", + "registerfunction":"idFileDownload" + }} + ], + "processors":[ + [".dspy","dspy"], + [".md","md"] + ], + "session_max_time":3000, + "session_issue_time":2500, + "session_redis_notuse":{{ + "url":"redis://127.0.0.1:6379" + }} + }}, + "langMapping":{{ + "zh-Hans-CN":"zh-cn", + "zh-CN":"zh-cn", + "en-us":"en", + "en-US":"en" + }} +}} +""" +service = f"""[Unit] +Description={name} service +Wants=systemd-networkd.service +Requires=nginx.service + +[Service] +Type=forking +ExecStart=su - {user} -c "{pwd}/script/{name}.sh" +ExecStop=su - ymq "{home}/bin/killname {name}.py" +[Install] +WantedBy=multi-user.target +""" + +with codecs.open(f'./script/{name}.service', 'w', 'utf-8') as f: + f.write(service) + +with codecs.open(f'./script/{name}.sh', 'w', 'utf-8') as f: + f.write(f"""#!/usr/bin/bash + +killname {pwd}/app/{name}.py +{home}/ve/{venv}/bin/python {pwd}/app/{name}.py -w {pwd} > {pwd}/logs/stderr.log 2>&1 & +exit 0 +""") + +with codecs.open(f'./script/install.sh', 'w', 'utf-8') as f: + f.write(f"""#!/usr/bin/bash +sudo cp {name}.service /etc/systemd/system +sudo systemctl enable {name}.service +sudo systemctl start {name} +""") + +with codecs.open(f'./conf/config.json', 'w', 'utf-8') as f: + f.write(config_str) + +with codecs.open(f'./requirements.txt', 'w', 'utf-8') as f: + f.write("""git+https://git.kaiyuancloud.cn/yumoqing/apppublic +git+https://git.kaiyuancloud.cn/yumoqing/sqlor +git+https://git.kaiyuancloud.cn/yumoqing/ahserver +""") + +if not os.path.exists(f'{home}/bin'): + os.mkdir(f'{home}/bin') +if not os.path.exists(f'{home}/bin/killname'): + with codecs.open(f'{home}/bin/killname', 'w', 'utf-8') as f: + f.write("""#!/usr/bin/bash + +ps -ef|grep "$1"|grep -v grep|awk '{print("kill -9", $2)}'|sh +""") +with codecs.open(f'{home}/bin/{venv}py', 'w', 'utf-8') as f: + f.write(f"""#!/usr/bin/bash + +~/ve/{venv}/bin/python $* +""") +with codecs.open(f'{home}/bin/{venv}pip', 'w', 'utf-8') as f: + f.write(f"""#!/usr/bin/bash + +~/ve/ms/bin/pip $* +""") + +os.system(f'chmod +x {home}/bin/{venv}*') +