Pastebin: Difference between revisions
(Created page with "= How To Install Pastebin Service = A quick'n dirty doc about how to install a provate pastebin service. There are a lot of pastebin service (http://en.wikipedia.org/wiki/Compa...") |
|||
Line 3: | Line 3: | ||
A quick'n dirty doc about how to install a provate pastebin service. | A quick'n dirty doc about how to install a provate pastebin service. | ||
There are a lot of pastebin service (http://en.wikipedia.org/wiki/Comparison_of_pastebins). We're going to use the oldest pastebin service. | There are a lot of pastebin service (http://en.wikipedia.org/wiki/Comparison_of_pastebins). We're going to use the oldest pastebin service, without DB support but only file. | ||
'''Requirements:''' | '''Requirements:''' | ||
* An up-and-running Web server (here are quoted apache, nginx and lighttpd configuration) with modules: | * An up-and-running Web server (here are quoted apache, but is also possible to add nginx and lighttpd configuration) with modules: | ||
* PHP | * PHP | ||
* vhosts | * vhosts | ||
Line 21: | Line 21: | ||
'''Apache''' | '''Apache''' | ||
Unzip the downloaded file in the | Unzip the downloaded file in the web server vhosts dir: | ||
{{ | {{ | ||
Cmd|tar -zxvf pastebin.tar.gz -C /var/www/vhosts | Cmd|tar -zxvf pastebin.tar.gz -C /var/www/vhosts | ||
Line 46: | Line 46: | ||
</VirtualHost> | </VirtualHost> | ||
'''nginx''' | '''lighttpd''' | ||
* Edit lighttpd.conf: | |||
$HTTP["host"] =~ "(^|\.)paste.bin\.com$" { | |||
server.document-root = "/var/www/vhosts/pastebin/public_html" | |||
accesslog.filename = "/var/log/lighttpd/pastebin/access.log" | |||
fastcgi.server = ( | |||
".php" => ( | |||
"localhost" => ( | |||
"bin-path" => "/usr/bin/php-cgi", | |||
"socket" => "/tmp/php-pastebin.socket", | |||
"min-procs" => 1, | |||
"max-procs" => 2, | |||
"bin-copy-environment" => ( | |||
"PATH", "SHELL", "USER" | |||
) | |||
) | |||
) | |||
) | |||
compress.cache-dir = "/var/www/cache/pastebin/" | |||
url.rewrite-once = ( | |||
"^/(pastebin.css)" => "$0", | |||
"^/(pastebin.js)" => "$0", | |||
"^/diff/(.*)" => "/pastebin.php?diff=$1", | |||
"^/(.*)" => "/pastebin.php?show=$1" | |||
) | |||
} | |||
'''Nginx''' | |||
* Edit nginx.conf (this is the significative part). | |||
rewrite ^/([a-z0-9]+)$/pastebin.php?show=$1 last; | |||
[[N.B. Nginx and Lighttpd configuration was not tested. These directive give you an idea on how is possibile to implement pastebin on those web servers.]] | |||
== Configure pastebin == | |||
The configuration file is outside the directory "public_html", but is in "/lib/config" dir. | |||
Copy''' default.conf.php''' into file that match your fqdn where pastebin service is hosted (e.g. pastebin.mydomain.com) with .conf.php extension. | |||
In this case, will be: '''pastebin.mydomain.com.conf.php''' | |||
* Edit '''pastebin.mydomain.com.conf.php''' and modify the following part: | |||
$CONF['dbsystem']='file'; | |||
$CONF['base_domain_elements']=2; | |||
The others directive are not mandatory, but should be modified according with your needs. | |||
The [[first]] directive mean that the backend must be a file instead of mysql (that is by default). | |||
The [[second]] specify which part of the filename '''pastebin.mydomain.com.conf.php''' is the domain name. | |||
In this case the number is 2: mydomain and com. | |||
Now, you have to create the directory that will contain the posts file. | |||
According with '''db.file.class.php''' the directory must be '''$_SERVER['DOCUMENT_ROOT'].'/../posts/''' and must be writable by the user which runs webserver daemon. | |||
{{Cmd|mkdir -p /var/www/vhosts/pastebin/posts | |||
chown apache:apache /var/www/vhosts/pastebin/posts | |||
}} | |||
Now, restart the web server. Pastebin service should be reachable on pastebin.mydomain.com |
Revision as of 09:03, 2 August 2011
How To Install Pastebin Service
A quick'n dirty doc about how to install a provate pastebin service.
There are a lot of pastebin service (http://en.wikipedia.org/wiki/Comparison_of_pastebins). We're going to use the oldest pastebin service, without DB support but only file.
Requirements:
- An up-and-running Web server (here are quoted apache, but is also possible to add nginx and lighttpd configuration) with modules:
- PHP
- vhosts
- mod_rewrite (for Apache and lighttpd, or NginxHttpRewriteModule for nginx)
Download Pastebin setup file
wget http://pastebin.dixo.net/pastebin.tar.gz
Web Server Configuration to host pastebin
Apache
Unzip the downloaded file in the web server vhosts dir:
tar -zxvf pastebin.tar.gz -C /var/www/vhosts
Rename vhosts dir:
mv /var/www/vhosts/pastebin-0.60 /var/www/vhosts/pastebin
- Edit /etc/apache/httpd.conf and add the following:
<VirtualHost *:80> ServerName pastebin.my.domain DocumentRoot /var/www/vhosts/pastebin/public_html ErrorLog /var/log/apache2/pastebin-error.log CustomLog /var/log/apache2/pastebin-access.log common php_value include_path .:/var/www/vhosts/pastebin/lib php_value register_globals off DirectoryIndex pastebin.php RewriteEngine on RewriteLog /var/log/apache2/pastebin-rewrite.log RewriteRule /([a-z0-9]+)$ /pastebin.php?show=$1 [L] </VirtualHost>
lighttpd
- Edit lighttpd.conf:
$HTTP["host"] =~ "(^|\.)paste.bin\.com$" { server.document-root = "/var/www/vhosts/pastebin/public_html" accesslog.filename = "/var/log/lighttpd/pastebin/access.log" fastcgi.server = ( ".php" => ( "localhost" => ( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php-pastebin.socket", "min-procs" => 1, "max-procs" => 2, "bin-copy-environment" => ( "PATH", "SHELL", "USER" ) ) ) ) compress.cache-dir = "/var/www/cache/pastebin/" url.rewrite-once = ( "^/(pastebin.css)" => "$0", "^/(pastebin.js)" => "$0", "^/diff/(.*)" => "/pastebin.php?diff=$1", "^/(.*)" => "/pastebin.php?show=$1" ) }
Nginx
- Edit nginx.conf (this is the significative part).
rewrite ^/([a-z0-9]+)$/pastebin.php?show=$1 last;
Configure pastebin
The configuration file is outside the directory "public_html", but is in "/lib/config" dir.
Copy default.conf.php into file that match your fqdn where pastebin service is hosted (e.g. pastebin.mydomain.com) with .conf.php extension.
In this case, will be: pastebin.mydomain.com.conf.php
- Edit pastebin.mydomain.com.conf.php and modify the following part:
$CONF['dbsystem']='file'; $CONF['base_domain_elements']=2;
The others directive are not mandatory, but should be modified according with your needs.
The first directive mean that the backend must be a file instead of mysql (that is by default).
The second specify which part of the filename pastebin.mydomain.com.conf.php is the domain name.
In this case the number is 2: mydomain and com.
Now, you have to create the directory that will contain the posts file.
According with db.file.class.php the directory must be $_SERVER['DOCUMENT_ROOT'].'/../posts/ and must be writable by the user which runs webserver daemon.
mkdir -p /var/www/vhosts/pastebin/posts chown apache:apache /var/www/vhosts/pastebin/posts
Now, restart the web server. Pastebin service should be reachable on pastebin.mydomain.com