Huly开发环境搭建与部署指南

Huly开发环境搭建与部署指南

【免费下载链接】platform Huly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion) 【免费下载链接】platform 项目地址: https://gitcode.com/GitHub_Trending/platform80/platform

本文详细介绍了Huly平台的完整开发环境搭建与生产部署指南。内容涵盖开发环境要求与依赖安装配置、Docker容器化部署与运维实践、本地开发调试与热重载配置,以及生产环境部署与性能优化策略。通过本指南,开发者能够系统性地掌握从环境准备到生产部署的全流程,确保Huly平台在各种环境中的稳定运行和最佳性能表现。

开发环境要求与依赖安装配置

Huly平台作为一个现代化的全栈项目管理平台,其开发环境搭建需要满足特定的系统要求并正确配置开发依赖。本小节将详细介绍开发环境所需的硬件配置、软件依赖以及安装配置步骤,确保开发者能够顺利搭建Huly的开发环境。

系统要求与硬件配置

Huly平台开发环境对系统资源有一定要求,建议配置如下:

组件最低配置推荐配置说明
CPU4核心8核心或更高多核心处理器有助于提升构建和容器运行效率
内存8GB16GB或更高充足内存确保Docker容器和开发工具流畅运行
磁盘空间20GB可用空间40GB可用空间包含源代码、依赖包和Docker镜像存储
操作系统Windows 10/11, macOS 10.15+, Linux Ubuntu 18.04+Linux Ubuntu 20.04+推荐使用Linux环境以获得最佳开发体验

mermaid

核心软件依赖安装

Node.js环境配置

Huly平台要求使用特定版本的Node.js,这是确保项目构建和运行兼容性的关键:

# 检查当前Node.js版本
node --version

# 如果版本不符合要求,建议使用nvm管理Node.js版本
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 安装并切换至要求的Node.js版本
nvm install 20.11.0
nvm use 20.11.0

版本要求说明:

  • 必须使用Node.js v20.11.0 - 这是项目的硬性要求,其他版本可能导致构建失败或运行时错误
  • npm版本随Node.js版本自动匹配,无需单独安装
Docker环境配置

Docker是Huly开发环境的核心组件,用于容器化部署和本地开发:

# Ubuntu/Debian系统安装Docker
sudo apt-get update
sudo apt-get install docker.io docker-compose

# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker

# 验证Docker安装
docker --version
docker compose version

# 将当前用户加入docker组(避免每次使用sudo)
sudo usermod -aG docker $USER

Docker Compose版本要求:v2.0.0或更高版本,用于管理多容器应用。

Rush包管理工具安装

Huly采用Microsoft Rush进行monorepo管理,这是项目依赖安装和构建的关键工具:

# 全局安装Rush
npm install -g @microsoft/rush

# 验证Rush安装
rush --version

# 预期输出:rush 5.151.0 或更高版本

GitHub认证配置

由于Huly使用GitHub Packages管理私有依赖,需要配置GitHub认证:

# 生成GitHub Personal Access Token
# 访问:https://github.com/settings/tokens
# 选择至少包含 read:packages 权限

# 使用token登录npm registry
npm login --registry=https://npm.pkg.github.com

# 按照提示输入:
# Username: 您的GitHub用户名
# Password: 您的GitHub Personal Access Token
# Email: 您的GitHub注册邮箱

项目依赖安装流程

完成基础环境配置后,执行项目依赖安装:

# 进入项目根目录
cd /data/web/disk1/git_repo/GitHub_Trending/platform80/platform

# 初始化Git子模块(包含通信相关代码)
git submodule init
git submodule update

# 使用Rush安装所有依赖包
rush install

# 构建所有项目包
rush build

环境验证检查

安装完成后,执行全面的环境验证:

# 验证Node.js版本
node --version | grep "v20.11.0"

# 验证Docker可用性
docker info | grep "Server Version"

# 验证Docker Compose
docker compose version

# 验证Rush版本
rush --version

# 验证GitHub认证
npm whoami --registry=https://npm.pkg.github.com
常见问题解决
磁盘空间不足

Huly开发环境需要大量磁盘空间,主要占用包括:

  • Docker镜像和容器:约15-20GB
  • Node.js依赖包:约5-8GB
  • 源代码和构建产物:约2-4GB

解决方案:

# 清理Docker无用资源
docker system prune -a

# 清理Rush缓存
rm -rf common/temp/build-cache
网络连接问题

由于依赖GitHub Packages,需要稳定的网络连接。如遇网络问题:

# 设置npm代理(如需要)
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

# 或使用国内镜像加速
npm config set registry https://registry.npmmirror.com
权限问题
# 解决Docker权限问题
sudo chmod 666 /var/run/docker.sock

