jumpserver/run_server.py

88 lines
2.2 KiB
Python
Raw Normal View History

2016-09-01 15:09:58 +00:00
#!/usr/bin/env python
import os
import subprocess
2017-12-21 18:08:29 +00:00
import time
from threading import Thread
2017-12-21 18:08:29 +00:00
from apps import __version__
2017-12-21 18:08:29 +00:00
try:
from config import config as CONFIG
except ImportError:
CONFIG = type('_', (), {'__getattr__': None})()
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
2017-12-21 18:08:29 +00:00
APPS_DIR = os.path.join(BASE_DIR, 'apps')
HTTP_HOST = CONFIG.HTTP_BIND_HOST or '127.0.0.1'
HTTP_PORT = CONFIG.HTTP_LISTEN_PORT or 8080
2017-12-22 13:42:12 +00:00
DEBUG = CONFIG.DEBUG
2017-12-21 18:08:29 +00:00
LOG_LEVEL = CONFIG.LOG_LEVEL
WORKERS = 4
2017-12-25 04:22:49 +00:00
try:
os.makedirs(os.path.join(BASE_DIR, "data", "static"))
os.makedirs(os.path.join(BASE_DIR, "data", "media"))
except:
pass
2017-12-21 18:08:29 +00:00
def start_gunicorn():
2017-12-24 15:21:05 +00:00
print("# Start Gunicorn WSGI HTTP Server")
2017-12-21 18:08:29 +00:00
os.chdir(APPS_DIR)
cmd = "gunicorn jumpserver.wsgi -b {}:{} -w {}".format(HTTP_HOST, HTTP_PORT, WORKERS)
2017-12-22 13:42:12 +00:00
if DEBUG:
cmd += " --reload"
2017-12-21 18:08:29 +00:00
subprocess.call(cmd, shell=True)
def start_celery():
2017-12-21 18:08:29 +00:00
print("- Start Celery as Distributed Task Queue")
os.chdir(APPS_DIR)
2017-12-24 16:36:14 +00:00
# Todo: Must set this environment, otherwise not no ansible result return
2017-12-22 13:42:12 +00:00
os.environ.setdefault('PYTHONOPTIMIZE', '1')
2017-12-21 18:08:29 +00:00
cmd = 'celery -A common worker -l {}'.format(LOG_LEVEL.lower())
subprocess.call(cmd, shell=True)
2017-12-21 18:08:29 +00:00
def start_beat():
print("- Start Beat as Periodic Task Scheduler")
os.chdir(APPS_DIR)
2017-12-22 13:42:12 +00:00
os.environ.setdefault('PYTHONOPTIMIZE', '1')
scheduler = "django_celery_beat.schedulers:DatabaseScheduler"
2017-12-24 10:53:07 +00:00
cmd = 'celery -A common beat -l {} --scheduler {} --max-interval 5 '.format(LOG_LEVEL, scheduler)
2017-12-21 18:08:29 +00:00
subprocess.call(cmd, shell=True)
2017-12-24 15:21:05 +00:00
def make_migrations():
print("Check database change, make migrations")
os.chdir(os.path.join(BASE_DIR, 'utils'))
subprocess.call('bash make_migrations.sh', shell=True)
2017-12-21 18:08:29 +00:00
def main():
2017-12-24 15:21:05 +00:00
make_migrations()
2017-12-21 18:08:29 +00:00
print(time.ctime())
print('Jumpserver version {}, more see https://www.jumpserver.org'.format(
__version__))
print('Quit the server with CONTROL-C.')
threads = []
for func in (start_gunicorn, start_celery, start_beat):
t = Thread(target=func, args=())
threads.append(t)
t.start()
for t in threads:
t.join()
if __name__ == '__main__':
main()
2016-09-01 15:09:58 +00:00