Как настроить веб-сервер в общем lisp? - PullRequest
15 голосов
/ 24 мая 2010

Несколько месяцев назад меня вдохновила великолепная книга ANSI Common Lisp , написанная Полом Грэмом, и заявление о том, что Lisp можно использовать в качестве секретного оружия в вашей веб-разработке, опубликованное тем же автором.в своем блоге.Вау, это удивительно.Это то, что я искал долгое время.Автор действительно разработал успешное веб-приложение и продал его Yahoo.

С этими обнадеживающими изображениями я решил потратить некоторое время (1 или 2 года, кто знает) на изучение Common Lisp.Возможно, когда-нибудь я разработаю свое веб-приложение и стану отличным экспертом по Лиспу.На самом деле, я второй раз изучаю Лисп.Впервые пару лет назад я был очарован знаменитой книгой SICP , но позже обнаружил, что Схема была настолько невероятно незрелой для применения в реальной жизни.

После прочтения некоторых глав ANSI Common Lisp , я был почти уверен, что это отличная книга, полная подробного изучения Common Lisp.Затем я начал настраивать веб-сервер в Common Lisp.В конце концов, это должно быть лучшим способом, если вы хотите чему-то научиться.Демонстрации всегда лучше, чем определения.

Как следует из книги Practical Common Lisp (кстати, это тоже отличная книга), я решил установить AllegroServe на какую-то реализацию Common Lisp,Затем откуда-то еще я узнал, что Hunchentoot, кажется, лучше, чем AllegroServe.(Я не помню, откуда и от кого это слово. Так что не спорьте со мной.)

Как ни странно, вы знаете, что я никогда не смог установить эти два пакета в какой-либо реализации Common Lisp.Более досадно, я даже не знаю почему.Машина всегда изрыгает много жаргона и вводит меня в хаос.Я пробовал искать в интернете и ничего не нашел.

Может ли кто-нибудь, кто успешно установил эти пакеты в Linux, рассказать мне, как вы это сделали?У вас возникли проблемы?Как вы выяснили что не так и исправили?Чем детальнее, тем полезнее.

Ответы [ 4 ]

6 голосов
/ 24 мая 2010

Вы пробовали эти инструкции ?

У меня уже была работающая установка SBCL, поэтому я следовал только второй половине инструкций. Он настраивает очень минимальное веб-приложение, поэтому позволяет увидеть, как структурировать собственное веб-приложение.

Эти инструкции могут быть не совсем тем, что вы ищете - они предназначены для настройки веб-сервера (в Ubuntu) с удаленным взаимодействием с emacs / SLIME, но я думаю, что "удаленное взаимодействие" с таким же успехом может означать localhost.

5 голосов
/ 25 мая 2010

В основном, эти шаги установки взяты из этой статьи Простое веб-приложение на Lisp для начинающих , рекомендованное Фрэнком Шеараром (еще раз спасибо).Но я не выполнил точные шаги, потому что (1) я хотел бы установить Common Lisp с локальным пользователем;(2) Я не знаком с несколькими вещами, упомянутыми автором.Вы можете проверить оригинальную статью или вы можете просто следовать за мной здесь.Я боюсь, что мои инструкции намного легче следовать.:)

Перед установкой необходимо загрузить три пакета.Двоичные и исходные пакеты sbcl можно загрузить здесь , а пакет smanek можно загрузить здесь .

  • sbcl-1.0.38-x86-linux-binary.tar.bz2

  • sbcl-1.0.38-source.tar.bz2

  • smanek-trivial-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. Спасибо, Шейнал Манек, вы помогли многим людям.
  • Я до сих пор чувствую ненависть к тем, кто всегда много говорит, но мало. Даже люди злятся, этовсе еще очевидно, что важно то, что они говорят, а не то, как они говорят. Тем не менее, я был неправ, говоря что-то плохое в плохом настроении.
2 голосов
/ 26 октября 2017

5 лет спустя.

это очень легко с quicklisp . Я предполагаю, что вы установили SBCL или другую реализацию CL.

  1. Перейдите к вашему REPL и оцените

(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 Tutorial

0 голосов
/ 24 мая 2010

Пол Грэм, для начала: -)

Я тоже нашел в Common Lisp много работы, чтобы пройти первый шаг. Окружающая среда ужасна, когда вы только начинаете, не существует четкого Единого Истинного Пути, чтобы добраться до точки, где вы можете набить код и увидеть некоторые результаты (как, например, в Python). Как и вы, я потратил много времени на переход от одной реализации к другой. Итак, мой совет:

Я предлагаю вам просто выбрать один и игнорировать все остальные советы, пока вы не получите его.

Если вы не в настроении, просто возьмите Apache и напишите немного PHP: -)

...