You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.6 KiB
117 lines
2.6 KiB
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)
|
|
|