前言
随着企业信息化与安全运维要求不断提高,内部网络开通、防火墙策略变更等操作必须规范化、流程化、可审计,osTicket 作为一款轻量、开源、易用的企业级 ITSM 工单系统,能够帮助企业实现申请 — 审批 — 执行 — 留痕的全流程管理,避免随意操作带来安全风险,为了建立标准化运维流程、实现操作可追溯,本次实践部署 osTicket 企业工单系统,完成环境搭建、系统安装、部门配置、表单自定义、工单审批流程等全步骤,掌握企业真实运维审批体系的搭建方法
osTicket 工单系统是干什么的?
我们把公司的网络 / 安全运维想象成一个办事大厅:
osTicket:办事大厅的综合窗口 + 审批系统
用户:来提交申请的人(申请开通网络、改防火墙)
管理员 / 运维:窗口审核人员、办事人员
MySQL:存放所有工单、用户、记录的档案柜
Apache + PHP:办事大厅的办公环境
一句话:osTicket = 企业内部办事大厅,所有敏感操作必须提单、审批、留痕,不能私下办
这么做会出现什么结果
成功部署 osTicket 工单系统,可通过浏览器正常访问、登录
用户只能通过工单系统提交网络开通、防火墙变更申请,无法直接操作
所有工单需经运维部审批后才能执行,审批过程、操作记录全程留痕
管理员可查看所有工单统计、审批记录,便于后续追溯和管理
系统稳定、轻量,日常使用无压力
为什么要这么做
规范流程:避免随意开通网络、变更防火墙策略,减少安全隐患
责任明确:审批流程划分权责,出现问题可快速定位责任人
合规可追溯:所有操作留痕,满足企业运维、安全审计要求
简单易维护:osTicket 开源免费,适配清华源,部署和管理成本低
贴合实战:模拟企业 ITSM 运维场景,为后续学习、工作打基础
实验前准备
一、环境要求
系统:Ubuntu24.04 LTS
网络:服务器可访问外网,开放 80 端口
权限:拥有 root 或 sudo 权限
二、前置准备
a.操作命令
先更换清华源、更新系统,避免下载缓慢或失败
# 更换清华源(Ubuntu24.04)
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装基础工具
sudo apt install -y wget curl git unzip三、实验步骤
1.安装 LAMP 环境
a.学习重点
osTicket 必须运行在 Apache + MySQL + PHP 环境下,打比方来说LAMP 就是办事大厅的房子、桌椅、电脑,没有环境,工单系统跑不起来,这样的目的其实就是Apache 提供网页服务、MySQL 存储数据、PHP 负责逻辑处理,三者缺一不可
Apache:大门与窗口
MySQL:档案柜
PHP:办事员
b.操作命令
Apache+MySQL+PHP,工单系统依赖
# 安装 LAMP 组件
sudo apt install -y apache2 mariadb-server php php-cli php-mysql php-gd php-imap php-intl php-mbstring php-curl php-xml php-zip php-apcu libapache2-mod-php
# 启动并设置开机自启
sudo systemctl start apache2 mariadb
sudo systemctl enable apache2 mariadb
# 验证状态
sudo systemctl status apache2 mariadbb.结果图:

2.配置 MySQL 数据库
a.学习重点
给 osTicket 创建一个专用数据库 + 专用账号,打比方来说就是给工单系统开一个独立档案室 + 专属管理员钥匙,这是为了避免数据混乱
b.操作命令
# 创建数据库(库名:yxwa_osticket)
sudo mysql -e "CREATE DATABASE yxwa_osticket CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 创建数据库用户
sudo mysql -e "CREATE USER 'yxwa'@'localhost' IDENTIFIED BY 'yxwa123';"
# 授权用户操作数据库
sudo mysql -e "GRANT ALL PRIVILEGES ON yxwa_osticket.* TO 'yxwa'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
# 验证
sudo mysql -u yxwa -pyxwa
# 在mysql里输入
SHOW DATABASES;c.结果图
看到yxwa_osticket这个表名,代表创建成功

