Pastebin

来自 Alpine Linux

关于如何安装私有 pastebin 服务的简易文档。

有很多 pastebin 服务 (https://web.archive.org/web/20111205120332/https://en.wikipedia.org/wiki/Comparison_of_pastebins)。我们将使用最古老的 pastebin 服务,它没有数据库支持,仅使用文件。

需求

  • 一个正在运行的 Web 服务器(这里引用了 apache,但也可能添加 nginx 和 lighttpd 配置)以及模块
  • PHP
  • vhosts
  • mod_rewrite (适用于 Apache 和 lighttpd,或 nginx 的 NginxHttpRewriteModule)


下载 Pastebin 安装文件

wget https://web.archive.org/web/20130602110905/http://pastebin.dixo.net/pastebin.tar.gz


Web 服务器配置以托管 pastebin

Apache 将下载的文件解压到 web 服务器 vhosts 目录中

tar -zxvf pastebin.tar.gz -C /var/www/vhosts

重命名 vhosts 目录

mv /var/www/vhosts/pastebin-0.60 /var/www/vhosts/pastebin

  • 编辑 /etc/apache/httpd.conf 并添加以下内容
       <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

  • 编辑 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

  • 编辑 nginx.conf(这是重要的部分)。
rewrite ^/([a-z0-9]+)$/pastebin.php?show=$1 last;
警告:Nginx 和 Lighttpd 配置未经测试。这些指令让您了解如何在这些 Web 服务器上实现 pastebin。


配置 pastebin

配置文件不在 “public_html” 目录之外,而是在 “/lib/config” 目录中。

default.conf.php 复制到与您的 fqdn 匹配的文件中,该 fqdn 是托管 pastebin 服务的位置(例如 pastebin.mydomain.com),并带有 .conf.php 扩展名。

在这种情况下,将是:pastebin.mydomain.com.conf.php

  • 编辑 pastebin.mydomain.com.conf.php 并修改以下部分
$CONF['dbsystem']='file';
$CONF['base_domain_elements']=2;


其他指令不是强制性的,但应根据您的需要进行修改。

第一个指令表示后端必须是文件而不是 mysql(默认情况下是 mysql)。

第二个指定文件名 pastebin.mydomain.com.conf.php 的哪一部分是域名。

在这种情况下,数字是 2:mydomain 和 com。

现在,您必须创建将包含帖子文件的目录。

根据 db.file.class.php,目录必须是 $_SERVER['DOCUMENT_ROOT'].'/../posts/,并且必须可由运行 web 服务器守护程序的用户写入。

mkdir -p /var/www/vhosts/pastebin/posts chown apache:apache /var/www/vhosts/pastebin/posts

现在,重启 web 服务器。Pastebin 服务应该可以通过 pastebin.mydomain.com 访问