1.项目介绍

Zammad 是一款基于Web的开源用户支持/工单管理系统,旨在帮助团队管理和协调通过电话、Facebook、Twitter、聊天和电子邮件等多种渠道的客户通信。它采用了GNU Affero General Public License v3(GNU AGPLv3)进行分发,具有直观、快速和易用的特点。

企业版和社区版网站分开(本文主要介绍社区版),分别为:

 https://zammad.com/

 https://zammad.org/

适用于中小企业的开源工单系统 Zammad 部署及使用_依赖关系

适用于中小企业的开源工单系统 Zammad 部署及使用_依赖关系_02

2.核心优势

特性

说明

全渠道支持

邮件、电话、社交媒体(Twitter/Facebook)、网页表单、实时聊天(含WhatsApp集成)

现代化UI

响应式设计,支持PC/手机端,用户体验接近商业系统(如Zendesk)

自动化规则引擎

基于条件自动分配工单、添加标签或触发提醒

知识库集成

内置FAQ系统,支持客户自助查询

多租户支持

可服务多个部门或外部客户(适合IT运维+客服混合场景)

3.使用 Package Manager 安装

安装Zammad的方式有多种,包括使用 Package Manager 安装、使用 Docker 安装、在 Kubernetes 上安装、从源安装,本文主要介绍使用 Package Manager 安装。

3.1安装 Elasticsearch

Elasticsearch 不是 Zammad 的硬依赖项,但强烈推荐!而且它需要在 Zammad 之前安装。

1)配置 Elasticsearch 7.x 的官方 YUM 仓库

# 导入Elasticsearch GPG密钥(用于验证软件包签名)
[root@monitor ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# 创建YUM仓库配置文件
[root@monitor ~]# echo "[elasticsearch-7.x]
> name=Elasticsearch repository for 7.x packages
> baseurl=https://artifacts.elastic.co/packages/7.x/yum
> gpgcheck=1
> gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
> enabled=1
> autorefresh=1
> type=rpm-md"| tee /etc/yum.repos.d/elasticsearch-7.x.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

2)安装elasticsearch

[root@monitor ~]# yum install -y elasticsearch
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
elasticsearch-7.x                                                                            | 1.3 kB  00:00:00     
elasticsearch-7.x/primary                                                                    | 639 kB  00:00:02     
elasticsearch-7.x                                                                                         2020/2020
正在解决依赖关系
--> 正在检查事务
---> 软件包 elasticsearch.x86_64.0.7.17.28-1 将被 安装
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

3)安装插件

[root@monitor ~]# /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
-> Installing ingest-attachment
-> Downloading ingest-attachment from elastic
[=================================================] 100%   
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.java2d.cmm.kcms
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission createAccessControlContext
See https://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
-> Installed ingest-attachment
-> Please restart Elasticsearch to activate any plugins installed
[root@monitor ~]#
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

4)启动Elasticsearch

安装 Elasticsearch 及其附件插件后, 确保默认启用并启动它。

[root@monitor ~]# systemctl start elasticsearch
[root@monitor ~]# systemctl enable elasticsearch
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@monitor ~]#
  • 1.
  • 2.
  • 3.
  • 4.
3.2区域设置

为确保 Zammad 正常运行,系统必须使用正确的区域设置。

先查看当前区域设置

[root@monitor ~]# locale | grep "LANG="
LANG=zh_CN.UTF-8
[root@monitor ~]#
  • 1.
  • 2.
  • 3.

若未返回有效值,请按以下方式修正(将<lang_code>替换为实际语言代码,如en_US):

# 示例:设置为美式英语UTF-8编码
$ sudo localectl set-locale LANG=en_US.UTF-8
  • 1.
  • 2.

修复后请再次验证输出是否包含.utf8后缀。若未生效,重启系统可能解决问题。

3.3添加存储库并安装 Zammad

导入zammad GPG密钥