# 或更好的解决方案:将用户加入docker组
sudo usermod -aG docker $USER

通过以上步骤,您可以成功配置Huly平台的开发环境,为后续的代码开发、构建和调试工作奠定坚实基础。环境配置的正确性直接影响到开发效率和问题排查的难易程度,建议严格按照要求进行配置和验证。

Docker容器化部署与运维实践

Huly平台采用现代化的Docker容器化部署方案,通过精心设计的Docker Compose配置和多阶段构建流程,为开发者提供了完整的本地开发环境和生产部署解决方案。本节将深入探讨Huly的Docker化架构、部署流程以及运维最佳实践。

容器化架构设计

Huly平台采用微服务架构,各个组件通过Docker容器进行隔离和部署。整个系统包含多个核心服务:

mermaid

核心服务容器配置

Huly的Docker Compose配置定义了完整的服务生态系统:

# 数据库服务
cockroach:
  image: cockroachdb/cockroach:latest-v24.2
  ports: ['26257:26257', '8089:8080']
  command: start-single-node --insecure
  volumes: [cockroach_db:/cockroach/cockroach-data]

# 消息队列服务  
redpanda:
  image: docker.redpanda.com/redpandata/redpanda:v24.3.6
  ports: [18081:18081, 18082:18082, 19092:19092]

# 对象存储服务
minio:
  image: minio/minio
  command: server /data --address ":9000" --console-address ":9001"
  ports: [9000:9000, 9001:9001]
  volumes: [files:/data]

# 搜索服务
elastic:
  image: elasticsearch:7.14.2
  ports: [9200:9200]
  environment:
    - discovery.type=single-node
    - ES_JAVA_OPTS=-Xms1024m -Xmx1024m

多阶段构建流程

Huly采用基于Rush的多阶段构建系统,确保Docker镜像的高效构建和部署:

基础镜像构建

平台使用定制化的基础Docker镜像,优化Node.js运行环境:

FROM node:22

RUN apt-get update
RUN apt-get install libjemalloc2 dumb-init
RUN apt-get clean

ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true

WORKDIR /usr/src/app
ENV NODE_ENV=production
RUN npm install --ignore-scripts=false --verbose \
    bufferutil utf-8-validate snappy msgpackr msgpackr-extract --unsafe-perm
构建命令流程

完整的Docker构建和部署流程通过Rush命令链实现:

# 1. 安装依赖和构建项目
rush install
rush build

# 2. 打包应用资源
rush bundle
rush package

# 3. 构建Docker镜像
rush docker:build

# 4. 启动容器服务
rush docker:up

环境变量配置管理

Huly使用环境变量进行灵活的配置管理,支持开发、测试和生产环境:

环境变量描述默认值必需
DB_CR_URLCockroachDB连接URL-
QUEUE_CONFIG消息队列配置-
STORAGE_CONFIG存储配置-
SERVER_SECRET服务器密钥secret
ACCOUNTS_URL账户服务URLhttp://huly.local:3000
REGION部署区域cockroach
环境配置示例
# 开发环境配置
export DB_CR_URL="postgresql://root@cockroach:26257?sslmode=disable"
export QUEUE_CONFIG="kafka://redpanda:9092"
export STORAGE_CONFIG="minio://minio:9000/minioadmin/minioadmin"

# 生产环境配置  
export DB_CR_URL="postgresql://user:password@production-db:26257/production?sslmode=require"
export QUEUE_CONFIG="kafka://kafka-cluster:9092"
export STORAGE_CONFIG="s3://access-key:secret-key@region-bucket"

健康检查与监控

Huly容器配置了完善的健康检查机制,确保服务稳定性:

healthcheck:
  test: ['CMD', 'curl', '-f', 'http://localhost:3000/health']
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 40s
监控指标配置
environment:
  - METRICS_CONSOLE=false
  - METRICS_FILE=metrics.txt
  - OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318/v1/traces

存储卷管理

Huly使用Docker卷进行数据持久化,确保数据安全:

volumes:
  cockroach_db:
    driver: local
  elastic:
    driver: local  
  files:
    driver: local
  redpanda:
    driver: local
备份策略
environment:
  - BACKUP_STORAGE=${BACKUP_STORAGE_CONFIG}
  - BACKUP_BUCKET=${BACKUP_BUCKET_NAME}
  - WS_OPERATION=all+backup

网络配置优化

Huly采用Docker网络优化配置,确保服务间通信效率:

extra_hosts:
  - 'huly.local:host-gateway'
networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: 172.28.0.0/16

运维最佳实践

