user interface - ¿Ejecuta Smalltalk en el servidor sin GUI?
user-interface (5)
Acerca de VW existe una serie de capturas de pantalla con notas de implementación http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=smalltalk_daily_deployment
Tengo una pregunta bastante clara: me gustaría ejecutar Smalltalk en un servidor de producción sin usar una interfaz gráfica. ¿Es esto posible con VW o Pharo (quizás incluso Squeak)?
Tengo un servidor VPS sin X y me gustaría tener pocos sitios web ejecutándose en Smalltalk, mientras los desarrollo localmente con Fulltalk env completo, incluyendo GUI.
Como se responde en ¿Cómo es la implementación en diferentes lenguajes de programación? :
Smalltalk :
La implementación de una aplicación web Squeak o Pharo utilizando Seaside y Apache httpd se describe en la documentación, capítulo Despliegue con Apache .
No olvide que también hay entornos Smalltalk que están específicamente diseñados para funcionar sin cabeza en un servidor, por ejemplo:
- GNU Smalltalk (estilo de scripting Unix, software libre)
- GemStone / S (estilo del servidor de aplicaciones, propietario pero gratis para instalaciones pequeñas)
Uno de los objetivos de diseño específicos de Pharo es separar el entorno de desarrollo de la imagen principal, para una implementación más sencilla, sin embargo, no sé hasta dónde ha llegado este esfuerzo ni si también incluye eliminar por completo la GUI.
No estoy seguro acerca de VisualWorks, pero no me sorprendería si tuvieran un modo sin cabeza.
Un poco más lejos en el campo izquierdo, algunas personas consideran que Ruby es "Smalltalk para el servidor Unix". Aunque, por supuesto, Ruby es un lenguaje mucho más diferente y menos bello que Smalltalk.
¿Has intentado preguntar en las listas de correo de Seaside ? Deben lidiar con esto todo el tiempo. La compañía de Avi Bryant, Smallthought Systems, por ejemplo, ejecuta tanto DabbleDB como, a la trendly , Squeak.
Sí, es posible implementar Pharo de una manera "sin cabeza". Simplemente envíe el sin cabeza y eso es todo. Ejemplo:
#!/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
Es común desplegar una imagen PharoCore ejecutando Seaside, en modo headless y ejecutando RFBServer (servidor de búfer remoto) que en realidad es un servidor VNC. Luego, puede conectarse a esa imagen a través de un cliente VNC y puede navegar y usar la imagen Smalltalk como si fuera localmente.
Te sugiero que leas
http://miguel.leugim.com.mx/index.php/2009/09/18/deploying-seaside-applications/
O el nuevo libro de mar.
Aclamaciones
Si tuviera acceso de root en el VPS, personalmente instalaría Xvnc, no agregaría demasiada saturación en el servidor y sería mucho más fácil administrar Squeak y Pharo con una GUI.
Puede iniciar cada instancia de Squeak en su propia pantalla Xvnc sin depender de un Administrador de ventanas haciendo que Squeak ocupe toda la pantalla.
Solo necesita un mínimo de archivos de soporte X. En un Ubuntu sin cabeza apt-get install tightvncserver
solo extrae 19.8 Mb de paquetes. Y a diferencia de RFBServer, funcionará solo con cualquier imagen de Squeak / Pharo.
He aquí cómo hago esto:
Para cada VM, inicie una sesión de Xvnc. Puede tener tantas pantallas como necesite. Pantalla :0
ejecuta en el puerto VNC 5900, pantalla :1
en 5901 y así sucesivamente.
Para statrt Xvnc en la pantalla :0
Xvnc :0 -nolisten tcp -geometry 1024x726 -depth 24 &
A continuación, ejecute Squeak en esa pantalla
squeak -display :0 -- ~/fullscreen.st &
fullscreen.st
es una secuencia de comandos simple de Stattalk que ajusta Squeak al tamaño de la pantalla
"fullscreen.st"
ScreenController new fullScreenOn
Una nota sobre seguridad
De forma predeterminada, Xvnc acepta conexiones sin una contraseña, por lo que le sugiero que tome al menos una de las siguientes precauciones.
- Obliga a Xvnc a escuchar en loopback. Utilizo un truco LD_PRELOAD similar a este para ese propósito y me conecto utilizando el reenvío de puerto ssh.
- Bloquea el puerto en tu firewall
- Lea en el argumento
-rfbauth
para configurar la autenticación de contraseña de Xvnc.