У меня есть довольно отличный вопрос - я хотел бы выполнить Smalltalk на рабочем сервере, не используя графический интерфейс. Действительно ли это возможно с VW или Pharo (возможно, даже Писк)?
Я имею VPS, размещающий без X, и хотел бы иметь небольшое количество работы веб-сайтов Smalltalk, при разработке их локально с полноценным ENV Smalltalk, включая GUI.
Да, можно развернуть Pharo "безголовым" способом. Просто отправьте -headless и все. Пример:
#!/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/
Или новую книгу seaside.
Будьте здоровы
Как указано в Как происходит развертывание на разных языках программирования? :
Smalltalk :
{{ 1}} Развертывание веб-приложений Squeak или Pharo с использованием Seaside и Apache httpd описано в документации, глава Развертывание. с Apache .
Если бы у меня был root-доступ к VPS, я бы лично установил Xvnc, он не добавляет слишком большого размера на сервере, и намного проще управлять Squeak и Pharo с графическим интерфейсом.
Вы можете запускать каждый экземпляр Squeak на собственном дисплее Xvnc, не полагаясь на оконный менеджер, так как Squeak занимает весь экран.
Вам нужен только минимум файлов поддержки X. На «безголовом» Ubuntu apt-get install tightvncserver
извлекает только 19,8 Мб пакетов. И в отличие от RFBServer он будет работать с любым образом Squeak / Pharo.
Вот как я это делаю:
Для каждой виртуальной машины запускайте сеанс Xvnc. У вас может быть столько дисплеев, сколько вам нужно. Дисплей : 0
работает на порту 5900 VNC, дисплей : 1
- на 5901 и так далее.
Чтобы запустить Xvnc на дисплее : 0
Xvnc :0 -nolisten tcp -geometry 1024x726 -depth 24 &
Затем запустите Squeak на этом дисплее.
squeak -display :0 -- ~/fullscreen.st &
fullscreen.st
- это простой сценарий Smalltalk statup, который подстраивает Squeak под размер экрана
"fullscreen.st"
ScreenController new fullScreenOn
По умолчанию Xvnc принимает соединения без пароля, поэтому я предлагаю вам принять хотя бы одну из следующих мер предосторожности.
-rfbauth
, чтобы настроить аутентификацию по паролю Xvnc. Не забывайте, что существуют также среды Smalltalk, специально разработанные для автономная работа на сервере, например:
Один из Конкретные цели проектирования Pharo - отделить среду разработки от основного образа для упрощения развертывания, однако я не знаю, насколько далеко продвинулись эти усилия и включает ли оно также полное удаление графического интерфейса.
Я не уверен насчет VisualWorks, но я бы не удивился, если бы у них был безголовый режим.
Немного дальше в левом поле некоторые люди считают Ruby «Smalltalk для сервера Unix». Хотя, конечно, Ruby - это намного другой и гораздо менее красивый язык, чем Smalltalk.
Вы пробовали задать вопрос в списках рассылки Seaside ? Они должны постоянно заниматься этим. Компания Эви Брайанта Smalloughtt Systems, например, запускает как DabbleDB , так и с тенденцией Squeak.
О VW там серия скринкастов с примечаниями по развертыванию. http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=smalltalk_daily_deployment