구글 클라우드 플랫폼 환경 중 Deep Learning VM 의 기본 운영체제인 Debian 9 서버에 VNC 를 설치해보도록 하자.
데스크탑 환경 및 VNC 서버 설치
기본적으로 Debian 9 서버는 그래픽 데스크탑 환경이나 VNC 서버를 제공하지 않으므로, 아래 관련 패키지를 설치하는 것에서 시작해야 한다. 특히 최신 Xfce 데스크탑 환경과 TightVNC 패키지를 사용할 예정이다.
먼저 패키지 리스트를 업데이트한다.
1 | ~$ sudo apt updateColored by Color Scripter | cs |
Xfce 데스크탑 환경을 설치한다. 설치과정에서 키보드 레이아웃 선택 화면이 뜨면 해당되는 옵션을 선택 후 설치를 계속 진행한다.
1 | ~$ sudo apt install xfce4 xfce4-goodies | cs |
설치가 끝나면 이제 TightVNC 를 설치하도록 한다.
1 | ~$ sudo apt install tightvncserver | cs |
VNC 서버 최초 설정을 위해 vncserver 명령을 이용하여 안전한 패스워드를 생성한다. 원격접속시 사용할 패스워드를 입력한다. 패스워드는 6~8 자리로 구성되어야 한다. 8자리가 넘어가는 것은 자동으로 잘려나간다. 다음으로 view-only 패스워드를 허용할지 물어본다. 필요에 따라 설정하도록 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ~$ vncserver You will require a password to access your desktops. Password: Warning: password truncated to the length of 8. Verify: Would you like to enter a view-only password (y/n)? y Password: Warning: password truncated to the length of 8. Verify: xauth: file /home/fuchsia/.Xauthority does not exist New 'X' desktop is fuchsia:1 Creating default startup script /home/fuchsia/.vnc/xstartup Starting applications specified in /home/fuchsia/.vnc/xstartup Log file is /home/fuchsia/.vnc/fuchsia:1.log | cs |
VNC 서버 구성하기
VNC 서버에게 시작할 때 어떤 명령을 수행해야 하는지를 알려줘야 한다. 특히 접속시 어떤 그래픽 데스크탑을 써야하는지 알려줄 필요가 있다.
이러한 명령어는 홈디렉토리 아래 .vnc 폴더의 xstartup 파일에 기술되어 있다. 시작 스크립트는 앞서 vncserver 를 구동했을 때 이미 생성이 된다. 여기서는 Xfce 데스크탑을 로딩해야 하므로 수정이 필요하다.
VNC 가 처음 셋업이 되면, 5901 포트에 기본 서버 인스턴스를 띄우게 된다. 이 포트는 디스플레이 포트로 불리며, VNC 에서는 :1 로 다루어진다. VNC 는 :2, :3 과 같은 식으로 서로 다른 디스플레이 포트 위에 다수의 인스턴스를 띄울 수 있다.
VNC 서버의 구성을 변경할 것이므로, 먼저 5901번 포트에서 돌아가고 있는 VNC 서버 인스턴스를 중지시킨다.
1 2 3 4 5 | ~$ ss -ltp | grep vnc LISTEN 0 5 *:5901 *:* users:(("Xtightvnc",pid=27859,fd=3)) LISTEN 0 128 *:x11-1 *:* users:(("Xtightvnc",pid=27859,fd=0)) fuchsia@fuchsia:~$ vncserver -kill :1 Killing Xtightvnc process ID 27859 | cs |
xstartup 파일을 수정하기 전에 원본을 백업해두자.
1 | fuchsia@fuchsia:~$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak | cs |
이제 xstartup 파일을 생성하고 열어서 편집하자.
1 | fuchsia@fuchsia:~$ nano ~/.vnc/xstartup | cs |
다음의 내용을 붙여넣는다.
xrdb $HOME/.Xresources 는 VNC 의 GUI 프레임워크로 하여금 서버 사용자의 .Xresources 파일을 읽을 수 있도록 한다. .Xresources 는 터미널 색상, 커서 테마 그리고 폰트 렌더링과 같은 그래픽 데스크탑의 셋팅을 변경할 수 있는 곳이다. 다음 명령어인 startxfce & 는 서버로 하여금 Xfce 를 띄우게 하는 역할을 한다.
1 2 3 | #!/bin/bash xrdb $HOME/.Xresources startxfce & | cs |
실행가능하도록 권한을 644 에서 755 로 변경한다.
1 | fuchsia@fuchsia:~$ sudo chmod +x ~/.vnc/xstartup | cs |
VNC 서버를 재시작하자. 다음과 비슷한 아웃풋을 볼 수 있을 것이다.
1 2 3 4 5 6 7 8 | fuchsia@fuchsia:~$ vncserver New 'X' desktop is fuchsia:1 Starting applications specified in /home/fuchsia/.vnc/xstartup Log file is /home/fuchsia/.vnc/fuchsia:1.log | cs |
설정이 끝났으면 로컬에서 TightVNC 를 실행시켜 서버에 접속해보도록 하자. 서버의 ip::5901 과 같은 형식으로 remote host 란에 입력하고 Connect 를 누른다. 그러면 암호 입력창이 뜨게 된다.
암호를 정확히 입력하면 아래와 같이 서버 접속이 완료된다.
VNC 시스템 서비스 등록하기
이제 VNC 를 systemd 서비스로 셋팅하여, 필요에 따라 시작, 중지, 재시작이 가능하도록 하자.
먼저 /etc/systemd/system/vncserver@.service 라는 새로운 파일을 생성한다. 여기서 @ 심볼은 VNC 디스플레이 포트를 특정하기 위해 사용된다.
1 | fuchsia@fuchsia:~$ sudo nano /etc/systemd/system/vncserver@.service | cs |
다음 코드를 앞서 만든 파일에 붙여넣는다. 당연히 소유자 및 그룹은 본인 것에 맞게 고쳐 넣는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [Unit] Description=Start TightVNC server at startup After=syslog.target network.target [Service] Type=forking User=fuchsia Group=fuchsia WorkingDirectory=/home/fuchsia PIDFile=/home/fuchsia/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target | cs |
여기서 ExecStartPre 명령어는 기존에 구동중인 VNC 가 있다면 이를 종료시키는 역할을 한다. ExecStart 명령어는 VNC 를 실행시키고, 1280*800 해상도에 24비트 컬러를 지원하도록 셋팅한다. 물론 이런 값들은 수정할 수 있다. 이제 파일을 저장하고 닫자.
다음으로, 시스템이 새로운 유니트 파일을 인지할 수 있도록 리로드한다.
1 | fuchsia@fuchsia:~$ sudo systemctl daemon-reload | cs |
유니트 파일을 활성화시킨다.
1 2 | fuchsia@fuchsia:~$ sudo systemctl enable vncserver@1.service Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@1.service → /etc/systemd/system/vncserver@.service. | cs |
여기서 @ 뒤의 1은 앞서 설명했듯이 서비스 넘버를 나타낸다.
현재 구동중인 인스턴스를 종료시키자.
1 2 | fuchsia@fuchsia:~$ vncserver -kill :1 Killing Xtightvnc process ID 28127 | cs |
다른 systemd 서비스처럼 vncserver 를 시작하자.
1 | fuchsia@fuchsia:~$ sudo systemctl start vncserver@1 | cs |
서비스가 정상적으로 가동되었다면 다음과 같은 값을 보일 것이다.
1 2 3 4 5 6 7 | fuchsia@fuchsia:~$ sudo systemctl status vncserver@1 ● vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-11-24 04:20:17 UTC; 49s ago Process: 28585 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Process: 28579 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Main PID: 28593 (Xtightvnc) | cs |
이것으로 Debian 9 서버에 VNC 설치 및 환경설정이 완료되었다.
'프로그래밍 Programming' 카테고리의 다른 글
Computer Vision (1) 이미지 읽기, 자르기, 저장 (0) | 2018.12.08 |
---|---|
데비안 9 파이어폭스 설치하기 How to install latest Firefox Browser on Debian 9 Stretch Linux (0) | 2018.11.25 |
Debian 버전 체크하기 (0) | 2018.11.24 |
브라우저에서 구글 클라우드 플랫폼 주피터 노트북 실행하기 (0) | 2018.11.15 |
장고 워드프레스 통합하기 Integrating Django with a wordpress database (0) | 2018.11.15 |