mirror of
				https://github.com/searxng/searxng.git
				synced 2025-10-31 02:27:06 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from fabric.api import cd, run, sudo, put
 | |
| from cStringIO 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/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)
 |