Регистрация | Войти
Lisp — программируемый язык программирования

Развёртывание сайта на основе исходного кода lisper.ru

Эта инструкция предназначена для тех, кто хочет развернуть сайт на основе исходного кода lisper.ru на своём компьютере. Это может потребоваться тем, кто желает ознакомиться с принципами работы данного сайта, поэкспериментировать с исходным кодом или помочь в разработке проекта. Необходимым условием для развёртывания системы является понимание принципов работы asdf и наличие практического опыта установки asdf-пакетов.

Требования к системе

Подтверждена успешная работа lisper.ru на двух типах систем: Gentoo GNU/Linux и Debian GNU/Linux. Кроме того, есть все основания полагать, что с большими или меньшими усилиями необходимое программное обеспечение можно успешно развернуть на любой современной системе GNU/Linux. Возможность успешного запуска системы на *BSD-системах (в том числе, и на FreeBSD), на системах семейства Windows и т.п. представляется сомнительной (пожалуйста, сообщите, если Вам это удастся), что связано, с ограниченной поддержкой SBCL этих платформ.

В качестве реализации Common Lisp используется SBCL. В качестве сервера баз данных PostgreSQL (версии 8.3 и выше). Для возможности отправки почты необходимо наличие в системе программы sendmail (/usr/bin/sendmail или /usr/sbin/sendamil): на сервере lisper.ru используется Exim, но в целях разработки проще всего использовать sSMTP. Установка данных компонент должна легко производиться средствами используемой системы и здесь не рассматривается. Установка дополнительных lisp-пакетов будет рассмотрена ниже.

Подготовительный этап

Развёртывание lisper.ru проще всего начать с установки следующих ключевых пакетов:

Большинство из перечисленных пакетов имеют собственные зависимости, которые должны быть удовлетворены. Во-избежание непредвиденных проблем рекомендуется устанавливать самые свежие стабильные версии данных пакетов. На системах типа Gentoo GNU/Linux наиболее простым способом установки является использование gentoo-lisp overlay (доступен, в том числе, через layman, где называется - 'lisp'). Если целевой системой является Debian GNU/Linux, то, возможно, полезными окажутся deb-пакеты от catap, получить доступ к которым можно на http://catap.ru/debian-catap/. Для прочих систем, вероятно, проще всего использовать ASDF-Install, либо внимательно читать инструкции по установке на сайтах этих проектов.

Установка основных пакетов

Под основными здесь понимаются пакеты, которые могут (и с большой вероятностью будут) изменяться в процессе развития lisper.ru Это

Все эти пакеты надо брать (clone) из git-репозитория, и устанавливать (за исключение cl-libxml2) простым созданием символической ссылки на asd-файлы. Инструкция по установке cl-libxml2 доступна по адресу http://cl-libxml2.googlecode.com/svn/doc/install.xml.

Непосредственный код lisper.ru содержится в пакете rulisp.

Если всё было установлено правильно, то загрузить систему можно командой:

CL-USER> (asdf:operate 'asdf:load-op :rulisp)

Если при установке были допущены ошибки (либо ошибка в данном документе), то Вы их увидите :)

Настройка базы данных

В последующем, вероятно, будет использоваться какой-либо механизм "database migration", но пока без него. Ниже считается что используется база rulisp и пользователь lisp, при желании можно использовать любые другие, но при этом необходимо отредактировать файл rulisp/pref.lisp, изменив значение параметра *rulisp-db*.

Создание пользователя и базы

$ psql -U postgres
postgres=# CREATE USER lisp WITH PASSWORD '123';
postgres=# CREATE DATABASE rulisp WITH OWNER = lisp;
postgres=# \quit

Создание структуры базы данных

$ psql -U lisp -d rulisp -f /path/to/rulisp/install/rulisp.schema-dump.sql

Создание форума

$ psql -U lisp -d rulisp
rulisp=> INSERT INTO rlf_forums (description, pretty_forum_id) VALUES ('Common Lisp', 'common-lisp');
rulisp=> \quit

Запуск

Чтобы запустить получившееся чудо, нужно выполнить

CL-USER> (restas:start '#:rulisp :port 8080)

Тонкая настройка

Всё, развёртывание сайта на основе исходного кода lisper.ru завершено. Теперь, смотрим результат:

firefox http://localhost:8080/

Если получаем "Internal Server Error", то идём в SLIME, устанавливаем отладочный режим:

(setf restas::*catch-errors-p* nil)

И наслаждаемся мощью отладчика :) А если используется SLIME-archimag, то посмотреть содержимое какого-нибудь параметра можно, нажав на нем C-c I - откроется инспектор.

Все конфигурационные параметры находятся в файле rulisp/pref.lisp. Источники для планеты в файле rulisp/planet-feeds.lip

Примечание:
Приведённых инструкций достаточно для запуска сайта под контролем SLIME, инструкции по "демонизации" лисп-процесса будут позже.

@2009-2013 lisper.ru