KasmVNC项目构建指南:从源码到部署的完整流程

KasmVNC项目构建指南:从源码到部署的完整流程

KasmVNC Modern VNC Server and client, web based and secure KasmVNC 项目地址: https://gitcode.com/gh_mirrors/ka/KasmVNC

前言

KasmVNC是一个高性能的远程桌面解决方案,基于VNC协议实现。本文将详细介绍如何从源码构建KasmVNC服务器,涵盖多种构建方式和环境配置,帮助开发者快速搭建开发环境并进行自定义构建。

一、使用Docker构建KasmVNC服务器

1.1 准备工作

首先需要初始化并更新子模块:

git submodule init
git submodule update --remote --merge

1.2 构建Docker镜像

使用以下命令构建开发用的Docker镜像:

sudo docker build -t kasmvnc:dev -f builder/dockerfile.ubuntu_jammy.dev .

1.3 运行容器

启动容器并挂载源码目录:

sudo docker run -it --rm -v ./:/src -p 6901:6901 -p 8443:8443 --name kasmvnc_dev kasmvnc:dev

注意:容器默认使用UID 1000,请确保主机上的用户UID匹配。

1.4 容器内构建流程

进入容器后执行以下步骤:

  1. 构建前端代码:
cd kasmweb
npm install
npm run build  # 仅在前端代码变更时需要重新执行
cd ..
  1. 构建KasmVNC核心:
builder/build.sh
  1. 运行Xvnc和Xfce4:
/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 -FreeKeyMappings :1 &
/usr/bin/xfce4-session --display :1

完成后,可通过浏览器访问6901端口查看效果。

二、从源码运行noVNC

2.1 开发模式运行

对于前端开发调试,可以使用npm实时开发服务器:

# 运行KasmVNC
/src/xorg.build/bin/Xvnc -interface 0.0.0.0 -PublicIP 127.0.0.1 -disableBasicAuth -RectThreads 0 -Log *:stdout:100 -httpd /src/kasmweb/dist -sslOnly 0 -SecurityTypes None -websocketPort 6901 -FreeKeyMappings :1 &
/usr/bin/xfce4-session --display :1 &

# 启动Nginx和前端开发服务器
sudo nginx
cd kasmweb
npm install  # 首次运行需要
npm run serve  # 保持前台运行

此时可通过8443端口(HTTPS)访问开发环境。

三、现代Unix/Linux系统构建

3.1 构建步骤

  1. 准备构建目录:
mkdir unix
cp -R {source_directory}/unix/xserver unix/
cp -R {xorg_source}/* unix/xserver/
  1. 应用补丁并配置:
cd unix/xserver/
patch -p1 < {source_directory}/unix/xserver{version}.patch
autoreconf -fiv
  1. 配置编译选项(示例):
./configure --with-pic --without-dtrace --disable-static --disable-dri \
  --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg \
  --disable-dmx --disable-xwin --disable-xephyr --disable-kdrive \
  --disable-config-dbus --disable-config-hal --disable-config-udev \
  --disable-dri2 --enable-install-libxf86config --enable-glx \
  --with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
  --with-fontdir=/usr/share/X11/fonts \
  --with-xkb-path=/usr/share/X11/xkb \
  --with-xkb-output=/var/lib/xkb \
  --with-xkb-bin-directory=/usr/bin \
  --with-serverconfig-path=/usr/lib[64]/xorg \
  --with-dri-driver-path=/usr/lib[64]/dri
  1. 编译:
make KASMVNC_SRCDIR={source_directory}

四、传统系统构建

对于较旧的系统版本,可以使用提供的构建脚本:

cd {build_directory}
sh {source_directory}/contrib/xorg/build-xorg init
sh {source_directory}/contrib/xorg/build-xorg build [additional CMake flags]

仅重建KasmVNC服务器:

sh {source_directory}/contrib/xorg/build-xorg rebuild [additional make flags]

五、特殊构建选项

5.1 调试构建

添加调试符号:

-DCMAKE_BUILD_TYPE=Debug

5.2 便携式构建

创建半静态链接的可执行文件:

-DBUILD_STATIC=1

5.3 TLS支持

需要GnuTLS库,可通过以下参数指定路径:

-DGNUTLS_INCLUDE_DIR=/usr/local/include \
-DGNUTLS_LIBRARY=/usr/local/lib/libgnutls.a

5.4 多语言支持

需要gettext库,可通过以下参数指定路径:

-DICONV_INCLUDE_DIR=/mingw/include \
-DICONV_LIBRARIES=/mingw/lib/libiconv.a \
-DGETTEXT_INCLUDE_DIR=/mingw/include \
-DLIBINTL_LIBRARY=/mingw/lib/libintl.a

六、构建技巧

6.1 64位系统上的32位构建

设置环境变量:

CFLAGS='-O3 -m32'
CXXFLAGS='-O3 -m32'
LDFLAGS=-m32

6.2 向后兼容构建(MacOS)

64位兼容10.5:

-DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.5.sdk \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.5

32位兼容10.4:

CC=gcc-4.0
CXX=g++-4.0
CFLAGS='-O3 -m32'
CXXFLAGS='-O3 -m32'
LDFLAGS=-m32
-DCMAKE_OSX_SYSROOT=/Developer/SDKs/MacOSX10.4u.sdk \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.4

七、打包发布

7.1 Unix系统

创建二进制tarball:

make tarball        # 工具包
make servertarball  # 服务器和工具包
make dmg            # MacOS磁盘映像
make udmg           # 通用二进制包(32/64位)

7.2 Windows系统

创建安装包:

make installer

结语

本文详细介绍了KasmVNC项目的各种构建方式,从最简单的Docker构建到复杂的跨平台编译都有涉及。开发者可以根据自己的需求选择合适的构建方式,并通过调整各种编译选项来满足特定的项目需求。无论是开发调试还是生产部署,KasmVNC都提供了灵活的构建方案。

KasmVNC Modern VNC Server and client, web based and secure KasmVNC 项目地址: https://gitcode.com/gh_mirrors/ka/KasmVNC

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郦蜜玲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值