Installation tutorial with Debian, NGinx and gunicorn¶
preliminary packages:
apt-get install build-essential nginx supervisor python-dev git-core python-pip python-virtualenv
commands to run
# add user bepasty to system
adduser bepasty
# change to user bepasty
sudo su - bepasty
# clone repository from github
git clone https://github.com/bepasty/bepasty-server.git src
# create folder for storage
mkdir storage
# create folder for logs
mkdir logs
# create virtualenv
virtualenv .
# activate virtualenv
. bin/activate
cd src
# install python requirements for bepasty
pip install -r requirements.txt
# add gunicorn and gevent for hosting
pip install gunicorn gevent
config file for bepasty – /home/bepasty/bepasty.conf
:
Copy bepasty/config.py
to /home/bepasty/bepasty.conf
first, then modify it:
STORAGE = 'filesystem'
STORAGE_FILESYSTEM_DIRECTORY = '/home/bepasty/storage/'
add this content to /home/bepasty/bin/gunicorn_bepasty
:
#!/bin/bash
NAME="bepasty"
HOME=/home/bepasty
SOCKFILE=$HOME/gunicorn.sock # we will communicate using this unix socket
PIDFILE=$HOME/gunicorn.pid
NUM_WORKERS=3 # how many worker processes should Gunicorn spawn
export BEPASTY_CONFIG=$HOME/bepasty.conf
source $HOME/bin/activate
cd $HOME/src
exec gunicorn bepasty.wsgi \
--name $NAME \
--workers $NUM_WORKERS \
--log-level=info \
--bind=unix:$SOCKFILE \
--pid $PIDFILE \
-k gevent
Make it executable: chmod +x ~/bin/gunicorn_bepasty
A nginx configuration i.e. in /etc/nginx/conf.d/bepasty.conf
:
upstream pasty_server {
server unix:/home/bepasty/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name paste.example.org; # <-- add your domainname here
access_log /home/bepasty/logs/nginx-access.log;
error_log /home/bepasty/logs/nginx-error.log;
client_max_body_size 32M;
location / {
proxy_pass http://pasty_server;
}
location /static/ {
alias /home/bepasty/src/bepasty/static/;
}
}
Supervisord config i.e. in /etc/supervisor/conf.d/bepasty.conf
:
[program:bepasty]
command = /home/bepasty/bin/gunicorn_bepasty ; Command to start app
user = bepasty ; User to run as
stdout_logfile = /home/bepasty/logs/gunicorn_supervisor.log ; Where to write log messages
redirect_stderr = true ; Save stderr in the same log