Unix

Headless 서버에 VNC 돌리기

알 수 없는 사용자 2012. 1. 12. 14:19
X11도 느리고 xpra는 까탈스럽고 FreeNX 역시 뭔가 조금 부담스럽고 (?) 간편하지 않다.

썩 만족스럽진 않지만 VNC를 써보겠다.
준비물:
x11vnc
Xvfb

일단은 원격에 GUI프로그램을 돌릴 수 있게 해주는 스크립트다.

XVFB=`ps ax|grep "Xvfb :1" |grep -v grep`
if [ -z $XVFB ]; then
  echo "Starting Xvfb"
  Xvfb :1 -screen 0 1152x864x16 &
  sleep 5 # To be on the safe side, that Xvfb is up and running
fi
 
export DISPLAY=:1.0
openbox &
이렇게 하면 X 프로그램을 원격 headless 서버에 돌릴 준비가 된다. Openbox가 Headless 서버에다 돌리기엔 크기가 작아서 선택됨... Openbox가 아니라도 gnome-session같은걸 좀 실행시켜주면 되긴 하는데 각자 데스크탑 환경에 맞는 것을 돌리자.

 export DISPLAY=:1.0 을 한 뒤 여러가지 x프로그램을 실행시킨다. 작업이 끝나면

killall openbox
killall Xvfb
로 정리하면 된다.



기본적으로는 저런데 문제는 화면이 안 나온다는거 ㅋㅋ 화면이 보고싶으면 VNC서버를 돌린 뒤 클라이언트쪽에서 VNC를 통해 접속하는 방식이다.

x11vnc -storepasswd
명령어로 비밀번호를 설정한다 (최초 한번만 하면 됨)

x11vnc -display :1 -usepw -rfbport 5901
위에서 설정한 Xvfb가 만든 디스플레이에 VNC가 돌라는 파라메터가 붙어있다. 비번도 쓰라고 하고... 포트도 지정했다.

VNC는 내키는대로 켰다 껐다 할 수 있어서 좋다. 그리고 Xvfb만 안 끄면 이전에 작업하던 GUI 프로그램들이 고스란히 남아있어서 좋다... 하지만 Xvfb와 vnc를 다 알아야 하니 사용자가 부담스런 방식이다 -_-;; 혼자 쓰는 컴퓨터라면 뭐 상관 없지만.