Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Pasteque

About

Pasteque is a free and open source (MIT License) Pastebin like application written in Python/Django.

Demo

A demo instance of Pasteque is running at http://paste.henriet.eu.

Features

  • Support any database supported by Django (Sqlite3, MySQL, PostgreSQL, Oracle, ...)
  • Available in english, french .. and easily translatable into another languages.
  • Syntax highlighting for a bunch of languages using Pygments.
  • Public/private pastes (don't appear in the pastes history).
  • Time-based or "page loads"-based pastes expiration.
  • Password protection.
  • Possibility to enable/disable renderers and to choose the default one.
  • Limit pastes size.
  • Pastes history.

Upcoming releases features

  • Duplicate paste
  • Locale selector
  • Search engine
  • Disable pastes via link submitted by email
  • Copy to clipboard JS
  • Google Analytics easy-integration

Deployment with Sqlite3, nginx and UWSGI

This procedure will guide you step-by-step through the setup of your own instance of Pasteque using nginx et UWSGI. In this tutorial, app files and servers processes are owned by unprivilegied web user.

Pre-required system packages

It is assumed that some system packages are installed on the server where you plan to setup Pasteque.

On Debian

sudo apt-get install python python-pip python-dev nginx git

Application deployment

The application is deployed into /opt/app/webtools which is owner by user web.

sudo mkdir -p /opt/app/webtools/
sudo chown -R web: /opt/app/webtools/
cd /opt/app/webtools/
git clone https://github.com/setsuna-/pasteque .
mkdir -p var/logs var/db var/pygments-static

Install required python packages

Even if python packages are installed system-wide in this tutorial, virtualenv is of course the way to go.

sudo -s
export CFLAGS="-march=native -O2 -fomit-frame-pointer -pipe" && export CXXFLAGS="-march=native -O2 -fomit-frame-pointer -pipe"
pip install -r /opt/app/webtools/share/requirements.pip

Pasteque configuration and customization

vim /opt/app/webtools/webtools/settings.py
DISPLAY_NAME = 'YourCompany-Paste'
COMPRESS_ENABLED = True
SECRET_KEY = 'fill_a_secret_key_here'
ALLOWED_HOSTS = ['localhost','127.0.0.1','paste.henriet.eu']

Sqlite3 database creation

cd /opt/app/webtools/
./manage.py syncdb
Creating tables ...
Creating table paste_language
Creating table paste_paste
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
sqlite3 var/db/webtools.sqlite3
sqlite> .read share/language-dml.sql
sqlite> .quit

Deploy static assets

./manage.py collectstatic
ls static/
css  font  img  js

Test application

Validate application setup using the development web server.

./manage.py runserver paste.henriet.eu:16000

Configure UWSGI

cp /opt/app/webtools/share/uwsgi.ini /opt/app/webtools/uwsgi.ini
vim /opt/app/webtools/uwsgi.ini
[uwsgi]
chdir=/opt/app/webtools
module=webtools.wsgi:application
master=True
env=DJANGO_SETTINGS_MODULE=webtools.settings
pidfile=/opt/app/webtools/var/uwsgid-pasteque.pid
socket=/opt/app/webtools/var/uwsgid-pasteque.sock
processes=5
uid=1002
gid=1002
harakiri=20
limit-as=128
max-requests=5000
vacuum=True
daemonize=/opt/app/webtools/var/uwsgid-pasteque.log

Run UWSGI

uwsgi --ini /opt/app/webtools/uwsgi.ini
[uWSGI] getting INI configuration from /opt/app/webtools/uwsgi.ini
ps -ef |grep uwsgi
web     2269     1  0 11:32 ?        00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini
web     2271  2269  0 11:32 ?        00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini
web     2272  2269  0 11:32 ?        00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini
web     2273  2269  0 11:32 ?        00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini
web     2274  2269  0 11:32 ?        00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini
web     2275  2269  0 11:32 ?        00:00:00 uwsgi --ini /opt/app/webtools/uwsgi.ini
cat /opt/app/webtools/var/uwsgid-pasteque.log to check if everything is ok.

Configure NGINX

sudo vim /etc/nginx/nginx.conf
user web;
sudo vim /etc/nginx/sites-available/webtools-pasteque
upstream uwsgi {
  server unix:///opt/app/webtools/var/uwsgid-pasteque.sock;
}
server {
  listen               80;
  server_name          paste.henriet.eu;
  charset              utf-8;
  error_log            /opt/app/webtools/var/nginx-error.log;
  access_log           /opt/app/webtools/var/nginx-access.log;
  client_max_body_size 8M;
  
  location /static {
    alias /opt/app/webtools/static;
    expires 30d;
  }

  location / {
    uwsgi_pass uwsgi;
    include    /etc/nginx/uwsgi_params;
  }
}
cd /etc/nginx/sites-enabled/
sudo ln -s ../sites-available/webtools-pasteque

Run nginx

sudo /etc/init.d/nginx restart
Restarting nginx: nginx.

About

Pastebin-like application in Python/Django

Resources

License

Releases

No releases published
You can’t perform that action at this time.