本页内容
- 准备工作
- 安装依赖项
- 安装 Elasticsearch
- 提高 PostgreSQL 的最大连接数
- 配置 Firewalld 防火墙
- 安装 Zammad 客服支持系统
- 将 Nginx 配置为反向代理
- 使用 HTTPS 保护 Zammad
- 完成 Zammad 安装配置
- 总结
Zammad 是一款基于 Ruby 和 PostgreSQL 的开源客服/工单解决方案,能够帮助组织统一管理来自各类电子邮件、在线聊天以及社交媒体渠道的沟通信息。
在本指南中,你将学习如何在 Rocky Linux 服务器上安装 Zammad 工单系统。你将使用 PostgreSQL、Nginx 和 Elasticsearch 来运行 Zammad。
准备工作
在开始之前,请确保你已具备以下条件:
- 一台 Rocky Linux 9 服务器。
- 一个具备管理员权限的非 root 用户。
- 一个已解析到服务器 IP 地址的域名。
- SELinux 处于 permissive(宽松)状态。
安装依赖项
在本节中,你将安装 Zammad 所需的依赖项,包括 EPEL 软件仓库、PostgreSQL 数据库、Nginx 网页服务器、Redis 以及 Node.js。
首先,通过以下命令将 EPEL 软件仓库添加到你的 Rocky Linux 系统。
sudo dnf install epel-release -y
现在使用以下命令将默认语言环境设置为 en_US.UTF-8。
sudo localectl set-locale LC_CTYPE=en_US.UTF-8
现在运行以下命令,启用 Node.js 18 版本的软件仓库。
sudo dnf module enable nodejs:18 -y
接下来,运行以下 dnf 命令安装 Zammad 的依赖项,包括 Nginx、PostgreSQL、Redis 和 Node.js。
sudo dnf install imlib2 nginx postgresql-server postgresql-contrib libpq-devel redis nodejs
输入 y 确认并继续。

安装完成后,运行以下命令初始化 PostgreSQL 服务器。
sudo postgresql-setup initdb
使用以下命令启动并设置 Nginx、PostgreSQL 和 Redis 开机自启。
sudo systemctl start nginx postgresql redis
sudo systemctl enable nginx postgresql redis
最后,使用以下命令检查 Node.js 版本,确保已安装 Node.js 18.0 及以上版本。
node --version

安装 Elasticsearch
安装完依赖项后,你还需要安装 Elasticsearch。在本节中,你将安装适用于 Zammad 的 Elasticsearch 7.x 版本。
现在运行以下命令,添加 Elasticsearch 软件仓库的 GPG 密钥。
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
使用以下命令为 Rocky Linux 服务器添加 Elasticsearch 软件仓库。
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 安装到系统中。输入 y 确认安装,并在提示时接受 GPG 密钥。
sudo dnf install elasticsearch

安装完成后,使用以下命令为 Elasticsearch 安装 ingest-attachment 插件。
/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
输入 y 确认安装。

现在使用以下命令重新加载 systemd 管理器并启动 elasticsearch 服务。
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
启动后,使用以下 curl 命令检查 Elasticsearch。如果安装成功,你将看到 Elasticsearch 版本的详细信息。
curl -X GET 'http://localhost:9200'

提高 PostgreSQL 的最大连接数
对于 PostgreSQL,你需要在 postgresql.conf 文件中提高默认的 max_connections 值,这是 Zammad 所必需的。
因此,使用以下命令以 postgres 用户身份登录。
su - postgres
使用 nano 编辑器打开 PostgreSQL 的配置文件 data/postgresql.conf。
nano data/postgresql.conf
将默认的 max_connections 修改为 2000,如下所示:
max_connections = 2000
保存文件并退出。
现在运行以下 systemctl 命令重启 PostgreSQL 服务以使修改生效。
sudo systemctl restart postgresql
配置 Firewalld 防火墙
默认情况下,Rocky Linux 已启用 firewalld。因此,现在你需要放行 HTTP 和 HTTPS 服务,以允许访问 Zammad 的流量。
使用以下命令将 HTTP 和 HTTPS 服务添加到 firewalld。
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
现在重新加载 firewalld,以应用针对 HTTP 和 HTTPS 的新规则。
sudo firewall-cmd --reload
使用以下命令查看 firewalld 的规则列表。你将看到 HTTP 和 HTTPS 服务均已出现在 firewalld 中。
sudo firewall-cmd --list-all

