
Estou tentando executar um programa em uma instância de servidor Ubuntu 14.04 na Amazon, mas ele precisa de uma interface gráfica. Posso instalar o lunbuntu e usar o x2go para visualizar a área de trabalho, mas assim que há um problema na minha conexão com a internet, a conexão do x2go cai e o ambiente da área de trabalho parece desligar (junto com meu programa).
Existe uma maneira de ter o desktop rodando o tempo todo na instância e usar o x2go para acessá-lo (em vez de ele ser criado quando eu me conectar), para que o desktop funcione mesmo se eu perder minha conexão? O objetivo de executá-lo no EC2 é aumentar a estabilidade em relação à minha conexão desleixada.
Depois de muitas horas resolvendo esse problema, lendo e experimentando diferentes soluções para configurar o arquivo DISPLAY e xauth, não consigo fazê-lo funcionar. Isso pode ser feito?
Responder1
Claro. Existem duas opções:
Se você precisar, ocasionalmente, acessar a área de trabalho, use
vncserver
:sudo apt-get install tightvncserver
Nota: existem outras implementações, mas esta funcionará bem. Depois de instalado, execute-o:
vncserver :1
Na primeira vez que você executar isso, será solicitada uma senha para acessar sua área de trabalho. Escolha um. Agora você pode acessá-lo usando qualquer cliente VNC.Observação: o protocolo VNC não está criptografado. Você vai querer tunelá-lo com alguma criptografia (por exemplo, encaminhamento de porta SSH, ou VPN, ou algo nesse sentido) e proteger suas portas com firewall (neste exemplo, é a porta 5901).
Se você não precisa acessar a GUI, ela só precisa ser executada, você pode usar
xvfb
dentro de umascreen
sessão:sudo apt-get install screen xvfb screen xvfb-run your_application
Isso inicia uma sessão de tela, que inicia o xvfb, que inicia seu aplicativo.
screen
é um programa que permite iniciar algo, desconectar-se e reconectar-se mais tarde. A desconexão é feita por meio dectrl
-a
,d
(isto é, segure o controle e a,solte ambos, pressione d); a reconexão é feita comscreen -r
.xvfb-run
é um script que iniciaXvfb
, que é a abreviação de "X for Virtual Framebuffer". Ele fala o protocolo X11, mas não faz quase nada com ele; tudo o que seu aplicativo envia para esse servidor X não é mostrado em nenhuma tela. Entretanto, ainda é um servidor X; para poder usá-lo, você deve definir algumas variáveis de ambiente e fazerXauthority
mágica.xvfb-run
existe para que você não precise fazer isso manualmente. Por fim, depois de tudo configurado,xvfb-run
inicie sua aplicação e conecte-aXvfb
aos gráficos e ao terminal onde você a iniciou (neste caso, sua sessão de tela) para stdout. Sempre que seu aplicativo se desconectar do servidor X,Xvfb
(e por extensão,xvfb-run
) será encerrado.
Como Xvfb
não permite modificar coisas, requer menos recursos e pode ser mais rápido. No entanto, se você precisar acessar a GUI, isso não é uma opção.