Использование LISP для web
Временами "хочется странного". В частности, периодически меня "клинит" на освоение какого-нибудь нового ЯП. Например, Лисп мне не дает покоя уже довольно длительное время. И периодически я к нему возвращаюсь, что-то делаю, не понимаю, надоедает — и я опять откладываю до "следующего раза". На этот раз мне резко захотелось задействовать Лисп в качестве фреймворка при разработке чего-нибудь сайтоподобного.
Очередная попытка осилить Lisp привела к появлению данной заметки. На этот раз попытаемся задействовать его для разработки web-сайта.
Установка
Реализаций Lisp’а существует великое множество. Устанавливать было решено SBCL (Steel Bank Common Lisp). Данный вариант присутствует практически во всех дистрибутивах Linux.
Если в вашем дистрибутиве используется yum, то установка будет заключаться в команде yum install sbcl
Если же по каким-то причинам установить лисп из пакетов не получается, придется ставить из исходников.
При установке из портов (пакетов), SBCL обычно находится по пути "/usr/bin/sbcl"; если же он ставился из исходников, то по умолчанию он будет лежать в "/usr/local/bin/sbcl". Проверить место дислокации sbcl можно командой whereis sbcl.
Установка Hunchentoot и CL-WHO
Сам по себе SBCL — это по сути только ядро, а для полноценной работы необходимо доставить необходимые библиотеки из Интернета. Делается это достаточно просто с помощью системы под названием asdf-install — которая входит в SBCL изначально.
Пока из дополнительных пакетов нам понадобятся Hunchentoot (веб-сервер) и CL-WHO (библиотека для использования HTML-шаблонов). Установка упомянутых библиотек производится следующими действиями:
# /usr/local/bin/sbcl
* (require ‘asdf-install)
* (push :hunchentoot-no-ssl *features*)
* (asdf-install:install :hunchentoot)
Этим набором команд мы инициируем закачку из Интернета и установку необходимых нам библиотек (в частности, hunchentoot). В процессе инсталляции потребуются и другие модули, требующиеся для работы наших библиотек. Для каждого такого модуля система спросит, устанавливать ли его для всех пользователей или только для текущего. Рекомендуется устанавливать для всех ("system-wide").
В процессе инсталляции система может указать на некорректность сигнатуры — в данном случае необходимо нажать "0" и продолжить установку.
Теперь надо похожим образом установить библиотеку HTML-шаблонов CL-WHO:
* (asdf-install:install :cl-who)
Если никаких error’ов не было, значит все прошло успешно, и можно попробовать запустить наш лисповый веб-сервер для теста:
* (require ‘asdf)
* (asdf:oos ‘asdf:load-op :hunchentoot-test)
* (hunchentoot:start (make-instance ‘hunchentoot:acceptor :port 4242))
Теперь если вы введете в командной строке браузера адрес "http://127.0.0.1:4242" — вы увидите тестовую страницу веб-сервера.
Автоматизация загрузки
Пока наш чудный лисп-веб-сервер (по сути это application server on lisp) запускается только вручную и таки довольно корявенько. Было бы гораздо удобнее, если бы мы могли его запускать более простым (стандартным) способом без прав root’а; а если бы он при этом еще мог запускаться автоматически при загрузке системы — можно было бы вообще приблизиться к интеллектуальному оргазму.
Для начала заведем пользователя:
# adduser -d /var/lib/hunchentoot -c "Hunchentoot" -M -r htoot
# mkdir /var/lib/hunchentoot
# chown htoot:htoot /var/lib/hunchentoot
# chmod go-rwx /var/lib/hunchentoot
Теперь нам понадобятся два файлика:
1. файл для запуска (http://storinka.com.ua/files/startup.lisp), который будет лежать в домашнем каталоге /var/lib/hunchentoot
2. файл для запуска (http://storinka.com.ua/files/hunchentoot), который будет располагаться в /etc/init.d/
Их надо скачать с моего сайта и покласть в соответствующих директориях:
# cd /var/lib/hunchentoot
# wget http://storinka.com.ua/files/startup.lisp
# cd /etc/init.d
# wget http://storinka.com.ua/files/hunchentoot
# chown root:root hunchentoot
Теперь запуск и останов нашего сервера можно осуществлять через /etc/init.d/hunchentoot start|stop
Результаты дальнейших экспериментов будут отражены в следующих выпусках.
Мой блог находят по следующим фразам
- стоит ли покупать китайский телефон
- Обложки гей журналов
- как сделать самому мультик
- ключи для алаваровских игр
- можно принимать платежи paypal
- как спамить в контакте
