Setting up searx with gunicorn and supervisor
What is searx?
searx is a privacy-respecting, hackable metasearch engine
I have been using my own instance of searx at https://searx.gliderswirley.org/ mostly because I can. :)
For some reason, my instance seems to go down at some random time, and I assumed it was uwsgi. :P And also because I wanted to try gunicorn and supervisor.
Most of the setup steps are already documented on the wiki at https://github.com/asciimoo/searx/wiki/Installation, but I’ll recount the steps here anyways.
Install packages (extra package: supervisor):
sudo apt-get install git build-essential libxslt-dev python-dev python-virtualenv python-pybabel zlib1g-dev supervisor
Install searx:
cd /usr/localsudo
git clone https://github.com/asciimoo/searx.git
sudo useradd searx -d /usr/local/searx
sudo chown searx:searx -R /usr/local/searx
Install dependencies in a virtualenv (extra package: gunicorn):
sudo -u searx -icd /usr/local/searx
virtualenv searx-ve.
./searx-ve/bin/activate
pip install -r requirements.txt
pip install gunicorn
python setup.py install
Configure secretkey:
sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml
Make a configuration file:
sudo touch /etc/supervisor/conf.d/searx.conf
Edit the above conf to include:
[program:searx]
command=/usr/local/searx/searx-ve/bin/gunicorn searx.webapp:app
directory=/usr/local/searx/
user=searx
group=searx
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/%(program_name)s-access.log
stderr_logfile=/var/log/supervisor/%(program_name)s-error.log
Then start the supervisor service:
sudo service supervisor start