[root@monitor ~]# rpm --import https://dl.packager.io/srv/zammad/zammad/key
[root@monitor ~]#
  • 1.
  • 2.

获取repo文件

[root@monitor ~]# wget -O /etc/yum.repos.d/zammad.repo \
> https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo
--2025-05-08 14:15:38--  https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo
正在解析主机 dl.packager.io (dl.packager.io)... 178.63.71.248
正在连接 dl.packager.io (dl.packager.io)|178.63.71.248|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:271 [text/plain]
正在保存至: “/etc/yum.repos.d/zammad.repo”

100%[===================================================================================================================================================>] 271         --.-K/s 用时 0s      

2025-05-08 14:15:40 (17.5 MB/s) - 已保存 “/etc/yum.repos.d/zammad.repo” [271/271])

[root@monitor ~]#
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

然后安装

[root@monitor ~]# yum install zammad
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
zammad/x86_64/signature                                                                                                                                               |  488 B  00:00:00     
zammad/x86_64/signature                                                                                                                                               | 1.3 kB  00:00:00 !!! 
zammad/x86_64/primary                                                                                                                                                 |  66 kB  00:00:04     
zammad                                                                                                                                                                               255/255
正在解决依赖关系
--> 正在检查事务
---> 软件包 zammad.x86_64.0.6.0.0-1690808786.95163353.centos7 将被 安装
--> 正在处理依赖关系 postgresql-server >= 9.3,它被软件包 zammad-6.0.0-1690808786.95163353.centos7.x86_64 需要
……
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

这里出错提示,需要:postgresql-server >= 9.3

