| #!/usr/bin/python |
| |
| import json |
| import os |
| import shutil |
| import subprocess |
| import sys |
| import tempfile |
| |
| |
| def main(): |
| if len(sys.argv) <= 1: |
| sys.exit('Specify the command: start, stop, reset') |
| |
| command = sys.argv[1] |
| |
| with open(abspath_from_root('config.json')) as config_file: |
| config = json.load(config_file) |
| |
| cache_dir = abspath_from_root(config['cacheDirectory']) |
| if command == 'start': |
| if not os.path.isdir(cache_dir): |
| os.makedirs(cache_dir) |
| os.chmod(cache_dir, 0755) |
| |
| start_httpd(config['remoteServer']) |
| elif command == 'stop': |
| stop_httpd(config['remoteServer']) |
| elif command == 'reset': |
| shutil.rmtree(cache_dir) |
| else: |
| sys.exit('Unknown command: ' + command) |
| |
| |
| def start_httpd(remote_server_config): |
| httpd_config_file = abspath_from_root(remote_server_config['httpdConfig']) |
| httpd_pid_file = abspath_from_root(remote_server_config['httpdPID']) |
| httpd_error_log_file = abspath_from_root(remote_server_config['httpdErrorLog']) |
| httpd_mutex_dir = abspath_from_root(remote_server_config['httpdMutexDir']) |
| version_info = subprocess.check_output(['php', '-v'], stderr=subprocess.PIPE) |
| php_version = 'PHP5' if 'PHP 5' in version_info else 'PHP7' |
| |
| if not os.path.isdir(httpd_mutex_dir): |
| os.makedirs(httpd_mutex_dir) |
| os.chmod(httpd_mutex_dir, 0755) |
| |
| doc_root = abspath_from_root('public') |
| |
| # don't use -X since http://svn.apache.org/viewvc?view=revision&revision=1711479 |
| subprocess.call(['httpd', |
| '-f', httpd_config_file, |
| '-c', 'PidFile ' + httpd_pid_file, |
| '-c', 'Mutex file:' + httpd_mutex_dir, |
| '-c', 'DocumentRoot ' + doc_root, |
| '-c', 'ErrorLog ' + httpd_error_log_file, |
| '-D', php_version]) |
| |
| def stop_httpd(remote_server_config): |
| httpd_pid_file = abspath_from_root(remote_server_config['httpdPID']) |
| if not os.path.isfile(httpd_pid_file): |
| sys.exit("PID file doesn't exist at %s" % httpd_pid_file) |
| |
| with open(httpd_pid_file) as pid_file: |
| pid = pid_file.read().strip() |
| print "Stopping", pid |
| subprocess.call(['kill', '-TERM', pid]) |
| |
| |
| def abspath_from_root(relpath): |
| return os.path.abspath(os.path.join(os.path.dirname(__file__), '../', relpath)) |
| |
| |
| if __name__ == "__main__": |
| main() |