本页内容

  • 准备工作
  • 安装依赖项
  • 安装 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 确认并继续。

在 Rocky Linux 9 上安装 Zammad 客服支持系统

安装完成后,运行以下命令初始化 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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

安装 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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

安装完成后,使用以下命令为 Elasticsearch 安装 ingest-attachment 插件。

/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment

输入 y 确认安装。

在 Rocky Linux 9 上安装 Zammad 客服支持系统

现在使用以下命令重新加载 systemd 管理器并启动 elasticsearch 服务。

sudo systemctl daemon-reload
sudo systemctl start elasticsearch

启动后,使用以下 curl 命令检查 Elasticsearch。如果安装成功,你将看到 Elasticsearch 版本的详细信息。

curl -X GET 'http://localhost:9200'

在 Rocky Linux 9 上安装 Zammad 客服支持系统

提高 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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

安装 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

在 Rocky Linux 9 上安装 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 的所有服务都在正常运行。

在 Rocky Linux 9 上安装 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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

至此,你的 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。

在 Rocky Linux 9 上安装 Zammad 客服支持系统

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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

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

在 Rocky Linux 9 上安装 Zammad 客服支持系统

总结

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