--> 正在处理依赖关系 nginx-filesystem = 1:1.20.1-10.el7,它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libcrypto.so.1.1(OPENSSL_1_1_0)(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1(OPENSSL_1_1_0)(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1(OPENSSL_1_1_1)(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 nginx-filesystem,它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libcrypto.so.1.1()(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
--> 正在处理依赖关系 libssl.so.1.1()(64bit),它被软件包 1:nginx-1.20.1-10.el7.x86_64 需要
---> 软件包 postgresql-libs.x86_64.0.9.2.24-9.el7_9 将被 安装
---> 软件包 redis.x86_64.0.3.2.12-2.el7 将被 安装
--> 正在处理依赖关系 libjemalloc.so.1()(64bit),它被软件包 redis-3.2.12-2.el7.x86_64 需要
---> 软件包 zammad.x86_64.0.6.0.0-1690808786.95163353.centos7 将被 安装
--> 正在处理依赖关系 postgresql-server >= 9.3,它被软件包 zammad-6.0.0-1690808786.95163353.centos7.x86_64 需要
--> 正在检查事务
---> 软件包 jemalloc.x86_64.0.3.6.0-1.el7 将被 安装
---> 软件包 nginx-filesystem.noarch.1.1.20.1-10.el7 将被 安装
---> 软件包 openssl11-libs.x86_64.1.1.1.1k-7.el7 将被 安装
---> 软件包 zammad.x86_64.0.6.0.0-1690808786.95163353.centos7 将被 安装
--> 正在处理依赖关系 postgresql-server >= 9.3,它被软件包 zammad-6.0.0-1690808786.95163353.centos7.x86_64 需要
--> 解决依赖关系完成
错误:软件包:zammad-6.0.0-1690808786.95163353.centos7.x86_64 (zammad)
          需要:postgresql-server >= 9.3
          可用: postgresql-server-9.2.24-4.el7_8.x86_64 (base)
              postgresql-server = 9.2.24-4.el7_8
          可用: postgresql-server-9.2.24-6.el7_9.x86_64 (updates)
              postgresql-server = 9.2.24-6.el7_9
          可用: postgresql-server-9.2.24-7.el7_9.x86_64 (updates)
              postgresql-server = 9.2.24-7.el7_9
          可用: postgresql-server-9.2.24-8.el7_9.x86_64 (updates)
              postgresql-server = 9.2.24-8.el7_9
          可用: postgresql-server-9.2.24-9.el7_9.x86_64 (updates)
              postgresql-server = 9.2.24-9.el7_9
 您可以尝试添加 --skip-broken 选项来解决该问题
 您可以尝试执行:rpm -Va --nofiles --nodigest
[root@monitor ~]#
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.

问题处理部分:

# 添加 PostgreSQL 官方 YUM 仓库(默认 CentOS 7 仓库中的版本较旧)
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 安装 PostgreSQL 12
sudo yum install -y postgresql12-server
# 初始化数据库(数据目录默认在 /var/lib/pgsql/12/data)
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
# 启动服务
sudo systemctl enable postgresql-12
sudo systemctl start postgresql-12

重新安装zammad:

适用于中小企业的开源工单系统 Zammad 部署及使用_postgresql_03

然后修改权限

[root@monitor ~]# chmod -R 755 /opt/zammad/public/
[root@monitor ~]#
  • 1.
  • 2.
4.防火墙 & SELinux配置

开放80和443端口

[root@monitor ~]# firewall-cmd --znotallow=public --add-service=http --permanent
success
[root@monitor ~]# firewall-cmd --znotallow=public --add-service=https --permanent
success
[root@monitor ~]# firewall-cmd --reload
success
[root@monitor ~]#
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
5.管理 Zammad 的服务

管理命令如下:

# 主服务(一键启停所有关联服务)
$ systemctl (status|start|stop|restart) zammad

# Puma应用服务器(负责Web界面展示)
$ systemctl (status|start|stop|restart) zammad-web

# 后台工作进程(处理延迟任务和后台作业)
$ systemctl (status|start|stop|restart) zammad-worker

# WebSocket服务(管理会话相关信息)
$ systemctl (status|start|stop|restart) zammad-websocket
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

下面一键启动所有关联的服务,并查看服务状态:

[root@monitor ~]# systemctl start zammad
[root@monitor ~]# systemctl status zammad
● zammad.service
   Loaded: loaded (/etc/systemd/system/zammad.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2025-05-08 15:18:23 CST; 6min ago
 Main PID: 32443 (sleep)
    Tasks: 1
   Memory: 92.0K
   CGroup: /system.slice/zammad.service
           └─32443 /bin/sleep infinity

5月 08 15:18:23 monitor systemd[1]: Started zammad.service.
[root@monitor ~]#
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
6.其他配置过程
6.1将 Zammad 与 Elasticsearch 连接

设置 Elasticsearch 服务器地址:

[root@monitor ~]# zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
[root@monitor ~]#
  • 1.
  • 2.
6.2设置第一个账户信息

打开WEB页面:

http://192.168.250.103
  • 1.

适用于中小企业的开源工单系统 Zammad 部署及使用_依赖关系_04

进入主界面后,点击"Set up a new system",然后创建管理员用户:

适用于中小企业的开源工单系统 Zammad 部署及使用_postgresql_05

设置组织信息,点击下一步:

适用于中小企业的开源工单系统 Zammad 部署及使用_依赖关系_06

进入主界面:

适用于中小企业的开源工单系统 Zammad 部署及使用_postgresql_07

6.3设置用户和组

适用于中小企业的开源工单系统 Zammad 部署及使用_依赖关系_08

适用于中小企业的开源工单系统 Zammad 部署及使用_elasticsearch_09

6.4用户创建工单

以分配的部门用户登录系统,根据需求创建任务:

适用于中小企业的开源工单系统 Zammad 部署及使用_elasticsearch_10

6.5统计报告

适用于中小企业的开源工单系统 Zammad 部署及使用_依赖关系_11

更详细的介绍,请看在线文档:

 https://docs.zammad.org/en/latest/

 https://admin-docs.zammad.org/en/latest/

适用于中小企业的开源工单系统 Zammad 部署及使用_elasticsearch_12