
本地部署软件安装到服务器,不是解压后看到登录页就结束了。对中大型企业研发组织来说,真正的“装好”至少满足四件事:服务能启动、客户端能访问、重启后仍可用、数据能备份和恢复。下面以禅道为例,走完 Linux 一键安装包与 Docker Compose 两条常见路径,并给出更容易落地的排查顺序。
先明确“装好”的验收标准
把安装当成一次小型上线,先定验收条件,后面就不容易被“页面能打开”误导。
- 服务可持续运行:Web 服务与数据库进程稳定,不是启动一次就退出。
- 访问链路完整:服务器本机、内网客户端都能访问,而不只是本机 curl 通。
- 初始化完成:管理员密码已修改,组织、用户和权限已经配置。
- 数据可恢复:附件、配置、数据库在重启和迁移后仍在,备份文件能实际恢复。
先定验收标准,再选安装方式。 单机部署优先减少依赖;已有容器平台时,优先保证数据卷和编排可维护;源码部署只适合已有匹配运行环境,并且有人长期维护的场景。
安装前要确认的五件事
- 系统和 CPU 架构匹配。 用 uname -m 查看架构,用 cat /etc/os-release 确认发行版。禅道官方文档显示,从 18.5 版本开始,Linux 一键安装包按 x86_64 与 arm64 两种 CPU 架构分发。
- 安装目录权限正确。 一键包直接解压到 /opt,不要先解压到别处再拷贝,也不要把整个目录设为 777。
- 端口计划清楚。 确认 Web 端口和数据库端口是否被占用,数据库端口不要对公网开放。
- 网络入口完整。 域名解析、操作系统防火墙、云平台安全组、反向代理,任何一层没放行,外部都打不开。
- 备份位置在服务器之外。 至少准备独立磁盘或对象存储,避免主机故障时程序和备份一起丢失。
路径一:Linux 一键安装包装禅道
一键包已内置 Apache、PHP、MySQL 和 XXD 服务,适合一台独立服务器快速落地。下载前确认版本和 CPU 架构,将命令中的版本号替换为实际版本。
cd /opt wget https://www.zentao.net/dl/zentao/<版本号>/ZenTaoPMS.<版本号>.zbox_64.tar.gz tar xvzf ZenTaoPMS.<版本号>.zbox_64.tar.gz ls /opt/zbox
看到 /opt/zbox 目录后再启动:
sudo /opt/zbox/zbox start sudo /opt/zbox/zbox status
如果 80 或 3306 端口已被占用,可改用其他端口:
sudo /opt/zbox/zbox --aport 8080 --mport 3307 start
启动成功后,先在服务器本机验证,再换到内网客户端验证:
curl -I http://127.0.0.1:8080
浏览器访问 http://服务器IP:8080。默认管理员账号是 admin,初始密码是 123456,登录后第一件事就是修改密码。如果本机通、外部不通,依次检查操作系统防火墙、云平台安全组和 SELinux;不要长期关闭防火墙来“解决”问题。
如果服务器已经运行容器平台,也可以改用下一条路径。

