小内存部署 confluece

这是一个针对 "2GB 内存服务器 + 外部腾讯云 MySQL + Mac 本地中转" 的完整、避坑版部署教程。

核心难点在于:内存限制驱动缺失 以及 云数据库权限绕过。请严格按照步骤执行。


第一阶段:Mac 本地准备 (下载与传输)

利用 Mac 下载镜像,节省服务器带宽。

  1. 打开 Mac 终端,下载镜像

    Bash

    复制代码
    docker pull atlassian/confluence:latest
  2. 打包镜像

    Bash

    复制代码
    docker save -o confluence.tar atlassian/confluence:latest
  3. 传输到服务器

    Bash

    复制代码
    # 替换 root 和 IP 为你实际的信息
    scp confluence.tar root@你的服务器IP:/tmp/

第二阶段:服务器系统优化 (关键救命步骤)

登录你的 Linux 服务器。2GB 内存必须配合 4GB Swap,否则 Java 进程会被杀掉。

  1. 重置并创建 4GB Swap

    Bash

    复制代码
    # 先清理旧的(如果有)
    sudo swapoff /swapfile
    sudo rm -rf /swapfile
    
    # 创建新的
    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
  2. 验证

    输入 free -h,确保 Swap 总量显示为 4.0Gi

  3. 清理端口

    确保服务器上没有程序占用 8090。如果运行了其他 Java 程序(如禅道),建议先停止。


第三阶段:腾讯云 MySQL 准备

登录你的腾讯云数据库管理台(或通过 Navicat/命令行),执行以下 SQL 语句创建库和用户。

SQL

复制代码
-- 1. 创建数据库(必须是 utf8mb4 且 bin 排序)
CREATE DATABASE confluence CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

-- 2. 创建用户(替换 '你的密码')
CREATE USER 'confluence'@'%' IDENTIFIED BY '你的密码';

-- 3. 授权
GRANT ALL PRIVILEGES ON confluence.* TO 'confluence'@'%';
FLUSH PRIVILEGES;

第四阶段:部署 Confluence 容器

  1. 导入镜像

    Bash

    复制代码
    docker load -i /tmp/confluence.tar
  2. 创建目录

    Bash

    复制代码
    mkdir -p /opt/confluence/data
    cd /opt/confluence
  3. 创建 docker-compose.yml

    Bash

    复制代码
    vim docker-compose.yml

    粘贴以下内容:

    YAML

    复制代码
    version: '3'
    services:
      confluence:
        image: atlassian/confluence:latest
        container_name: confluence
        restart: always
        ports:
          - "8090:8090"
        environment:
          # 【内存锁死】2G 物理内存必须限制 Java 堆内存为 1G
          - JVM_MINIMUM_MEMORY=1024m
          - JVM_MAXIMUM_MEMORY=1024m
          - CATALINA_OPTS=-Ddisable.atlassian.analytics=true
        volumes:
          - ./data:/var/atlassian/application-data/confluence
        deploy:
          resources:
            limits:
              memory: 1800M
  4. 启动容器

    Bash

    复制代码
    docker compose up -d

第五阶段:手动注入 MySQL 驱动 (必做)

因为版权原因,镜像里没有 MySQL 驱动,必须手动塞进去。

  1. 在服务器下载驱动

    Bash

    复制代码
    cd /opt/confluence
    wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar
  2. 复制进容器

    Bash

    复制代码
    docker cp mysql-connector-java-8.0.30.jar confluence:/opt/atlassian/confluence/confluence/WEB-INF/lib/
  3. 重启容器生效

    Bash

    复制代码
    docker restart confluence

    (等待 3-5 分钟,通过 docker logs -f confluence 确认启动完成)


第六阶段:网页安装与数据库连接 (避坑核心)

  1. 访问网页http://服务器IP:8090

  2. 获取 License:点击页面链接去 Atlassian 官网生成一个 Data Center 试用码填入。

  3. 部署类型 :选择 Non-clustered (single node)

  4. 数据库配置 (关键)

    • Database Type : 选择 MySQL

    • Setup Type : 务必选择 By connection string(不要选 Simple)。

    • 原因 :云数据库通常禁止用户修改全局隔离级别,选 Simple 会报错 Access denied ... SUPER privilege

    • Database URL: 填入下文(替换你的云数据库 IP):

      Plaintext

      复制代码
      jdbc:mysql://你的云数据库IP:3306/confluence?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&sessionVariables=transaction_isolation='READ-COMMITTED'
    • Username : confluence

    • Password: 你在第三阶段设置的密码。

  5. 后续步骤

    • 点击 Test Connection,成功后点击 Next。
    • Load Content : 强烈建议选择 Empty Site(空站点),不要加载示例数据,否则内存容易爆。
    • 设置管理员账号,完成安装。

总结

  1. 内存:靠 4G Swap 续命。
  2. 驱动 :靠 docker cp 手动注入。
  3. 云数据库 :靠 JDBC URL 中的 sessionVariables 绕过权限限制。