在阿里云2核2GB服务器上部署禅道需要哪些步骤?

在阿里云 2 核 2GB(2C2G)的服务器上部署禅道(ZenTao),由于内存资源相对紧张,强烈建议使用 Docker 方式部署。这种方式比直接安装 LAMP/LNMP 环境更节省内存,且便于管理。如果必须使用传统方式,需要仔细优化 PHP 和数据库配置。

以下是基于 Docker Compose 的推荐部署步骤,同时也提供了传统方式的注意事项。


方案一:Docker 部署(推荐,稳定且省资源)

此方案将 MySQL、PHP、Redis(可选)和 Web 服务容器化,通过 docker-compose 统一管理。

1. 准备服务器环境

登录阿里云 ECS 实例,执行以下命令更新系统并安装 Docker 环境:

# 更新系统包
sudo yum update -y  # CentOS/Alibaba Cloud Linux
# 或 sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian

# 安装 Docker 和 Docker Compose (以官方脚本为例)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
systemctl enable docker
systemctl start docker

# 安装 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 创建项目目录与配置文件

创建一个目录用于存放禅道数据:

mkdir -p /opt/zentao && cd /opt/zentao

创建 docker-compose.yml 文件:

nano docker-compose.yml

粘贴以下内容(针对 2GB 内存进行了参数调优):

version: '3'
services:
  zentao:
    image: zen-tao/zentao:latest
    container_name: zentao
    ports:
      - "80:80"
      - "443:443"
    environment:
      - MYSQL_ROOT_PASSWORD=your_strong_password # 请修改为强密码
      - ZENTAO_ADMIN_USER=admin
      - ZENTAO_ADMIN_PASSWORD=your_admin_password # 请修改为强密码
    volumes:
      - ./data/zentao:/var/www/html/data
      - ./logs:/var/log/apache2
    restart: always
    mem_limit: 1.5g  # 限制最大内存使用,防止 OOM
    cpus: 1.8         # 限制 CPU 使用率,避免单点过载

注意:2GB 内存跑两个容器(MySQL+PHP)比较极限。如果启动后频繁报错 OOM Killer,建议将 mem_limit 调整为 1g 或更低,并在 MySQL 配置中进一步限制缓冲池大小。

3. 启动服务

在项目目录下执行:

docker-compose up -d

4. 初始化访问

  1. 打开浏览器访问 http://<你的公网 IP>
  2. 首次进入会引导你进行初始化设置(输入管理员账号密码)。
  3. 如果使用的是阿里云安全组,确保80 端口已放行。

方案二:传统 LNMP 部署(不推荐,需精细调优)

如果你坚持不使用 Docker,需要在 2GB 内存下手动安装 Nginx + MySQL + PHP。

1. 安装基础软件

# CentOS 示例
yum install nginx mysql-server php php-mysql php-fpm -y

# Ubuntu 示例
apt install nginx mysql-server php-fpm php-mysql -y

2. 关键优化(防止内存溢出)

这是 2GB 服务器的核心步骤。默认配置通常会占用超过 1.5GB 内存,导致系统崩溃。

  • 调整 MySQL 配置 (/etc/my.cnf)
    [mysqld]
    innodb_buffer_pool_size = 256M  # 默认可能高达 1GB+,必须改小
    max_connections = 50            # 降低连接数
    key_buffer_size = 16M
  • 调整 PHP-FPM 配置 (/etc/php-fpm.d/www.conf)
    pm = dynamic
    pm.max_children = 5             # 限制同时运行的 PHP 进程数
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
  • 增加 Swap 分区(非常重要):
    当物理内存耗尽时,Swap 可以作为临时交换空间,防止服务直接挂掉。

    dd if=/dev/zero of=/swapfile bs=1G count=2
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    echo '/swapfile none swap sw 0 0' >> /etc/fstab

3. 下载并解压禅道

cd /usr/share/nginx/html
wget http://www.zentao.net/download/source.html # 或直接去官网下载源码
unzip zentao-pro-*.zip
chown -R nginx:nginx /usr/share/nginx/html/zentao

4. 配置 Nginx

编辑 /etc/nginx/conf.d/zentao.conf,指向禅道目录,并确保 PHP 解析正确。

5. 启动服务

systemctl start nginx
systemctl start mysqld
systemctl start php-fpm
systemctl enable nginx mysqld php-fpm

常见问题与排查

  1. 启动失败/服务无法访问

    • 检查阿里云控制台的安全组规则,是否放行了 80 (HTTP) 和 443 (HTTPS) 端口。
    • 如果是 Docker 模式,使用 docker ps 查看容器状态,用 docker logs zentao 查看详细错误日志。
  2. 内存不足 (OOM)

    • 在 2GB 机器上,如果 MySQL 占用过高,尝试重启服务器观察内存使用情况 (free -h)。
    • 如果是 Docker 部署,务必检查 docker-compose.yml 中的 mem_limit 是否设置合理。
    • 如果是传统部署,必须确认 innodb_buffer_pool_size 已经大幅调低。
  3. 性能卡顿

    • 禅道是 PHP 应用,对 I/O 敏感。阿里云的普通云盘在并发高时可能会有延迟。
    • 建议开启 CloudMonitor 监控 CPU 和内存使用率,避免业务高峰期服务器死机。

总结建议

对于 2 核 2GB 的配置:

  • 首选 Docker 方案:资源隔离好,配置简单,通过 mem_limit 可以精确控制内存上限。
  • 必须开启 Swap:无论哪种方案,都建议至少分配 2GB 的 Swap 空间作为缓冲。
  • 定期清理:禅道的运行日志和数据库备份可能会占用大量磁盘空间,记得定期清理 /var/log 和数据库备份文件。
未经允许不得转载:CLOUD云枢 » 在阿里云2核2GB服务器上部署禅道需要哪些步骤?