2
0
mirror of https://github.com/frappe/bench.git synced 2025-01-24 07:28:25 +00:00

add setup production

This commit is contained in:
Pratik Vyas 2014-11-04 16:23:50 +05:30
parent 736d14f988
commit 0206dfb7b5
4 changed files with 58 additions and 5 deletions

View File

@ -16,6 +16,7 @@ from .app import get_app as _get_app
from .app import new_app as _new_app
from .app import pull_all_apps
from .config import generate_nginx_config, generate_supervisor_config
from .production_setup import setup_production as _setup_production
import os
import sys
import logging
@ -225,7 +226,11 @@ def setup_nginx():
def setup_supervisor():
"generate config for supervisor"
generate_supervisor_config()
update_config({'restart_supervisor_on_update': True})
@click.command('production')
def setup_production():
"setup bench for production"
_setup_production
@click.command('auto-update')
def setup_auto_update():

View File

@ -2,7 +2,7 @@ import os
import getpass
import json
from jinja2 import Environment, PackageLoader
from .utils import get_sites, get_config
from .utils import get_sites, get_config, update_config
env = Environment(loader=PackageLoader('bench', 'templates'), trim_blocks=True)
@ -22,6 +22,7 @@ def generate_supervisor_config(bench='.'):
})
with open("config/supervisor.conf", 'w') as f:
f.write(config)
update_config({'restart_supervisor_on_update': True})
def get_site_config(site, bench='.'):
with open(os.path.join(bench, 'sites', site, 'site_config.json')) as f:

40
bench/production_setup.py Normal file
View File

@ -0,0 +1,40 @@
from .utils import get_program, exec_cmd, get_cmd_output
from .config import generate_nginx_config, generate_supervisor_config
import os
def restart_service(service):
program = get_program(['systemctl', 'service'])
if not program:
raise Exception, 'No service manager found'
elif program == 'systemctl':
exec_cmd("{prog} restart {service}".format(prog=program, service=service))
elif program == 'service':
exec_cmd("{prog} {service} restart ".format(prog=program, service=service))
def get_supervisor_confdir():
possiblities = ('/etc/supervisor/conf.d', '/etc/supervisor.d/', '/etc/supervisord/conf.d')
for possiblity in possiblities:
if os.path.exists(possiblity):
return possiblity
def remove_default_nginx_configs():
default_nginx_configs = ['/etc/nginx/conf.d/default.conf', '/etc/nginx/sites-available/default.conf']
for conf_file in default_nginx_configs:
if os.path.exists(conf_file):
os.unlink(conf_file)
def setup_production(bench='.'):
generate_supervisor_config(bench=bench)
generate_nginx_config(bench=bench)
remove_default_nginx_configs()
if os.path.exists('/etc/redhat-release') and get_cmd_output("cat /etc/redhat-release | sed 's/Linux\ //g' | cut -d" " -f3 | cut -d. -f1") == '7':
supervisor_conf_filename = 'frappe.ini'
else:
supervisor_conf_filename = 'frappe.conf'
os.symlink(os.path.abspath(os.path.join(bench, 'config', 'supervisor.conf')), os.path.join(get_supervisor_confdir(), supervisor_conf_filename))
os.symlink(os.path.abspath(os.path.join(bench, 'config', 'supervisor.conf')), '/etc/nginx/conf.d/frappe.conf')
exec_cmd('supervisorctl reload')
restart_service('nginx')

View File

@ -136,10 +136,12 @@ def update_bench():
exec_cmd("git pull", cwd=cwd)
def setup_sudoers(user):
with open('/etc/sudoers.d/frappe', 'w') as f:
sudoers_file = '/etc/sudoers.d/frappe'
with open(sudoers_file, 'w') as f:
f.write("{user} ALL=(ALL) NOPASSWD: {supervisorctl} restart frappe\:\n".format(
user=user,
supervisorctl=subprocess.check_output('which supervisorctl', shell=True).strip()))
os.chmod(sudoers_file, 0440)
def setup_logging(bench='.'):
if os.path.exists(os.path.join(bench, 'logs')):
@ -167,8 +169,7 @@ def update_config(new_config, bench='.'):
config.update(new_config)
put_config(config, bench=bench)
def get_process_manager():
programs = ['foreman', 'forego', 'honcho']
def get_program(programs):
program = None
for p in programs:
program = find_executable(p)
@ -176,6 +177,9 @@ def get_process_manager():
break
return program
def get_process_manager():
return get_program(['foreman', 'forego', 'honcho'])
def start():
program = get_process_manager()
if not program:
@ -269,3 +273,6 @@ def prime_wheel_cache(bench='.'):
wheelhouse=wheel_cache_dir,
requirements=requirements)
exec_cmd(cmd)
def is_root():
pass