3.下载并部署 osTicket
a.学习重点
这一步进入 Apache 根目录,下载、解压、重命名 osTicket,并配置正确权限,就像把软件安装到指定目录,并给运行账号授权,权限不对会导致网页无法访问、报错 403
b.操作命令
# 进入 Apache 网站根目录
cd /var/www/html
# 下载 osTicket
sudo curl -L -O https://github.com/osTicket/osTicket/releases/download/v1.18.1/osTicket-v1.18.1-php8.2.zip
# 解压文件
sudo unzip osTicket-v1.18.1.zip
# 重命名目录(方便访问,简化路径)
sudo mv upload yxwa_osticket
# 配置目录权限(避免访问报错)
sudo chown -R www-data:www-data /var/www/html/yxwa_osticket
sudo chmod -R 755 /var/www/html/yxwa_osticketc.结果图

4.创建并配置 osTicket 配置文件
a.学习重点
osTicket 安装必须依赖 ost-config.php 配置文件,系统只提供示例文件,需要手动复制重命名,同时要配置正确权限,安装完成后删除 setup 目录防止恶意利用,这是系统安全与正常运行的关键
a.操作命令
# 1. 进入osTicket的include目录
cd /var/www/html/yxwa_osticket/include
# 2. 重命名示例配置文件为正式配置文件
sudo cp ost-sampleconfig.php ost-config.php
# 3. 给配置文件设置正确权限
sudo chown www-data:www-data ost-config.php
sudo chmod 660 ost-config.php
# 安装完成后,建议把权限改回
sudo chmod 640 /var/www/html/yxwa_osticket/include/ost-config.php
# 安装完成后,必须删除 setup 目录,防止被恶意利用
sudo rm -rf /var/www/html/yxwa_osticket/setupc.为什么
osTicket 安装需要一个核心配置文件 ost-config.php,系统自带了模板文件 ost-sampleconfig.php,但没有自动重命名,就会导致安装程序找不到配置文件,报错 配置文件缺失
5.配置 Apache 虚拟主机
确保能正常访问
a.学习重点
这一步创建独立站点配置,指定网站根目录、开启 rewrite 规则、设置日志路径,确保浏览器能正常访问 osTicket,打比方来说,告诉 Apache:访问服务器时,自动进入 osTicket 系统,这是为了给办事大厅挂门牌,用户一进门就找到对的窗口,如果配置错误会导致无法打开页面
b.操作命令
sudo tee /etc/apache2/sites-available/yxwa_osticket.conf << 'EOF'
<VirtualHost *:80>
ServerAdmin admin@yxwa.com
DocumentRoot /var/www/html/yxwa_osticket
# 本地访问用localhost,局域网访问替换为服务器IP
ServerName localhost
<Directory /var/www/html/yxwa_osticket>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/yxwa_osticket_error.log
CustomLog ${APACHE_LOG_DIR}/yxwa_osticket_access.log combined
</VirtualHost>
EOF
# 检查语法(必须返回 Syntax OK)
sudo apache2ctl configtest
# 启用站点
sudo a2ensite yxwa_osticket.conf
# 开启rewrite模块
sudo a2enmod rewrite
# 重启Apache生效
sudo systemctl restart apache2
# 查看运行状态
sudo systemctl status apache2c.结果图

6.配置 PHP
a.学习重点
设置 PHP 时区为 Asia/Shanghai,避免工单时间错乱,避免工单时间错乱,相当于给办事大厅挂准确时钟,不然审批时间对不上
b.操作命令
# 设置时区为上海(避免时间错乱)
sudo sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/' /etc/php/8.3/apache2/php.ini
# 重启 Apache 生效
sudo systemctl restart apache2
#验证
cat /etc/php/8.3/apache2/php.ini | grep date.timezonec.结果图

