在没有GUI的服务器上运行Smalltalk?

时间:2010-03-14 18:46:30

标签: user-interface smalltalk

我有一个相当明显的问题 - 我想在不使用图形界面的情况下在生产服务器上运行Smalltalk。 VW或Pharo(甚至是Squeak)可以实现吗?

我有一个没有X的VPS托管,并希望在Smalltalk上运行很少的网站,同时使用功能齐全的Smalltalk env在本地开发它们,包括GUI。

5 个答案:

答案 0 :(得分:20)

是的,可以以“无头”的方式部署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

通常以无头模式部署运行Seaside的PharoCore映像并运行RFBServer(远程缓冲服务器),这实际上是VNC服务器。然后,您可以通过VNC客户端连接到该图像,您可以浏览并使用Smalltalk图像,就像它是本地的一样。

我建议你阅读

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

或者新的海边书。

干杯

答案 1 :(得分:9)

正如How is the Deployment in different Programming Languages?中所述:

Smalltalk
文档“{3}}”中介绍了使用SqueakPharo部署SeasideApache httpd Web应用程序。

答案 2 :(得分:7)

如果我在VPS上有root访问权限,我会亲自安装Xvnc,它不会在服务器上添加太多膨胀,并且使用GUI管理Squeak和Pharo要容易得多。

您可以通过让Squeak占用整个屏幕而不依赖于Window Manager来在其自己的Xvnc显示中启动每个Squeak实例。

您只需要最少的X支持文件。在无头的Ubuntu apt-get install tightvncserver上只有19.8 Mb的包。与RFBServer不同,它只适用于任何Squeak / Pharo图像。


我是这样做的:

为每个VM启动一个Xvnc会话。您可以根据需要使用任意数量的显示器。显示:0在VNC端口5900上运行,在5901上显示:1,依此类推。

在展示:0

上展示Xvnc
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接受没有密码的连接,因此我建议您至少采取以下一种预防措施。

  • 强制Xvnc监听环回。为此目的,我使用LD_PRELOAD技巧similar to this并使用ssh端口转发进行连接。
  • 阻止防火墙上的端口
  • 请阅读-rfbauth参数以设置Xvnc密码身份验证。

答案 3 :(得分:7)

不要忘记还有Smalltalk环境专为服务器上的无头操作而设计,例如:

  • GNU Smalltalk(Unix脚本风格,自由软件)
  • GemStone/S(App Server样式,专有但免费提供小型安装)

Pharo的一个具体设计目标是将开发环境与核心映像分开,以便更容易部署,但是我不知道这项工作的进展有多远,也不包括完全删除GUI。

我不确定VisualWorks,但如果他们有无头模式,我不会感到惊讶。

在左侧字段中稍微远一些,有些人认为Ruby是“Unix服务器的Smalltalk”。虽然Ruby当然是一种与Smalltalk完全不同且不那么美丽的语言。

您是否尝试过询问Seaside mailing lists?他们必须一直处理这些事情。例如,Avi Bryant的公司Smallthought Systems在Squeak上运行DabbleDBtrendly

答案 4 :(得分:3)