Guacamole是一個基於HTML5的虛擬桌面應用程序,其中包含多個組件,由各組件共同構成Guacamole---一個完整的虛擬桌面解決方案,不需要任何插件,只要瀏覽器支持HTML5就可以實現,而且實現過程也比較簡單,且0.8.3版本預留了websocket的支持,相信下一個虛擬桌面版本會更加出色,下圖為guacamole架構:API地址:http://guac-dev.org/doc/gug/users-guide.html
一下是guacamole 0.8.3版本的部署:
1、服務器信息及准備guacamole資源
Linux ubuntu 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
配置好的VNC Server,
guacamole-server 下載地址 http://jaist.dl.sourceforge.net/project/guacamole/current/source/guacamole-server-0.8.3.tar.gz
guacamole-client 下載地址 http://jaist.dl.sourceforge.net/project/guacamole/current/source/guacamole-client-0.8.3.tar.gz
tomcat 7.0.47
2、服務器guacamole-server 配置
服務器:解壓 guacamole-server-0.8.3.tar.gz
進入解壓文件夾之后編譯文件
./configure --prefix=/usr
查看編譯結果,這是已經裝上的組件了支持VNC/rdp協議的虛擬桌面客戶端,根據需要安裝,安裝說明參見API(前面有地址)
這是我的安裝代碼,只列出安裝語句
apt-get install libpng12-dev apt-get install libpng12-dev apt-get install libcairo2-dev apt-get install libvncserver-dev apt-get install libpulse-dev apt-get install libvorbis-dev make install
安裝之后啟動 guacd,安裝成功會出現如下圖示內容:(guacd需要安裝)
服務器配置完畢
3、客戶端配置(我用的是myeclipse創建的項目,打war包到服務器tomcat發布)
解壓guacamole-client-0.8.3
創建web項目
客戶端代碼嵌入項目
嵌入后項目結構如下圖,參照guacamole-client-0.8.3\guacamole\src\main\webapp目錄:
一下具體說明web項目配置:
代碼清單1、guacamole.properties(兩種方式,注釋的2驗證類是一個免驗證組件,可選、不用登陸,其他參數參見官網API)
# Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822 # 1驗證類
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml # 2驗證類 #auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider #noauth-config: /etc/guacamole/noauth-config.xml
代碼清單2、user-mapping.xml(兩種登陸驗證方式,用戶可選MD5加密,一個authorize代表一個用戶,一個connection代表一個桌面連接,其他參數參見官網API)
<user-mapping> <!-- Per-user authentication and config information --> <authorize username="admin" password="admin"> <protocol>vnc</protocol> <param name="hostname">127.0.0.1</param> <param name="port">6102</param> <param name="password">123456</param> </authorize> <!-- Another user, but using md5 to hash the password (example below uses the md5 hash of "PASSWORD") --> <authorize username="USERNAME" password="319f4d26e3c536b5dd871bb2c52e3178" encoding="md5"> <!-- First authorized connection --> <connection name="u01"> <protocol>vnc</protocol> <param name="hostname">127.0.0.1</param> <param name="port">6102</param> <param name="password">123456</param> </connection> <!-- Second authorized connection --> <connection name="u02"> <protocol>vnc</protocol> <param name="hostname">127.0.0.1</param> <param name="port">6103</param> <param name="password">123456</param> </connection> <connection name="u03"> <protocol>vnc</protocol> <param name="hostname">127.0.0.1</param> <param name="port">6104</param> <param name="password">123456</param> </connection> </authorize> </user-mapping>
代碼清單3、noauth-config.xml (無用戶,一個config代表一個桌面,其他參數參見官網API)
<configs> <config name="u01" protocol="vnc"> <param name="hostname" value="127.0.0.1" /> <param name="port" value="6102" /> <param name="password" value="123456" /> </config> <config name="u02" protocol="vnc"> <param name="hostname" value="127.0.0.1" /> <param name="port" value="6103" /> <param name="password" value="123456" /> </config> <config name="u03" protocol="vnc"> <param name="hostname" value="127.0.0.1" /> <param name="port" value="6104" /> <param name="password" value="123456" /> </config> </configs>
至此,一個guacamole的demo就完成了,當然Guacamole還提供了拓展功能,
其中有MySql拓展、ldap、免驗證,還有直接通過代碼實例化虛擬桌面連接,而不需要通過配置文件來實例化虛擬桌面
以上三種是官網API都有的,最后一種有時間再補充。