Установка pastebin: организовываем свой nopaste сервис
В настоящее время среди многих пользователей стали очень популярны различные сервисы nopaste: pastebin.com, paste.ubuntu.com, pastebin.mozilla-russia.org и т. д. Основным недостатком публиных сервисов такого рода является фактическое отсутствие контроля за опубликованной информацией, которая часто носит конфиденциальный характер. Решить данную проблему можно путем организации своего сервиса публикации фрагментов текста.
Исходный код веб-приложения, используемого на pastebin.com, распространяется под лицензией GPL и доступен для загрузки тут (зеркало). Также существует русифицированная версия (зеркало), используемая на pastebin.mozilla-russia.org – на ней я и остановил свой выбор.
В качестве веб-сервера традиционно использую Lighttpd, с учетом специфики работы которого и будет описываться установка pastebin.
Итак, приступим:
1. Загружаем исходный код русифицированного pastebin и распаковываем в директорию веб-сервера:
wget http://pastebin.mozilla-russia.org/pastebin_mr.zip
unzip pastebin_mr.zip
2. Копируем содержиме директории lib в директорию public_html:
cp -rf /var/www/paste.domain.tld/lib/* /var/www/paste.donain.tld/public_html
,
где paste.domain.tld – домен, на котором будет работать наш nopaste сервис.
В дальнейшем директорию /var/www/paste.domain.tld/lib можно будет вовсе удалить.
3. Копируем конфигурационный файл:
cp /var/www/paste.domain.tld/public_html/config/default.conf.php /var/www/paste.domain.tld/public_html/config/paste.domain.tld.conf.php
4. Создаем БД MySQL под названием pastebin (разумеется, имя БД можно придумать свое) и пользователя, который должен быть наделен административными правами на созданную БД. Для проведения этих действий рекомендую воспользоваться веб-приложением phpMyAdmin.
5. Применительно к БД pastebin необходимо выполнить следующий SQL-запрос (можно через phpMyAdmin):
CREATE TABLE `pastebin` (
`pid` int(11) NOT NULL auto_increment,
`poster` varchar(16) default NULL,
`posted` datetime default NULL,
`code` text,
`parent_pid` int(11) default '0',
`format` varchar(16) default NULL,
`codefmt` mediumtext,
`codecss` text,
`domain` varchar(255) default '',
`expires` DATETIME,
`expiry_flag` ENUM('d','m', 'f') NOT NULL DEFAULT 'm',
PRIMARY KEY (`pid`),
KEY `domain` (`domain`)
);
6. Редактируем конфигурационный файл /var/www/paste.domain.tld/public_html/config/paste.domain.tld.conf.php:
6.1. Убеждаемся, что используется СУБД MySQL:
$CONF['dbsystem']='mysql';
6.2. Вводим имя БД, имя пользователя, пароль. При необходимости также меняем имя сервера БД:
$CONF['dbhost']='localhost';
$CONF['dbname']='pastebin';
$CONF['dbuser']='pastebin';
$CONF['dbpass']='password';
6.3. Указываем в $CONF[‘base_domain_elements’]=, какого уровня используется домен для нашего сервиса. В случае с доменом третьего уровне paste.domain.tld:
$CONF['base_domain_elements']=3;
7. Конфигурируем виртуальный хост в Lighttpd:
$HTTP["host"] =~ "(^|www.)paste.domain.tld$" {
server.document-root = "/var/www/public_html"
accesslog.filename = "/var/logs/lighttpd/paste.jabbos.org_access.log"
server.errorlog = "/var/logs/lighttpd/paste.jabbos.org_error.log"
url.rewrite-once = (
"^/(pastebin.css)" => "$0",
"^/(robots.txt)" => "$0",
"^/(pastebin.js)" => "$0",
"^/diff/(.*)" => "/pastebin.php?diff=$1",
"^/(.*)" => "/pastebin.php?show=$1"
)
}
8. Перезапускаем Lighttpd и пробуем зайти на paste.domain.tld.
Если возникнут какие-либо вопросы – пишите, отвечу с удовольствием.
А можно ли изменить дефолтные интервалы хранения записи и/или добавить свои?
Все возможно 🙂 Только надо сорцы править – конфиге я такого параметра не обнаружил.