| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | from fabric.api import cd, run, sudo, putfrom cStringIO import StringIObase_dir = '/usr/local'hostname = 'searx.me'searx_dir = base_dir + '/searx'searx_ve_dir = searx_dir + '/searx-ve'current_user = run('whoami').stdout.strip()uwsgi_file = '''[uwsgi]# Who will run the codeuid = {user}gid = {user}# Number of workersworkers = 8# The right granted on the created socketchmod-socket = 666# Plugin to use and interpretor configsingle-interpreter = truemaster = trueplugin = python# Module to importmodule = searx.webapp# Virtualenv and python pathvirtualenv = {searx_ve_dir}pythonpath = {searx_dir}chdir = {searx_dir}/searx'''.format(user=current_user,           searx_dir=searx_dir,           searx_ve_dir=searx_ve_dir)nginx_config = '''server {{    listen 80;    server_name {hostname};    server_name www.{hostname};    root /usr/local/searx;    location / {{        include uwsgi_params;        uwsgi_pass unix:/run/uwsgi/app/searx/socket;    }}}}'''.format(hostname=hostname)def stop():    sudo('/etc/init.d/uwsgi stop')def start():    sudo('/etc/init.d/uwsgi start')def restart():    sudo('/etc/init.d/uwsgi restart')def init():    if not run('test -d ' + searx_dir, warn_only=True).failed:        return    sudo('apt-get update')    sudo('apt-get install git'         ' build-essential'         ' libxslt-dev'         ' python-dev'         ' python-virtualenv'         ' python-pybabel'         ' zlib1g-dev'         ' uwsgi'         ' uwsgi-plugin-python'         ' nginx')    sudo('mkdir -p ' + base_dir)    put(StringIO(nginx_config), '/etc/nginx/sites-enabled/searx', use_sudo=True)    sudo('/etc/init.d/nginx restart')    with cd(base_dir):        sudo('git clone https://github.com/asciimoo/searx')    sudo('chown -R {user}:{user} {searx_dir}'.format(user=current_user, searx_dir=searx_dir))    put(StringIO(uwsgi_file), searx_dir+'/uwsgi.ini')    sudo('ln -s {0}/uwsgi.ini /etc/uwsgi/apps-enabled/searx.ini'.format(searx_dir))    run('virtualenv {0}'.format(searx_ve_dir))    with cd(searx_dir):        run('source {0}/bin/activate && pip install -r requirements.txt'.format(searx_ve_dir))    start()def deploy():    init()    with cd(searx_dir):        run("git stash", warn_only=True)        run("git pull origin master")        run("git stash pop", warn_only=True)    restart()def clean():    sudo('rm -rf {searx_dir}'.format(searx_dir=searx_dir), warn_only=True)    sudo('rm /etc/uwsgi/apps-enabled/searx.ini', warn_only=True)    sudo('rm /etc/nginx/sites-enabled/searx', warn_only=True)
 |