Guacamole分为两部分:guacamole-server(提供guacd代理和相关库)和guacamole-client(提供由servlet容器(通常为Tomcat)提供的客户机)。

      guacamole-client以二进制形式提供,但guacamole-server必须从源代码构建。 从源代码构建Guacamole的组件并不像听起来那么难,并且构建过程是自动的。 你只需要确保提前安装了必要的工具。 有了必要的依赖关系,建设Guacamole只需要几分钟。

建筑guacamole服务器

   guacamole-server包含Guacamole连接到远程桌面所需的所有本机服务器端组件。 它提供了一个通用的C库libguac,所有其他本地组件依赖于它,以及每个支持的协议的单独的库和guacd,Guacamole的核心。

    guacd是在Guacamole服务器上运行的代理守护程序,接受用户的连接,并通过隧道传至guacamole的web应用,然后代表它们连接到远程桌面。 构建guacd即创建一个名为guacd的可执行文件,可以手动运行,如果需要,也可以在计算机启动时自动运行。

   要构建guacamole-server,您需要一个C编译器(如gcc)和guacamole-server所依赖的库。 一些依赖是绝对必需的,而其他是可选的。 可选依赖项的存在启用了其他功能。

   注意:许多Linux发行版将库包分成二进制和“开发”包; 您将需要安装开发包。 这些通常以“-dev”或“-devel”结尾。

所需依赖关系

     为了构建guacamole-server,您需要Cairo,libjpeg,libpng和OSSP UUID库。 这些库在所有情况下都是严格要求的 - Guacamole不能没有它们,如下图所示。


可选依赖关系

Guacamole的可选依赖性决定了构建哪个协议支持,以及是否启用这些协议的附加功能。Guacamole目前支持VNC,RDP,SSH和telnet。 每个协议对应一个单独的库,如果你有相应的可选依赖关系,它将使用guacamole-server构建。

VNC支持取决于libvncclient库,它是libVNCServer的一部分,RDP支持取决于最新版本的FreeRDP - 1.0或更高版本。下图为RDP库详情。



获取源代码

     可以从Guacamole项目网站获取guacamole-server源的副本。 可以直接用命令提取:


构建过程

      一旦guacamole服务器源已下载并解压缩,需要运行configure。 这是一个由GNU Autotools自动生成的shell脚本,这是guacamole项目为guacamole-server使用的流行构建系统。 运行configure将确定系统上可用的库,并根据实际安装的内容选择适当的构建组件。

      注意:直接从git下载的源代码将不包含此配置脚本,因为自动生成的代码不包括在项目的存储库中。 如果你直接从项目的git仓库下载了代码,你需要手动生成configure:

执行此操作需要安装GNU Autotools。从项目网站下载的源档案包含配置脚本和所有其他必要的构建文件,因此不需要在构建机器上安装GNU Autotools。

一旦你运行configure,你可以看到什么是什么库被创建了和确定应该建立什么:



      上面显示的--with-init-dir = / etc / init.d是为了准备构建一个启动脚本,来讲guacd安装到/etc/init.d目录中,这样我们可以轻松地将guacd配置为在启动时自动启动如果你不希望guacd在引导时自动启动,请关闭--with-init-dir选项。如果启动脚本的目录与常规/etc/init.d不同,请将/etc/init.d替换为此处的正确目录。您可能需要查阅您的分发文档,或在/ etc中做一些挖掘,以确定正确的位置。

        在这里,configure找到了一切,包括所有可选的库,并将建立所有协议支持,甚至支持Ogg Vorbi。如果你缺少一些库,上面的一些“yes答案将变“no”。如果缺少严格要求的库,则脚本将完全失败,您将需要安装缺少的依赖关系。如果在运行configure之后,你发现对你想要的东西缺少支持,只需安装相应的依赖项并再次运行configure。

      一旦配置完成,只需输入“make”,guacamole服务器将编译。

安装

     一旦一切都完成后,你只需要输入“make install”安装已经构建的组件,然后使用“ldconfig”来更新系统安装的库的缓存。

      此时,一切都安装完毕,但guacd没有运行。 在客户端组件安装完成后,您将需要运行guacd以使用Guacamole。

       注意,即使在安装guacd及其启动脚本后,您仍可能需要激活该服务才能自动启动。这种情况与个人的分发有关,但每个分发都将有描述如何执行此操作的文档。

guacamole客户端

      通常,不需要自己构建guacamole-client,因为它是用Java编写的,并且是跨平台的。  你以从Guacamole项目网站的发布存档获取最新版本的guacamole-client,包括所有支持的扩展,而无需自己构建。

      如果你不想从源代码构建guacamole-client,只需从项目网站下载guacamole.war以及任何所需的扩展,然后跳到“部署Guacamole”部分。

       guacamole-client包含Guacamole的所有Java和JavaScript组件(guacamole,guacamole-common,guacamole-ext和guacamole-common-js)。 这些组件最终将构成web应用程序,用来给客户提供链接HTML5 guacamole服务。 然后,此Web应用程序将用户连接到guacamole服务器的guacd,以便为他们授权访问的任何远程桌面提供服务。

       要编译guacamole-client,所需要的只是Apache Maven和Java JDK的副本。 大多数,如果不是全部,Linux发行版将提供这些包。

        您可以从Guacamole项目网站获取guacamole-client源的副本。您可以从命令行中提取:


部署Guacamole

     Guacamole的Web应用程序部分打包为一个完全自包含的.war文件。 如果你从主项目网站下载Guacamole,这个文件将被称为guacamole.war。 部署这包括将文件复制到servlet容器用于.war文件的目录中。 在Tomcat的情况下,这将是CATALINA_HOME / webapps /。 CATALINA_HOME的位置将根据Tomcat的安装方式而变化,但通常是/ var / lib / tomcat,/ var / lib / tomcat7或类似的。


如果您已从源构建guacamole-client,所需的.war文件将位于guacamole / target /目录中,并且将包含其他版本后缀。 由于Tomcat将从.war文件的名称确定Web应用程序的位置,因此您可能希望在复制时将其重命名为guacamole.war。


      同样,如果您使用不同的servlet容器,或者如果Tomcat安装到不同的位置,您将需要检查servlet容器,分发版或两者的文档,以确定部署.war文件的正确位置,例如guacamole.war 中。

       一旦.war文件就位,您可能需要重新启动Tomcat以强制Tomcat部署新的Web应用程序,如果guacd守护程序尚未运行,则必须启动它。


      在重新启动Tomcat并启动guacd之后,Guacamole已成功安装,但它不会完全运行。 在当前状态下,它是完全未配置的,并且需要进一步的步骤来添加至少一个Guacamole用户和几个连接。如果浏览器和您的servlet容器支持,Guacamole将自动使用WebSocket。 在Guacamole无法使用WebSocket连接的情况下,它会立即并透明地回退到使用HTTP。


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