Как настроить общий веб-сервер 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)

  1. начать AllegroServe

(net.aserve:start :port 8000)

  1. опубликовать некоторые файлы HTML

(net.aserve:publish-file :path "/" :file "~/hello.html")

  1. Перейдите к http://localhost:8000/

Счастливый взлом!.

Узнайте больше о Введение в учебник AllegroServe