在阿里云轻量应用服务器(Lightweight Application Server, LAMP/LEMP 环境)上安装和配置禅道(ZenTao)是一个常见需求。以下是基于官方推荐方式的详细步骤,适用于大多数场景(以 CentOS 7/8 或 Ubuntu 20.04/22.04 为例)。
✅ 前提条件
- 已购买并登录阿里云轻量应用服务器实例。
- 已设置 root 密码或具有 sudo 权限的普通用户。
- 开放必要端口:
80(HTTP)、443(HTTPS,可选)、3306(MySQL,仅本地访问)等。 - 建议系统为 CentOS 7+ 或 Ubuntu 20.04+(官方支持最佳)。
🚀 方法一:使用 Docker 安装(推荐,简单、隔离性好)
步骤 1:安装 Docker 和 Docker Compose
CentOS 7/8:
sudo yum install -y docker-compose
sudo systemctl start docker
sudo systemctl enable docker
# 若未安装 docker,先安装:
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
Ubuntu 20.04+:
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER # 避免每次用 sudo
newgrp docker # 使组生效
💡 验证:
docker --version和docker compose version
步骤 2:拉取并运行禅道镜像
禅道官方提供 Docker 镜像,支持一键部署:
mkdir zentao && cd zentao
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: your_strong_password_here
MYSQL_DATABASE: zentao
MYSQL_USER: zentao_user
MYSQL_PASSWORD: zentao_pass
volumes:
- ./data/mysql:/var/lib/mysql
restart: always
networks:
- zentao-net
zentao:
image: zenTao/zen-tao:latest
ports:
- "80:80"
depends_on:
- mysql
environment:
ZENTAO_DB_HOST: mysql
ZENTAO_DB_PORT: 3306
ZENTAO_DB_USER: zentao_user
ZENTAO_DB_PASS: zentao_pass
ZENTAO_DB_NAME: zentao
volumes:
- ./data/zentao:/opt/zbox/data
restart: always
networks:
- zentao-net
networks:
zentao-net:
driver: bridge
EOF
⚠️ 注意:
- 将
your_strong_password_here、zentao_user、zentao_pass替换为强密码(生产环境务必修改!) - 首次运行时会自动初始化数据库
启动服务:
docker compose up -d
查看状态:
docker compose ps
访问:http://<你的公网IP>
默认账号:admin / admin(首次登录后请立即修改密码!)
步骤 3:配置 HTTPS(可选但推荐)
使用 Nginx 反向X_X + Let’s Encrypt(certbot):
# 安装 certbot 插件
sudo apt install -y certbot python3-certbot-nginx # Ubuntu
# 或:sudo yum install -y python3-certbot-nginx # CentOS
# 申请证书(需域名解析到服务器 IP)
sudo certbot --nginx -d your-domain.com
# 自动续期测试
sudo certbot renew --dry-run
🔐 若暂无域名,可先用 HTTP 访问,后续再补 SSL。
⚙️ 方法二:传统 LAMP 手动安装(适合无 Docker 环境)
适用于无法使用 Docker 的场景,但维护成本更高。
步骤 1:安装依赖(以 Ubuntu 为例)
sudo apt update
sudo apt install -y nginx php-fpm php-mysql php-gd php-mbstring
php-curl php-zip php-json php-opcache
mysql-server wget unzip
步骤 2:下载并解压禅道
cd /var/www/html
sudo wget https://www.zentao.net/download/ZenTaoPMS_17.6.zip
sudo unzip ZenTaoPMS_17.6.zip
sudo mv ZenTaoPMS_17.6/* .
sudo rm ZenTaoPMS_17.6.zip
sudo chown -R www-data:www-data /var/www/html
步骤 3:配置 MySQL
CREATE DATABASE zentao DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'zentao'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON zentao.* TO 'zentao'@'localhost';
FLUSH PRIVILEGES;
步骤 4:配置 Nginx
创建 /etc/nginx/sites-available/zentao:
server {
listen 80;
server_name your-domain.com; # 或 _ (匹配所有)
root /var/www/html;
index index.php;
location ~ .php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据 PHP 版本调整
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/zentao /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
步骤 5:访问安装向导
浏览器打开 http://<服务器IP> → 按提示完成安装(输入 DB 信息:host=localhost, db=zentao, user=zentao, pass=xxx)。
🔒 安全加固建议(重要!)
| 项目 | 操作 |
|---|---|
| 修改默认密码 | 登录后立即改 admin 密码;DB 密码勿硬编码在代码中 |
| 限制 IP 访问 | 在阿里云控制台安全组中,仅允许特定 IP 访问 80/443(开发测试可放宽) |
| 禁用 PHP 错误显示 | display_errors = Off in php.ini |
| 定期备份 | 使用 mysqldump 备份数据库 + 备份 data/zentao 目录(Docker 方式) |
| 开启防火墙 | ufw allow 80/tcp(Ubuntu)或 firewall-cmd --add-service=http(CentOS) |
示例备份脚本(Docker 版):
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
docker exec zentao_mysql mysqldump -u zentao_user -p'your_pass' zentao > /backup/zentao_$DATE.sql
tar czf /backup/zentao_data_$DATE.tar.gz /path/to/zentao/data/zentao
❓ 常见问题排查
| 问题 | 解决方案 |
|---|---|
| 页面白屏 / 500 错误 | 检查 docker logs zentao_zentao_1 或 Nginx/PHP-FPM 日志 |
| 无法连接数据库 | 确认 MySQL 容器是否运行;检查 MYSQL_* 环境变量是否一致 |
| 上传附件失败 | 检查 upload_max_filesize 和 post_max_size(php.ini) |
| 中文乱码 | 确保数据库、表、字段均为 utf8mb4;Nginx/PHP 配置正确字符集 |
需要我为你提供:
- 自动化安装脚本(Shell/Dockerfile)?
- 针对具体系统版本(如 Rocky Linux 9 / Debian 12)的定制步骤?
- 禅道高级功能配置(如 Git 集成、LDAP、多租户)?
欢迎告诉我你的具体环境,我可进一步细化方案!
CLOUD技术博