Ubuntu 22.04 安装 Traq 3.8.6 指南
在 Ubuntu 22.04.5 LTS 上以 LEMP 形态安装 Traq v3.8.6 的全流程实测指南:Nginx+MariaDB+PHP 8.3 依赖安装、建库授权、发布包校验部署、Nginx 站点配置、安装向导四步与验证排障。
Ubuntu 22.04 安装 Traq 3.8.6 指南
目标:在一台干净的 Ubuntu 22.04.5 LTS 服务器上,以 LEMP(Nginx + MariaDB + PHP-FPM 8.3)形态完成 Traq v3.8.6 的安装,覆盖「系统依赖 → 建库授权 → 部署程序包 → Nginx 站点 → 安装向导 → 验证」全流程。本篇所有命令与输出均为实测记录(实测日期 2026-10-28,实测环境 Ubuntu 22.04.5 LTS x86_64),仅个别依赖 systemd 的服务管理命令标注「预期结果」。
一、版本与环境说明
1.1 软件版本清单
| 组件 | 实测版本 | 获取方式 |
|---|---|---|
| 操作系统 | Ubuntu 22.04.5 LTS (Jammy Jellyfish) x86_64 | 官方发行版 |
| Nginx | nginx/1.18.0 (Ubuntu)(包版本 1.18.0-6ubuntu14.22) | Ubuntu 仓库 |
| MariaDB | 10.6.23-MariaDB(包版本 1:10.6.23-0ubuntu0.22.04.1) | Ubuntu 仓库 |
| PHP-FPM | 8.3.36(包版本 8.3.36-1+ubuntu22.04.1+deb.sury.org+1) | ppa:ondrej/php |
| Traq | v3.8.6(2026-10-22 发布的最新稳定版) | GitHub Releases |
关于版本的三个事实(来源:GitHub 仓库 nirix/traq 与官方 README,查询日期 2026-10-28):
- Traq 官方 README 明确系统要求为 PHP 8.3+、MariaDB(或 MySQL)、Web 服务器需支持把请求路由到
index.php(Apache mod_rewrite 或等价配置)。Ubuntu 22.04 自带 PHP 8.1 不满足要求,因此本指南通过ppa:ondrej/php安装 PHP 8.3。 - v3.9.0 目前仅发布到 alpha(v3.9.0-alpha.3,2026-10-26,标记为预发布),生产安装应选择最新稳定版 v3.8.6。
- 项目处于活跃维护状态(主分支最近提交日期 2026-10-27,查询日期 2026-10-28)。
⚠️ 仓库地址说明:Traq 的官方网站为 https://traq.io ,官方 GitHub 仓库为 https://github.com/nirix/traq (作者 Jack Polgar / nirix)。网络上流传的
traq-dev/traq地址已失效(实测返回 404),下载时认准nirix/traq。
1.2 本指南约定
| 项 | 约定值 | 说明 |
|---|---|---|
| 服务器 IP | 192.168.1.100 | 示例 IP,替换为你的服务器地址 |
| Web 监听端口 | 8143 | 本指南约定端口,避免与 80 端口已有服务冲突;可按需改为 80/443 |
| 站点根目录 | /var/www/traq | Traq 程序目录 |
| 数据库名 / 用户 / 密码 | traq / traq / q1w2e3r4 | 示例值,生产环境请使用强密码 |
| Traq 管理员 | admin / q1w2e3r4 | 安装向导第 2 步创建 |
二、安装系统依赖
2.1 安装 Nginx 与 MariaDB
sudo apt-get update
sudo apt-get -y install nginx mariadb-server
实测安装完成后核对版本:
# nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
# mysqladmin --version
mysqladmin Ver 10.0 Distrib 10.6.23-MariaDB, for debian-linux-gnu on x86_64
2.2 安装 PHP 8.3 与所需扩展
Ubuntu 22.04 官方源只有 PHP 8.1,先添加 ondrej/php PPA(Ubuntu 社区维护的 PHP 多版本源):
sudo apt-get -y install ca-certificates curl gnupg software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
sudo apt-get -y install php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-gd php8.3-zip
实测安装摘要(输出节选):
Setting up php8.3-fpm (8.3.36-1+ubuntu22.04.1+deb.sury.org+1) ...
Setting up php8.3-mysql (8.3.36-1+ubuntu22.04.1+deb.sury.org+1) ...
核对 PHP 版本与关键扩展:
# php8.3 -v | head -1
PHP 8.3.36 (cli) (built: Oct 21 2026 14:31:50) (NTS)
# php8.3 -m | grep -Ei "pdo|mysql|mbstring|curl|gd|zip" | tr "\n" " "
curl gd mbstring mysqli mysqlnd PDO pdo_mysql zip
Traq 的 PDO 数据库驱动需要 pdo_mysql,其余为常见依赖(mbstring/curl/gd/zip),实测一个包覆盖全部需求,无需再单独装 Composer 等构建工具——v3.8.6 官方发布包内自带全部第三方依赖(详见第四章)。
2.3 启动服务并设置开机自启
Ubuntu 22.04 默认使用 systemd,标准管理命令如下(标准行为,预期结果标注):
sudo systemctl enable --now nginx mariadb php8.3-fpm
# 预期结果:分别输出 "Synchronizing state of nginx.service with SysV service script..."
# 与 "Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service." 等
启动后确认服务监听就绪(实测;-p 需 root,可看到 nginx/php-fpm/mariadbd 进程名):
# ss -ltn | grep -E ":(80|8143|3306)\b"
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
LISTEN 0 511 0.0.0.0:8143 0.0.0.0:*
LISTEN 0 511 [::]:8143 [::]:*
三、准备数据库
MariaDB 默认 root 通过 unix_socket 本地免密登录,直接建库、建用户、授权:
sudo mysql
CREATE DATABASE traq CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'traq'@'localhost' IDENTIFIED BY 'q1w2e3r4';
GRANT ALL PRIVILEGES ON traq.* TO 'traq'@'localhost';
FLUSH PRIVILEGES;
EXIT
说明:
- Traq 的表自身使用 utf8mb4 建表(安装向导会执行内置
install.sql),库级默认值与其保持一致即可。 - 向导中数据库主机填
127.0.0.1走 TCP,或填localhost走 socket,两者在 MariaDB 10.6 下均可,本指南实测用127.0.0.1。
四、部署 Traq 程序包
4.1 下载发布包并校验
从官方 GitHub Releases 下载 v3.8.6 的 tar.gz(官方由 CI 自动构建,同时提供 zip):
cd /tmp
wget https://github.com/nirix/traq/releases/download/v3.8.6/traq-v3.8.6.tar.gz
校验完整性(官方 Release 资产页公布的 sha256 为 e440e01f5eff87bc6bec71f65fea4227905ff63e2b8a06029daa3ccd405d8c30,查询日期 2026-10-28):
# ls -l traq-v3.8.6.tar.gz
-rw-r--r-- 1 root root 845361 Oct 28 10:25 traq-v3.8.6.tar.gz
# sha256sum traq-v3.8.6.tar.gz
e440e01f5eff87bc6bec71f65fea4227905ff63e2b8a06029daa3ccd405d8c30 traq-v3.8.6.tar.gz
哈希与官方一致。注意发布包体积只有约 825 KB——包内自带 vendor/ 目录(全部 PHP 第三方依赖),部署无需 Composer、无需 Node 构建,这是 Traq 相对多数 PHP 工程的一个省心点。
4.2 解压到站点根目录并设置权限
sudo mkdir -p /var/www/traq
sudo tar xzf traq-v3.8.6.tar.gz -C /var/www/traq
sudo chown -R www-data:www-data /var/www/traq
解压后的目录结构(实测):
# ls -la /var/www/traq
total 80
drwxr-xr-x 6 www-data www-data 4096 Oct 22 16:35 .
drwxr-xr-x 4 root root 4096 Oct 28 02:29 ..
-rw-r--r-- 1 www-data www-data 1893 Oct 22 16:35 .gitlab-ci.yml
-rw-r--r-- 1 www-data www-data 35821 Oct 22 16:35 COPYING
-rw-r--r-- 1 www-data www-data 1027 Oct 22 16:35 README.md
-rw-r--r-- 1 www-data www-data 380 Oct 22 16:35 TERMINATED_LICENCES.md
drwxr-xr-x 4 www-data www-data 4096 Oct 22 16:35 assets
-rw-r--r-- 1 www-data www-data 380 Oct 22 16:35 htaccess.txt
-rw-r--r-- 1 www-data www-data 1067 Oct 22 16:35 index.php
drwxr-xr-x 4 www-data www-data 4096 Oct 22 16:35 install
drwxr-xr-x 3 www-data www-data 4096 Oct 22 16:35 src
drwxr-xr-x 12 www-data www-data 4096 Oct 22 16:35 vendor
关键位置速记:
index.php:唯一前端入口;install/:安装向导(含install.sql建库脚本与upgrade.php升级向导);vendor/traq/config/:Traq 自身配置目录(安装完成后在此生成database.php,详见配置篇);htaccess.txt:Apache 环境才需要改名为.htaccess,Nginx 环境用不到(第五章用 try_files 等价实现)。
五、配置 Nginx 站点
删除默认站点,写入 Traq 站点配置:
sudo rm -f /etc/nginx/sites-enabled/default
sudo tee /etc/nginx/sites-available/traq.conf > /dev/null <<'EOF'
server {
listen 8143 default_server;
listen [::]:8143 default_server;
server_name _;
root /var/www/traq;
index index.php index.html;
client_max_body_size 20m;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.(?!well-known) {
deny all;
}
}
EOF
sudo ln -sf /etc/nginx/sites-available/traq.conf /etc/nginx/sites-enabled/traq.conf
语法检查并重载(实测输出):
# sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# sudo systemctl reload nginx
原理说明:Traq 主应用(Avalon 框架)按
REQUEST_URI解析路由,因此try_files $uri $uri/ /index.php?$query_string;这一条规则即可同时满足「静态资源直出」与「所有业务路径回落到 index.php」,不需要 PATH_INFO 之类的特殊配置。
六、运行安装向导
浏览器打开 http://192.168.1.100:8143/。此时 Traq 检测到尚无配置文件,会自动 302 跳转到安装向导。用命令行同样能看到这一行为(实测,安装前):
# curl -sS -D - -o /dev/null http://127.0.0.1:8143/
HTTP/1.1 302 Found
Server: nginx/1.18.0 (Ubuntu)
Location: /install
6.1 第 0 步:许可协议
页面标题为 Traq Installation / License Agreement,正文展示 GPL-3.0 许可证全文,点击 Accept 进入下一步。
6.2 第 1 步:数据库信息
页面标题 Traq Installation / Step 1 - Database Details,按下表填写:
| 字段 | 填写值 | 说明 |
|---|---|---|
| Type | MySQL | 可选 MySQL / SQLite / PostgreSQL |
| Server | 127.0.0.1 | 数据库主机,表单默认值即为 127.0.0.1 |
| Username | traq | 第三章创建的数据库用户 |
| Password | q1w2e3r4 | 数据库密码 |
| Database | traq | 数据库名 |
| Prefix | traq_ | 表前缀,留空亦可,默认建议 traq_ |
点击 Next。
6.3 第 2 步:管理员账号
页面标题 Traq Installation / Step 2 - Admin Account:
| 字段 | 填写值 |
|---|---|
| Username | admin |
| Name | Administrator |
| Password | q1w2e3r4 |
| admin@example.com |
点击 Next。
6.4 第 3 步:完成
向导执行建表(执行 install/install.sql 并替换表前缀)、写入管理员账号与匿名用户、写入初始设置,最后生成配置文件,页面标题变为 Traq Installation / Complete,正文显示:
Installation Completed
You may now login.
配置文件由向导自动写入 vendor/traq/config/database.php,实测内容:
<?php
$db = array(
'driver' => "pdo",
'type' => "mysql",
'host' => "127.0.0.1",
'username' => "traq",
'password' => "q1w2e3r4",
'database' => "traq",
'prefix' => "traq_",
);
若
vendor/traq/config/目录不可写,向导会改为在完成页直接展示这段配置代码,提示你手工保存为vendor/traq/config/database.php——这就是「手动创建配置」的兜底路径,两种方式结果一致。
七、安装验证
7.1 数据表核对
向导共创建 24 张表(实测 SHOW TABLES 输出,前缀 traq_):
# mysql -e "SHOW TABLES FROM traq;"
Tables_in_traq
traq_attachments
traq_components
traq_custom_field_values
traq_custom_fields
traq_milestones
traq_permissions
traq_plugins
traq_priorities
traq_project_roles
traq_projects
traq_settings
traq_severities
traq_statuses
traq_subscriptions
traq_ticket_history
traq_ticket_relationships
traq_tickets
traq_timeline
traq_types
traq_user_roles
traq_usergroups
traq_users
traq_wiki
traq_wiki_revisions
管理员账号写入 traq_users(实测):
# mysql -N -e "SELECT id,username,group_id,email FROM traq.traq_users;"
1 admin 1 admin@example.com
group_id=1 即内置用户组 Administrators。
7.2 Web 三连验证
# curl -sSI http://127.0.0.1:8143/ | head -8
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Wed, 28 Oct 2026 02:45:21 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Set-Cookie: PHPSESSID=kff28nl4emevd0m123tp22a9uu; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
# curl -sSL http://127.0.0.1:8143/login | grep -o "<title>[^<]*"
<title>Login - Traq
登录实测:用 admin / q1w2e3r4 提交登录表单,返回 302 回首页,页面出现 admin 与 Logout,且页脚显示 Traq 3.8.6 版本号——三关(HTTP 200、登录 302、版本号落位)全部通过,安装完成。
八、排障实录
8.1 手工 POST 伪静态地址导致「空响应/循环跳转」
现象:脚本化安装时直接 curl -d "" http://服务器/install/step/1,收到空响应(重复请求则反复回到许可页)。
原因:安装向导的路由器(Nanite)按「PATH_INFO → 查询串」的顺序取路由,而向导表单的真实提交地址是 PHP_SELF 加查询串的形态,例如许可页表单的 action 实测为:
<form action="/install/index.php?/step/1" method="post">
直接 POST /install/step/1 会命中 Nginx 的 try_files 回落到根 index.php(主应用入口),主应用发现未安装又把请求重定向回 /install,形成「看似无响应」的循环。
解决:脚本化安装请向导式地按表单 action 提交,即 POST 到 /install/index.php?/step/1、/install/index.php?/step/2、/install/index.php?/step/3(保持同一 Cookie 会话);浏览器操作不受影响,跟着页面点即可。
8.2 完成页提示「unable to create the config file」
现象:第 3 步完成后页面不显示 Completed,而是展示一段 PHP 代码并提示手工保存到 vendor/traq/config/database.php。
原因与解决:vendor/traq/config/ 目录对 PHP-FPM 运行用户不可写。执行 sudo chown -R www-data:www-data /var/www/traq 后按页面代码手工创建该文件即可;文件内容与向导自动生成的完全一致。
8.3 PHP 版本不满足导致依赖不可用
Ubuntu 22.04 默认源仅提供 PHP 8.1,低于官方要求的 8.3+,安装依赖或运行时会遇到兼容问题。解决:按 2.2 节走 ppa:ondrej/php 安装 php8.3-fpm,Nginx 的 fastcgi_pass 也必须指向 /run/php/php8.3-fpm.sock(8.3 版本的 socket 路径),不要沿用 8.1 的。
8.4 Apache 用户补充说明
若你使用 Apache 而非 Nginx:需要把程序目录下的 htaccess.txt 改名为 .htaccess(内容为把非静态请求重写到 index.php/$1),并启用 mod_rewrite。其余步骤(建库、向导)与本指南一致。
九、系列文档导航
- 安装后的配置体系(database.php、邮件通知 DSN、AdminCP 设置项、路由与权限)逐项详解:《Traq 3.8.6 配置参数详解》
- 服务管理、备份恢复、升级、API 运维与排障汇总:《Traq 3.8.6 运维命令详解》
- 还在选型?先看产品定位、功能全景与同类方案量化对比:《Traq 介绍与选型指南》