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

User interface 在没有GUI的服务器上运行Smalltalk?,user-interface,smalltalk,User Interface,Smalltalk,我有一个截然不同的问题——我希望在生产服务器上运行Smalltalk,而不使用图形界面。大众或法罗是否可能做到这一点(甚至可能是Squeak) 我有一个没有X的VPS主机,希望有几个网站在Smalltalk上运行,同时在本地使用完整的Smalltalk env(包括GUI)开发它们。如果我在VPS上有根访问权限,我会亲自安装Xvnc,它不会在服务器上增加太多内容,而且使用GUI管理Squeak和Pharo会容易得多 通过让Squeak占据整个屏幕,您可以在它自己的Xvnc显示中启动每个Squea

我有一个截然不同的问题——我希望在生产服务器上运行Smalltalk,而不使用图形界面。大众或法罗是否可能做到这一点(甚至可能是Squeak)


我有一个没有X的VPS主机,希望有几个网站在Smalltalk上运行,同时在本地使用完整的Smalltalk env(包括GUI)开发它们。

如果我在VPS上有根访问权限,我会亲自安装Xvnc,它不会在服务器上增加太多内容,而且使用GUI管理Squeak和Pharo会容易得多

通过让Squeak占据整个屏幕,您可以在它自己的Xvnc显示中启动每个Squeak实例,而无需依赖窗口管理器

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


我是这样做的:

对于每个VM,启动一个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 statup脚本,可根据屏幕大小调整Squeak

"fullscreen.st"
ScreenController new fullScreenOn
关于安全的说明 默认情况下,Xvnc接受没有密码的连接,因此我建议您至少采取以下预防措施之一

  • 强制Xvnc在环回上侦听。为此,我使用LD_预加载技巧,并使用ssh端口转发进行连接
  • 阻止防火墙上的端口
  • 阅读
    -rfbauth
    参数以设置Xvnc密码验证

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

  • (Unix脚本风格,自由软件)
  • (应用服务器风格,专有但小型安装免费)
Pharo的一个具体设计目标是将开发环境与核心映像分离,以便于部署,但是我不知道这项工作已经完成了多少,也不知道它是否还包括完全删除GUI

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

在左侧字段中有一点更远,一些人认为是“UNIX服务器的SimultTalk”。当然,Ruby是一种与Smalltalk截然不同的语言,也远不如Smalltalk漂亮

你试过在网上问吗?他们必须一直处理这些事情。例如,Avi Bryant的公司SmallThink Systems同时运行Squeak和off Squeak。

如中所述:



使用和部署或web应用程序在文档的章节中进行了描述。

关于VW,有一系列带有部署说明的屏幕广播

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

我建议你读书

或者是新的海边书


干杯

我不需要安装X和WM来运行Xvnc?我正在linux虚拟机上做类似的事情。我不记得所有的细节,但我现在正在看。谢谢!我真的很感激这个解决方案!伟大的我加了一些details@Damir由于您似乎正在使用此功能,我觉得我必须添加有关安全性的最低限度的详细信息。希望有帮助。Smalltalk/X是“Unix服务器的Smalltalk”;-)实际上,它可能是构建类似服务器的应用程序的最佳Smalltalk,因为它编译成机器代码DLL,并链接到可执行文件。没有图像。生成用于部署的nullsoft包。顺便说一句:Jan Vrani的SmallRuby(在Smalltalk虚拟机中运行的Ruby,编译为ST字节码)比原来的运行速度更快@blabla999:对这些陈述要小心。SmallRuby尚未通过RubySpec套件。事实上,恕我直言,它甚至没有实现足够的Ruby规范来运行specsuite。它甚至不能运行Ruby基准测试套件中的所有基准测试,而Ruby基准测试套件只能运行Ruby的30%。在过去,几乎所有的Ruby实现在RubySpec上接近100%的通过率时都会显著降低速度(在极端情况下,有时会降低100倍)。正如肯特·贝克(Kent Beck)喜欢说的那样:如果不一定要正确的话,我可以随心所欲地快。@blabla999:我不明白没有映像这一事实如何使Smalltalk/X成为服务器的最佳选择。我使用Pharo,从未发现图像是一个障碍。