| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 | 
							- from fabric.api import cd, run, sudo, put
 
- from io import StringIO
 
- base_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 code
 
- uid = {user}
 
- gid = {user}
 
- # Number of workers
 
- workers = 8
 
- # The right granted on the created socket
 
- chmod-socket = 666
 
- # Plugin to use and interpretor config
 
- single-interpreter = true
 
- master = true
 
- plugin = python
 
- # Module to import
 
- module = searx.webapp
 
- # Virtualenv and python path
 
- virtualenv = {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/searx/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)
 
 
  |