7. Web 页面初始化
a.学习重点
通过浏览器访问 osTicket 完成可视化安装,填写数据库信息、管理员账号,完成系统初始化,这一步验证 LAMP 环境、配置文件、权限是否全部正常,出现安装页面代表部署成功
b.浏览器访问
浏览器访问:http://你的ip/yxwa_osticket
访问web页面结果图:点击 Continue

创建的结果图:创建时以下内容都必须填入,点击 install now

结果图

8.配置工单审批流程
a.学习重点
创建专属审批部门,用于统一处理网络开通、防火墙变更申请,实现权责清晰,相当于企业里成立专门的审批小组,所有相关工单自动归集,我们要创建:
审批部门
工单模板
自定义表单
用户权限
审批流程
b.以下是步骤图
登录后台:http://你的ip/yxwa_osticket/scp,用户名 Demo,密码 Demo123
执行结果:

创建审批部门(网络运维部)
登录 osTicket 管理员后台:
http://你的ip/yxwa_osticket/scp/点击顶部「Agents」-> 下拉选择「Departments」
点击右上角「Add Department」
填写:
Name:
网络运维部Status:
Active其他默认,点击「Create Department」


创建自定义表单
创建必填字段表单(申请人、申请理由、开通范围),确保用户提单时信息完整,便于审批与审计。就像打印标准化申请单,避免信息缺失无法处理,实现必填字段:
a.点击顶部 Managa -> 下拉选择 Forms
b.点击右上角 Add New Form
c.填写表单基础信息:
Title:
运维申请工单表单Instructions:
请填写完整申请信息,带*为必填项(可选)
添加 3 个必填字段:
流程图

网络开通申请
a.点击顶部 Manage -> 下拉选择 Help Topics
b.点击右上角 Add New Help Topic

【Help Topic Information】标签页:
Topic:
网络开通申请Status:
ActiveType:
Public(公开,用户可提单)Parent Topic:
— Top-Level Topic —

【New ticket options】标签页:
Department:选择 网络运维部 (工单自动分配至审批部门)
Priority:
Normal其他默认,取消勾选 Disable new ticket auto-response (开启自动回复)

【Forms】标签页:
Add Custom Form 下拉选择 运维申请工单表单
确认 3 个字段全部启用,点击 Add Topic 保存
模板1:网络开通申请(必填项:申请人、申请理由、开通范围)
Forms标签页

防火墙策略变更申请
创建两种常用工单模板,绑定部门、优先级、自定义表单,实现用户自助提单、系统自动分配审批人,这是企业 ITSM 流程标准化的核心
步骤和4一样,结果图:

创建用户(仅提单权限)
创建普通用户账号,仅开放提单权限,不能审批、不能管理后台,实现权限最小化管控,是为了企业安全规范
切换进客户端区域
点击 Users -> Add User
填写:
Email Address
Full Name
点击 Add User保存
结果图:会多出一个用户如 sly 点击它,去激活用户。

进入sly用户界面,再点击Manage Account,设置用户,和用户密码,再保存

用户登录前台,提交工单

结果

运维审批验证
管理员登录后台处理待审批工单,完成分配、备注、关闭流程,并解决部门权限看不到工单的常见问题,这是模拟企业真实运维审批的完整闭环
管理员登录后台,在 Tickets -> Open 看到待审批工单
点击工单,审批通过后分配给执行人员,添加内部备注
执行完成后,将工单设为「Resolved」,通知申请人确认

如果用户申请了表单,但登陆进来,没看到此工单,很有可能是Admin 账号默认只属于Support部门,没有权限查看 网络运维部 的工单,所以列表里看不到,这个时候,我们可以:
a. 进入 Admin Panel -> Agents -> Agents
b. 编辑你的admin账号
c. 在 Primary Department(主部门)里,添加 网络运维部
d. 保存后,刷新 Tickets -> Open 页面,立刻就能看到 #752434
