Запустить Smalltalk на сервере без графического интерфейса? - PullRequest
26 голосов
/ 14 марта 2010

У меня довольно четкий вопрос - я бы хотел запустить Smalltalk на рабочем сервере без использования графического интерфейса. Это возможно с VW или Pharo (возможно, даже Squeak)?

У меня есть VPS-хостинг без X, и я хотел бы, чтобы на Smalltalk работало несколько веб-сайтов, в то время как я разрабатывал их локально с полнофункциональной средой Smalltalk, включая GUI.

Ответы [ 5 ]

20 голосов
/ 15 марта 2010

Да, можно развернуть Pharo «без головы». Просто отправь безголового и все. Пример:

#!/bin/sh

NOHUP="/usr/bin/nohup"
SQUEAK_VM="/usr/bin/squeakvm"
SQUEAK_OPTS="-mmap 100m -vm-sound-null -vm-display-X11 -headless"
SQUEAK="$SQUEAK_VM $SQUEAK_OPTS"
IMAGES_HOME="/home/miguel/squeak/images/azteca"
SCRIPTS_HOME="/home/miguel/squeak/scripts/azteca"
LOGS_HOME="/home/miguel/squeak/logs/azteca"
START_PORT=8080
END_PORT=8093


# Start the Magma image
echo "Starting Magma image"
$NOHUP $SQUEAK $IMAGES_HOME/magma.image $SCRIPTS_HOME/magma.st >> $LOGS_HOME/magma.nohup &

# Start the Seaside images
for PORT in `seq $START_PORT $END_PORT`; do
  echo "Starting Seaside image on port: $port"
  $NOHUP $SQUEAK $IMAGES_HOME/seaside.image $SCRIPTS_HOME/seaside.st
  port $PORT >> $LOGS_HOME/seaside.nohup &
done

Обычно развертывается образ PharoCore под управлением Seaside с автономным режимом и запущенным RFBServer (удаленный буферный сервер), который фактически является сервером VNC. Затем вы можете подключиться к этому образу через VNC-клиент, и вы можете просматривать и использовать образ Smalltalk, как если бы он был локальным.

Предлагаю вам прочитать

http://miguel.leugim.com.mx/index.php/2009/09/18/deploying-seaside-applications/

Или новая приморская книга.

Приветствия

9 голосов
/ 15 марта 2010

Как ответили в Как происходит развертывание на разных языках программирования? :

Smalltalk
Развертывание веб-приложения Squeak или Pharo с использованием Seaside и Apache httpd описано в документации, глава Развертывание с помощью Apache .

7 голосов
/ 14 марта 2010

Не забывайте, что существуют также среды Smalltalk, специально предназначенные для автономной работы на сервере, например ::100100

  • GNU Smalltalk (стиль сценариев Unix, бесплатное программное обеспечение)
  • GemStone / S (стиль сервера приложений, проприетарный, но бесплатный для небольших установок)

Одной из конкретных целей разработки Pharo является отделение среды разработки от основного образа для более простого развертывания, однако я не знаю, насколько далеко продвинулись эти усилия, и не включает ли это также полное удаление графического интерфейса.

Я не уверен насчет VisualWorks, но я не удивлюсь, если бы у них был режим без головы.

Чуть дальше в левом поле некоторые люди считают Ruby"Smalltalk для сервера Unix". Хотя, конечно, Ruby - это совсем другой и гораздо менее красивый язык, чем Smalltalk.

Вы пытались спросить в Seaside списках рассылки ? Они должны иметь дело с этим материалом все время. Например, компания Avi Bryant Smallthought Systems запускает как DabbleDB , так и в тренде от Squeak.

7 голосов
/ 14 марта 2010

Если бы у меня был root-доступ на VPS, я бы лично установил Xvnc, это не добавило бы слишком много наворотов на сервере и намного проще управлять Squeak и Pharo с графическим интерфейсом.

Вы можете запустить каждый экземпляр Squeak на своем собственном дисплее Xvnc, не полагаясь на оконный менеджер, если Squeak займет весь экран.

Вам нужны только минимальные файлы поддержки X. На безголовый Ubuntu apt-get install tightvncserver тянет только 19,8 Мб пакетов. И в отличие от RFBServer он будет работать только с любым изображением Squeak / Pharo.


Вот как я это делаю:

Для каждой виртуальной машины запустите сеанс Xvnc. Вы можете иметь столько дисплеев, сколько вам нужно. Дисплей :0 работает на порту VNC 5900, дисплей :1 на 5901 и т. Д.

Для отображения Xvnc на дисплее :0

Xvnc :0 -nolisten tcp -geometry 1024x726 -depth 24 &

Затем запустите Squeak на этом дисплее

squeak -display :0 -- ~/fullscreen.st  &

fullscreen.st - это простой скрипт статута Smalltalk, который настраивает Squeak в соответствии с размером экрана

"fullscreen.st"
ScreenController new fullScreenOn

Записка о безопасности

По умолчанию Xvnc принимает соединения без пароля, поэтому я предлагаю вам принять хотя бы одну из следующих мер предосторожности.

  • Заставляет Xvnc прослушивать по шлейфу. Для этой цели я использую трюк LD_PRELOAD , аналогичный этому , и подключаюсь с помощью переадресации порта ssh.
  • Заблокируйте порт на вашем брандмауэре
  • Прочтите аргумент -rfbauth, чтобы настроить аутентификацию по паролю Xvnc.
3 голосов
/ 15 марта 2010

Про VW есть серия скринкастов с примечаниями по развертыванию http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=smalltalk_daily_deployment

...