Как настроить общий веб-сервер lisp?
Несколько месяцев назад меня вдохновила великолепная книга ANSI Common Lisp, написанная Полом Грэмом, и утверждение, что Lisp можно использовать как секретное оружие в вашей веб-разработке, опубликованное тем же автором на его блог. Ничего себе, это потрясающе. Это то, что я искал долгое время. Автор действительно разработал успешное веб-приложение и продал его Yahoo.
С этими обнадеживающими образами я решил потратить некоторое время (1 год или 2 года, кто знает) на изучение Common Lisp. Возможно, когда-нибудь я разработаю свое веб-приложение и превращусь в великого эксперта Lisp. На самом деле, это второй раз для меня, чтобы учиться Lisp. В первый раз было пару лет назад, когда я был очарован знаменитой книгой SICP, но позже найденная схема была настолько невероятно незрелой для реальной жизни.
После прочтения некоторых разделов ANSI Common Lisp, я был уверен, что это отличная книга, полная подробного изучения Common Lisp. Затем я начал настраивать веб-сервер в Common Lisp. В конце концов, это должен быть лучший способ, если вы хотите чему-то научиться. Демонстрации всегда лучше, чем определения.
Как было предложено в книге Practical Common Lisp (кстати, это тоже замечательная книга), я решил установить AllegroServe на реализацию Common Lisp. Затем, откуда-то еще, я узнал, что Hunchentoot кажется лучше AllegroServe. (Я не помню, где и от кого это слово. Так что не спорь со мной.)
По иронии судьбы, вы знаете, что я никогда не мог установить эти два пакета в любой Common Lisp. Более раздражающе, я даже не знаю, почему. Машина всегда выплевывает много жаргона и ведет меня в хаос. Я пробовал искать в Интернете и ничего не нашел.
Может ли кто-нибудь, кто успешно установил эти пакеты в Linux, рассказать мне, как вы это сделали? У вас возникли проблемы? Как вы поняли, что не так, и зафиксировали это? Чем детальнее, тем полезнее.
Ответы
Ответ 1
Вы пробовали эти инструкции?
У меня уже была рабочая SBCL-установка, поэтому я только следил за второй половиной инструкций. Он устанавливает очень минимальное веб-приложение, поэтому он позволяет вам увидеть, как создать собственное веб-приложение.
Эти инструкции могут быть не совсем то, что вы ищете - они предназначены для настройки веб-сервера (на Ubuntu) с помощью удаленное взаимодействие с emacs/SLIME, но я думаю, что "дистанционное взаимодействие" может также означать локальный хост.
Ответ 2
В основном, эти этапы установки из этой статьи Простой Lisp Webapp для начинающих, рекомендованный Фрэнком Шеараром (спасибо снова). Но я не выполнял точные шаги, потому что (1) я хотел бы установить Common Lisp с локальным пользователем; (2) Я не знаком с некоторыми вещами, упомянутыми автором. Вы можете проверить оригинальную статью, или вы можете просто следовать за мной здесь. Я боюсь, что мои инструкции намного легче следовать.:)
Перед установкой необходимо загрузить три пакета. sbcl и исходные пакеты могут быть загружены здесь, а пакет smanek можно загрузить здесь.
-
SbCl-1.0.38-x86-Linux-binary.tar.bz2
-
SbCl-1.0.38-source.tar.bz2
-
smanek-тривиальности lisp -webapp-3681c1
Примечание. Номер версии, возможно, изменился, когда вы видите это эссе. Так что не утруждайтесь получением точных пакетов. Однако для меня это правильные пакеты.
Вот что я делаю (замените YOURPATH своим реальным путем, и я предполагаю, что вы используете BASH):
1. Установите бинарный пакет sbcl
tar jxf sbcl-1.0.38-x86-linux-binary.tar.bz2
cd sbcl-1.0.38-x86-linux
INSTALL_ROOT=YOURPATH sh install.sh
cd ..
Ну, теперь установлен бинарный пакет sbcl. Когда программа установки жалуется на что-то вроде "нет руководства найдено", это нормально, так как руководство не включено в бинарный пакет. Пусть это будет.
2. Установите PATH и SBCL_HOME
export PATH=YOURPATH/bin/:$PATH
export SBCL_HOME=YOURPATH/lib/sbcl/
3. Установите исходный пакет sbcl
tar jxf sbcl-1.0.38-source.tar.bz2
cd sbcl-1.0.38
sh make.sh
export SBCL_HOME=''
INSTALL_ROOT=YOUROTHTERPATH sh install.sh
cd ..
ПРИМЕЧАНИЕ. Возможно, вам потребуется указать другой каталог для установки или он будет установлен в тот же каталог, в котором находится двоичный файл sbcl.
4. Установите PATH и SBCL_HOME
export PATH=YOUROTHERPATH/bin/:$PATH
export SBCL_HOME=YOUROTHERPATH/lib/sbcl/
5. Установите пакет smanek
unzip smanek-trivial-lisp-webapp-36816c1.zip
cd smanek-trival-lisp-webapp-36816c1
cd scripts
./startserver.sh
Когда говорится, что "Веб-сервер запущен на порту 8080", вы можете посетить " http://localhost:8080" в своем веб-браузере. Он есть, правильно?
6. Несколько примечаний
- После помещения трех пакетов в один каталог вы можете запускать указанные выше сценарии один за другим или в пакетном режиме. Не забудьте заменить PATH своими реальными путями.
- Я подозреваю, что Shaneal Manek сильно взломал пакеты asdf и hunchentoot, поскольку я ничего не нашел в $HOME/.sbclrc и $HOME/.sbcl. Спасибо, Шейнал Манек, ты много помог многим людям.
- Я все еще чувствую ненависть к тем, кто всегда много говорит, но делает немного. Даже люди злы, все еще очевидно, что это то, что они говорят, а не то, как они это говорят. Тем не менее, я был не прав сказать что-то плохое в плохом настроении.
Ответ 3
Пол Грэм, для начала: -)
Я тоже нашел Common Lisp много работы, чтобы пройти первый шаг. Окружающая среда ужасна, когда вы только начинаете, нет четкого One True Path, чтобы добраться до точки, где вы можете столкнуться с некоторым кодом и увидеть некоторые результаты (например, с Python). Как и вы, я потратил много времени, перескакивая с одной реализации на другую. Поэтому мой совет:
Я предлагаю вам просто выбрать один и игнорировать все остальные советы, пока вы его не пойдете.
Если вы не в настроении, просто получите Apache и напишите PHP: -)
Ответ 4
5 лет спустя.
очень легко с quicklisp. Я предполагаю, что вы установили SBCL или другую реализацию CL.
- Перейдите к своему REPL и evalute
(ql:quickload :aserve)
- начать AllegroServe
(net.aserve:start :port 8000)
- опубликовать некоторые файлы HTML
(net.aserve:publish-file :path "/" :file "~/hello.html")
- Перейдите к http://localhost:8000/
Счастливый взлом!.
Узнайте больше о Введение в учебник AllegroServe