1. 资源限制配置

为生产环境配置适当的资源限制:

deploy:
  resources:
    limits:
      memory: 2G
      cpus: '1.0'
    reservations:
      memory: 1G
      cpus: '0.5'
2. 日志管理

配置集中式日志收集:

logging:
  driver: json-file
  options:
    max-size: '10m'
    max-file: '3'
3. 安全加固

实施容器安全最佳实践:

# 使用非root用户运行
USER node

# 只读根文件系统
security_opt:
  - no-new-privileges:true
read_only: true

故障排除与调试

常见问题解决
  1. 构建缓存问题
# 清除Rush构建缓存
rm -rf common/temp/build-cache
  1. 端口冲突处理
# 检查端口占用
netstat -tulpn | grep :8080

# 修改服务端口
environment:
  - SERVER_PORT=8081
  1. 容器日志查看
# 查看特定容器日志
docker logs huly-front

# 实时日志监控
docker logs -f huly-account
性能优化建议
  1. JVM内存配置
environment:
  - ES_JAVA_OPTS=-Xms2g -Xmx2g
  1. 数据库连接池优化
environment:
  - DB_MAX_CONNECTIONS=20
  - DB_IDLE_TIMEOUT=30000
  1. 缓存配置
environment:
  - REDIS_URL=redis://redis:6379
  - CACHE_TTL=3600

通过遵循这些Docker容器化部署与运维实践,您可以确保Huly平台在各种环境中的稳定运行,同时获得最佳的性能和可维护性。

本地开发调试与热重载配置

Huly平台提供了强大的本地开发调试和热重载功能,让开发者能够高效地进行代码开发和调试。本小节将详细介绍Huly平台的开发服务器配置、热重载机制、调试工具以及最佳实践。

开发服务器配置

Huly平台使用Webpack Dev Server来提供开发环境服务,支持多种客户端类型的配置:

// dev/prod/package.json 中的开发脚本配置
{
  "scripts": {
    "dev-server": "cross-env USE_CACHE=false CLIENT_TYPE=dev-server webpack serve",
    "dev-server-test": "cross-env USE_CACHE=false CLIENT_TYPE=dev-server-test webpack serve",
    "dev-worker": "cross-env USE_CACHE=false CLIENT_TYPE=dev-worker webpack serve",
    "dev-worker-local": "cross-env USE_CACHE=false CLIENT_TYPE=dev-worker-local webpack serve",
    "dev-server-cache": "cross-env USE_CACHE=true CLIENT_TYPE=dev-server webpack serve",
    "dev-production": "cross-env CLIENT_TYPE=dev-production webpack serve",
    "dev-huly": "cross-env CLIENT_TYPE=dev-huly webpack serve",
    "dev-bold": "cross-env CLIENT_TYPE=dev-bold webpack serve"
  }
}

不同客户端类型对应的配置说明:

客户端类型描述适用场景
dev-server标准开发服务器常规开发调试
dev-server-test测试环境开发服务器功能测试验证
dev-workerWorker进程开发模式后台任务调试
dev-production生产环境模拟生产环境问题复现
dev-hulyHuly特定配置Huly产品开发
dev-boldBold特定配置Bold产品开发

热重载机制

Huly平台基于Webpack和Svelte的热重载功能,提供了实时的代码更新体验。热重载配置位于Webpack配置文件中:

// desktop/webpack.config.js 中的热重载配置
{
  test: /\.svelte$/,
  use: {
    loader: 'svelte-loader',
    options: {
      compilerOptions: {
        dev: !prod
      },
      emitCss: true,
      hotReload: !prod,  // 启用热重载
      hotOptions: {
        preserveLocalState: true,        // 保留本地组件状态
        noPreserveStateKey: '@!hmr',     // 状态不保留的关键字
        noReload: true,                  // 错误时不完整重载
        optimistic: false,               // 运行时错误后恢复
        acceptAccessors: true,           // 接受访问器变更
        acceptNamedExports: true         // 接受命名导出变更
      }
    }
  }
}

热重载的工作流程如下:

mermaid

开发环境启动流程

要启动本地开发环境,需要按照以下步骤操作:

  1. 构建项目基础
cd ./dev/
rush build    # 构建所有必需的包
rush bundle   # 准备bundle文件
rush package  # 构建所有webpack包
  1. 启动开发服务器
cd ./dev/prod
rush validate  #

【免费下载链接】platform Huly — All-in-One Project Management Platform (alternative to Linear, Jira, Slack, Notion, Motion) 【免费下载链接】platform 项目地址: https://gitcode.com/GitHub_Trending/platform80/platform

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

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

抵扣说明:

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

余额充值