安装 Zammad 客服支持系统
依赖项已安装并配置完成后,你就可以开始安装 Zammad 了,可通过 DNF 软件包管理器完成。
使用以下命令添加 Zammad 软件仓库的 GPG 密钥。
sudo rpm --import https://dl.packager.io/srv/zammad/zammad/key
现在使用以下命令将 Zammad 软件仓库添加到你的 Rocky Linux 服务器。
sudo wget -O /etc/yum.repos.d/zammad.repo \
https://dl.packager.io/srv/zammad/zammad/develop/installer/el/9.repo
接下来,使用以下 dnf 命令安装 zammad。当系统提示时,输入 y 以确认 GPG 密钥并继续 Zammad 的安装。
sudo dnf install zammad

安装完成后,运行以下命令检查 Zammad 的各项服务,包括 zammad、zammad-web、zammad-worker 和 zammad-websocket。
sudo systemctl status zammad
sudo systemctl status zammad-web
sudo systemctl status zammad-worker
sudo systemctl status zammad-websocket
请确保 Zammad 的所有服务都在正常运行。

最后,运行以下命令配置 Zammad 与 Elasticsearch 之间的集成。
zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
zammad run rake zammad:searchindex:rebuild
命令执行后,将为 Zammad 创建相应的 Elasticsearch 索引。
将 Nginx 配置为反向代理
已安装 Zammad 后,你需要将 Nginx 配置为反向代理。默认情况下,Zammad 在 /opt/zammad/contrib 目录中提供了一个示例配置文件。
将 Zammad 的 Nginx 配置文件复制到 /etc/nginx/conf.d/zammad.conf,并使用 nano 编辑器打开它。
cp /opt/zammad/contrib/nginx/zammad.conf /etc/nginx/conf.d/zammad.conf
sudo nano /etc/nginx/conf.d/zammad.conf
在 server_name 选项中,将其修改为你自己的域名。
server_name zammad.howtoforge.local;
保存并退出文件。
现在检查 Nginx 配置,确保语法正确。如果成功,你将看到 “syntax is ok” 的输出。
sudo nginx -t
最后,运行以下命令重启 Nginx 服务,以应用为 Zammad 新增的 server 配置块。
sudo systemctl restart nginx

至此,你的 Zammad 安装应该已经完成并可以访问了。
使用 HTTPS 保护 Zammad
Nginx 配置完成后,我们来通过 SSL/TLS 证书保护 Zammad。你将安装 Certbot,并利用 Let's Encrypt 的 certbot 生成 SSL 证书。
使用以下 dnf 命令安装 Certbot 和 Nginx 插件。输入 y 确认安装。
sudo dnf install certbot python3-certbot-nginx
安装完成后,运行以下 certbot 命令生成 SSL/TLS 证书并保护你的 Zammad 安装。请务必将邮箱地址和域名替换为你自己的信息。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email
[email protected]
-d zammad.howtoforge.local
完成后,你的 SSL/TLS 证书将存放在 /etc/letsencrypt/live/domain.com 目录中,Zammad 也会自动通过 HTTPS 受到保护。
完成 Zammad 安装配置
打开网页浏览器并访问 https://zammad.hwomdian.io/。如果安装成功,你将看到如下提示:
点击 “Setup a new system(搭建新系统)” 开始配置 Zammad。

输入 Zammad 管理员用户的详细信息与密码,然后点击 “Create(创建)”。

输入你的组织名称、上传组织 Logo,然后点击 “Next(下一步)” 继续。

对于邮件设置,点击 “Skip(跳过)” 即可。你可以在安装完成后再进行配置。

现在你将看到如下所示的 Zammad 仪表盘。

总结
恭喜!你已成功在 Rocky Linux 9 服务器上完成 Zammad 工单系统的安装。此时你的 Zammad 运行在 PostgreSQL 数据库之上,以 Nginx 作为反向代理,配合 Elasticsearch,并通过 Certbot 启用了 HTTPS 保护。