路径二:Docker Compose 部署禅道
如果企业已有容器平台,Compose 更容易固定版本、管理数据卷和迁移。先确认 Docker 与 Compose 可用:
docker --version docker compose version
禅道官方 Docker 文档说明,镜像支持 x86_64 和 arm64 架构,所有需要持久化的数据都保存在容器的 /data 目录。下面是一个便于验证的最小示例,生产环境应按官方文档改为外部数据库,并替换所有示例密码。
services:
db:
image: mariadb:10.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: change_me
MYSQL_DATABASE: zentao
volumes: ["/data/zentao-mysql:/var/lib/mysql"]
app:
image: hub.zentao.net/app/zentao:<TAG>
restart: always
ports: ["8080:80"]
volumes: ["/data/zentao-file:/data"]
environment:
ZT_MYSQL_HOST: db
ZT_MYSQL_PORT: "3306"
ZT_MYSQL_USER: root
ZT_MYSQL_PASSWORD: change_me
ZT_MYSQL_DB: zentao
depends_on: [db]
保存为 docker-compose.yml 后执行:
docker compose up -d docker compose ps docker compose logs -f app
看到容器持续运行、日志没有数据库连接错误,再访问 http://服务器IP:8080。不要把 <TAG> 直接写进生产配置,要换成实际固定版本;也不要删除 /data 挂载目录或数据库卷。 生产环境建议按官方文档使用外部 MySQL/MariaDB,并对数据目录设置合适的属主和权限,避免用 777 作为长期方案。
初始化、域名与验收
到这一步,本地部署软件安装到服务器的主体工作已经完成,接下来是初始化与验收。首次登录后完成管理员密码修改、组织与用户创建、邮件和通知配置。需要域名访问时,把域名解析到服务器,用 Nginx 等反向代理转发到应用端口,并在代理层配置 HTTPS;应用端口和安全组只对必要来源开放,数据库端口保持内网访问。
验收至少做一遍:
- 服务器本机 curl -I 返回正常状态码。
- 内网客户端能打开登录页并完成登录。
- 新建测试项目、任务和附件,确认附件可上传、可下载。
- 重启服务器或容器,确认服务自动恢复、数据仍在。
- 执行一次备份,并在测试环境验证能恢复。

常见问题:按“服务—端口—链路—应用”排查
验收通过不代表以后不会出问题。遇到打不开、报错或登录异常,不要先反复重装,按下面顺序缩小范围,通常更快。
| 现象 | 优先检查 | 处理方向 |
|---|---|---|
| 浏览器连接超时 | 服务是否运行、端口是否监听 | status、ss -lntp、本机 curl |
| 本机通、外部不通 | 防火墙、安全组、绑定地址 | 放行端口,限制来源 IP |
| Nginx 返回 502/504 | 上游地址、应用进程、超时 | 核对 proxy_pass,看应用和代理日志 |
| 数据库连接失败 | 主机、端口、账号、库名、网络 | 逐项核对配置,确认数据库已启动 |
| 上传附件失败 | 目录权限、磁盘空间、PHP 限制 | 看 df -h、应用日志和上传配置 |
| 重启后不可用 | 开机自启、容器重启策略、挂载 | 配置 systemd 或 restart: always |
几个高影响问题的处理重点:
- 端口被占用。 用 ss -lntp | grep 端口 找到占用进程,换端口后同步修改防火墙、安全组和反向代理。
- 权限报错。 先确认目录属主和容器运行用户,按官方要求调整,不要直接用 chmod -R 777 掩盖问题。
- 默认密码未改。 这是高风险配置,安装完成后立即修改管理员密码和数据库密码,并限制数据库端口的访问来源。
- 日志才是最终依据。 一键包可查看 /opt/zbox/logs,容器用 docker compose logs,反向代理看 Nginx 的 error log。
备份、升级与上线清单
禅道官方备份文档把备份范围拆成配置文件、修改过的代码、数据库和附件。一键包可在停止服务后备份整个 /opt/zbox,也可以使用后台备份或 mysqldump;容器部署则要同时备份数据库和 /data 数据卷。只备份程序目录、不备份数据库和附件,不能算完整备份。
升级前先做主备环境验证:记录当前版本,完整备份数据库与附件,保留上一版本镜像或安装包,按官方升级路径执行。回退时不只回退程序,还要评估数据库结构是否已变更,必要时连同数据一起恢复到升级前状态。
上线前逐项确认:
- CPU 架构、安装包和版本匹配
- 服务状态稳定,日志无持续报错
- 域名、HTTPS、防火墙和安全组配置完成
- 默认密码已修改,数据库不对公网开放
- 附件、任务、Bug 等核心功能验证通过
- 重启后服务自动恢复
- 备份可恢复,升级和回退路径已记录
本地部署软件安装到服务器的难点,通常不在解压和启动,而在访问链路、权限、数据持久化和恢复演练。把验收标准前置,按“服务—端口—链路—应用”排查,企业部署会更可控。
文章标题 :本地部署软件怎么安装到服务器?完整步骤与常见问题 ,发布者 :项目管理研究院





























