代码之家  ›  专栏  ›  技术社区  ›  Damir Horvat

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

  •  26
  • Damir Horvat  · 技术社区  · 16 年前

    我有一个非常明显的问题——我想在生产服务器上运行smalltalk而不使用图形界面。大众或法罗能做到这一点吗(甚至是吱吱声)?

    我有一个没有x的vps主机,我希望在本地使用包括gui在内的完整的smalltalk env开发它们的同时,在smalltalk上运行一些网站。

    5 回复  |  直到 14 年前
        1
  •  20
  •   Randal Schwartz    16 年前

    是的,可以以“无头”方式部署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映像,在headless模式下,运行实际上是VNC服务器的rfbserver(远程缓冲服务器)。然后,您可以通过一个VNC客户机连接到该映像,并且可以像在本地一样浏览和使用smalltalk映像。

    我建议你读

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

    或是新的海边书。

    干杯

        2
  •  9
  •   Community Mohan Dere    9 年前
        3
  •  7
  •   Jörg W Mittag    16 年前

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

    Pharo的一个具体设计目标是将开发环境与核心映像分离,以便于部署,但是我不知道这项工作已经取得了多大进展,也不知道它是否还包括完全删除GUI。

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

    一些人认为,在左外场稍远一点 Ruby 成为“Unix服务器的Smalltalk”。当然,Ruby和Smalltalk是一种截然不同的语言,也不那么漂亮。

    你试过问一下 Seaside mailing lists ?他们必须一直处理这些事情。例如,Avi Bryant的公司smallthought systems运行这两个系统 DabbleDB 和 trendly 发出吱吱声。

        4
  •  7
  •   huaiyuan    15 年前

    如果我在vps上有根访问权限,我会亲自安装xvnc,它不会在服务器上增加太多膨胀,而且使用GUI管理squak和pharo更容易。

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

    您只需要最少的X支持文件。在无头Ubuntu上 apt-get install tightvncserver 只拉19.8 MB的包。与rfbserver不同,它只适用于任何吱吱声/pharo图像。


    我是这样做的:

    对于每个虚拟机,启动一个XVNC会话。您可以根据需要设置任意多个显示器。显示 :0 在VNC端口5900上运行,显示 :1 在5901等等。

    至显示器上的Statrt XVNC :0

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

    然后在显示器上发出吱吱声

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

    fullscreen.st 是一个简单的smalltalk状态脚本,可根据屏幕大小调整吱吱声。

    "fullscreen.st"
    ScreenController new fullScreenOn
    

    关于安全的说明

    默认情况下,XVNC接受没有密码的连接,因此我建议您至少采取以下预防措施之一。

    • 强制XVNC监听环回。我用了一个ld_预载技巧 similar to this 为此,使用ssh端口转发进行连接。
    • 阻止防火墙上的端口
    • 阅读关于 -rfbauth 设置XVNC密码验证的参数。
        5
  •  3
  •   mou    16 年前