Nebula-Studio ARM架构编译手册
本操作手册主要用于 Nebula-Studio 在 Linux/CentOS 系统/ARM 架构下的编译步骤及相关问题解决。
一、编译准备
1.1 编译工具
编译工具 版本 说明
NodeJs 18.20.0 (ARM64) 必须 >= 18
Npm 10.x 随 Node 18 自带
Golang 1.20.6 linux/arm64 用于编译 server
Cmake 3.x 打包工具
GCC-C++ 7.x+ C++ 编译器
rpm-build - RPM 打包工具
注意:Node.js 版本必须 >= 18,否则 pdfjs-dist 依赖会报错
1.2 Nebula-Studio 源码
源码版本:nebula-studio-3.10.0
下载地址:https://github.com/vesoft-inc/nebula-studio.git
二、ARM 编译步骤
2.1 安装 Node.js 18 (ARM64)
下载 Node.js 18 ARM 版本
cd /opt
wget https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-arm64.tar.xz
解压
tar -xvf node-v18.20.0-linux-arm64.tar.xz
临时生效(只在当前终端有效,不影响系统原有 Node 版本)
export PATH=/opt/node-v18.20.0-linux-arm64/bin:$PATH
验证版本
node -v # 应显示 v18.20.0
npm -v
2.2 安装 Golang 1.20.6 (ARM64)
下载 Golang ARM 版本
cd /opt
wget https://go.dev/dl/go1.20.6.linux-arm64.tar.gz
解压到 /usr/local
tar -C /usr/local -xzf go1.20.6.linux-arm64.tar.gz
临时生效(只在当前终端有效)
export PATH=$PATH:/usr/local/go/bin
验证版本
go version # 应显示 go version go1.20.6 linux/arm64
设置国内 Go 代理(解决依赖下载超时问题)
go env -w GOPROXY=https://goproxy.cn,direct
重要:国内网络必须设置 Go 代理,否则 go build 会因访问 proxy.golang.org 超时而失败
2.3 安装 Cmake、GCC-C++ 和 rpm-build
CentOS/RHEL
yum install -y cmake gcc-c++ rpm-build
验证
cmake --version
g++ --version
rpmbuild --version
2.4 下载源码到编译机(ARM架构)
以 /opt/nebula/studio/git/ 目录为例:
将压缩包放到编译机目录下,然后解压
unzip nebula-studio-3.10.0.zip -d /opt/nebula/studio/git/
解压后文件夹名为:nebula-studio-3.10.0
2.5 修改 CMakeLists.txt 文件
将文件 scripts/rpm/CMakeLists.txt 中的 x86_64 改为 aarch64
2.6 修复 TypeScript 编译错误
必须修复:否则 npm run build 会报错
进入项目目录
cd /opt/nebula/studio/git/nebula-studio-3.10.0
执行 sed 替换
sed -i ‘s/matrix.join/Array.from(matrix).join/g’ app/pages/SketchModeling/Plugins/SketchShapes/Path.tsx
原因:gl-matrix 库的 mat2d 类型在新版本中不再直接支持 .join() 方法,需要先转换为数组
2.7 执行编译构建
进入项目目录
cd /opt/nebula/studio/git/nebula-studio-3.10.0
安装依赖
npm install
设置内存限制并执行构建
export NODE_OPTIONS=“–max-old-space-size=4096”
npm run build
关键:4096 表示分配 4GB 内存,如果报内存溢出,可改小一点
2.8 复制构建产物并编译 Server
复制前端构建产物
cp -r ./dist/. ./server/api/studio/assets
修改端口配置(9000 改为 7001)
sed -i “s/9000/7001/g” ./server/api/studio/etc/studio-api.yaml
编译 Go Server
cd ./server/api/studio
go build -o server
执行完毕后,会生成 server 可执行文件
2.9 准备打包目录
创建文件夹
mkdir -p /opt/nebula/studio/git/arm-nebula-studio-3.10.0/source
移动并重命名待编译文件夹
mv /opt/nebula/studio/git/nebula-studio-3.10.0 /opt/nebula/studio/git/arm-nebula-studio-3.10.0/source/nebula-graph-studio
复制打包脚本
cp /opt/nebula/studio/git/arm-nebula-studio-3.10.0/source/nebula-graph-studio/scripts/pack_CentOS_aarch64.sh /opt/nebula/studio/git/arm-nebula-studio-3.10.0/
最终目录结构:
arm-nebula-studio-3.10.0/
├── source/
│ └── nebula-graph-studio/
└── pack_CentOS_aarch64.sh
2.10 执行打包脚本
cd /opt/nebula/studio/git/arm-nebula-studio-3.10.0
sh pack_CentOS_aarch64.sh
打包成功后生成:
nebula-graph-studio-3.10.0.arrch64.tar.gz - 部署包
package/tmp/nebula-graph-studio-3.10.0.aarch64.rpm - RPM 安装包
三、部署验证
将 nebula-graph-studio-3.10.0.arrch64.tar.gz 拷贝到目标服务器:
解压
tar -xzf nebula-graph-studio-3.10.0.arrch64.tar.gz
启动服务
cd nebula-graph-studio
./server
浏览器访问:http://服务器IP:7001
登录信息:
账号:root
密码:nebula
四、目录结构参考
/opt/
├── node-v18.20.0-linux-arm64/ # Node.js 18 ARM版本
├── go1.20.6.linux-arm64.tar.gz # Golang 安装包
└── nebula/studio/git/
└── arm-nebula-studio-3.10.0/
├── source/
│ └── nebula-graph-studio/
├── nebula-graph-studio/ # 部署目录
├── package/ # 打包临时目录
├── pack_CentOS_aarch64.sh
├── nebula-graph-studio-3.10.0.arrch64.tar.gz # 部署包
└── nebula-graph-studio-3.10.0.tar.gz
五、编译完成后切回原 Node 版本
方法一:关闭当前终端,重新开一个终端即可恢复原 Node 版本
方法二:手动切换
export PATH=/usr/local/node16/bin:$PATH # 改成你原 Node 的实际路径
node -v # 验证版本
六、常见问题
问题 解决方案
Q1: 端口冲突 默认端口已从 9000 改为 7001,如需修改请编辑 studio-api.yaml
Q2: npm run build 报错 “JavaScript heap out of memory” 设置内存限制:export NODE_OPTIONS=“–max-old-space-size=4096”,不够则改成 8192 或 16384
Q3: pdfjs-dist 报错 “Unsupported engine, required node >= 18” 必须使用 Node.js 18 或更高版本,按照 2.1 步骤安装
Q4: husky install 报错 “不是一个 git 仓库” 忽略此警告,不影响编译
Q5: TypeScript 编译报错 “Property ‘join’ does not exist on type ‘mat2d’” 按照 2.6 步骤修复,执行 sed 命令替换
Q6: go build 报错 “go: command not found” 按照 2.2 步骤安装 Golang 1.20.6 ARM 版本
Q7: go build 报错 “dial tcp … i/o timeout” 设置国内 Go 代理:go env -w GOPROXY=https://goproxy.cn,direct
Q8: cmake 报错 “No CMAKE_CXX_COMPILER could be found” 安装 C++ 编译器:yum install -y gcc-c++
Q9: cpack 报错 “RPM package requires rpmbuild executable” 安装 rpm-build:yum install -y rpm-build