2016-09-01 15:09:58 +00:00
|
|
|
#!/usr/bin/env python
|
2016-09-01 15:10:28 +00:00
|
|
|
|
|
|
|
import os
|
|
|
|
import subprocess
|
2017-12-21 18:08:29 +00:00
|
|
|
import time
|
|
|
|
from threading import Thread
|
2016-09-01 15:10:28 +00:00
|
|
|
|
2017-12-21 18:08:29 +00:00
|
|
|
from apps import __version__
|
2016-09-01 15:10:28 +00:00
|
|
|
|
2017-12-21 18:08:29 +00:00
|
|
|
try:
|
|
|
|
from config import config as CONFIG
|
2016-09-01 15:10:28 +00:00
|
|
|
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
|
2016-09-01 15:10:28 +00:00
|
|
|
|
|
|
|
|
2017-12-21 18:08:29 +00:00
|
|
|
def start_gunicorn():
|
|
|
|
print("- Start Gunicorn WSGI HTTP Server")
|
|
|
|
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)
|
2016-09-01 15:10:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
def start_celery():
|
2017-12-21 18:08:29 +00:00
|
|
|
print("- Start Celery as Distributed Task Queue")
|
|
|
|
os.chdir(APPS_DIR)
|
2017-12-22 13:42:12 +00:00
|
|
|
# Todo: Must set this environment, if not no ansible result return
|
|
|
|
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)
|
2016-09-01 15:10:28 +00:00
|
|
|
|
|
|
|
|
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"
|
|
|
|
cmd = 'celery -A common beat -l {} --scheduler {} --max-interval 30 '.format(LOG_LEVEL, scheduler)
|
2017-12-21 18:08:29 +00:00
|
|
|
subprocess.call(cmd, shell=True)
|
2016-09-01 15:10:28 +00:00
|
|
|
|
|
|
|
|
2017-12-21 18:08:29 +00:00
|
|
|
def main():
|
|
|
|
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()
|
2016-09-01 15:10:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|
|
|
|
|
2016-09-01 15:09:58 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|