本页内容
- 准备工作
- 安装依赖项
- 配置依赖项:配置 PostgreSQL、配置 Elasticsearch、配置默认区域设置、配置 UFW
- 安装 Zammad 客户支持系统
- 配置 Nginx Web 服务器
- 保护 Zammad 安全
- 安装 Zammad
- 总结
- 配置 PostgreSQL
- 配置 Elasticsearch
- 配置默认区域设置
- 配置 UFW
Zammad 是一款开源的客户支持/工单系统,可帮助管理通过电子邮件、聊天和社交媒体等多种渠道的沟通。
在本指南中,您将学习如何在 Debian 12 服务器上安装基于 PostgreSQL 和 Nginx 的 Zammad 客户支持系统。您还将把 Zammad 与 Elasticsearch 和 Redis 集成,敬请关注。
准备工作
在继续之前,请确保您已做好以下准备:
- 一台内存为 4GB 或更大的 Debian 12 服务器。
- 一个具有管理员权限的非 root 用户。
- 一个已指向服务器 IP 地址的域名。
安装依赖项
第一步,您需要为 Zammad 客户支持系统安装软件包依赖项。包括以下软件包:
- Elasticsearch
- PostgreSQL 数据库服务器
- Redis
- Nginx Web 服务器
- Node.js
- UFW
您将在 Debian 服务器上安装这些软件包。
首先,运行以下命令安装用于管理软件源的基础软件包。输入 y 确认安装。
sudo apt install curl apt-transport-https gnupg

现在运行以下命令,将 Elasticsearch 7.x 软件源添加到您的 Debian 12 服务器。
echo "deb [signed-by=/etc/apt/trusted.gpg.d/elasticsearch.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main"| \
tee -a /etc/apt/sources.list.d/elastic-7.x.list > /dev/null
然后使用以下命令添加 Elasticsearch 软件源的 GPG 密钥。
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | \
gpg --dearmor | tee /etc/apt/trusted.gpg.d/elasticsearch.gpg> /dev/null
接下来,使用以下命令更新您的 Debian 软件源。
sudo apt update

软件源更新完成后,使用以下命令安装 Zammad 的依赖项。输入 Y 确认安装。
sudo apt install libimlib2 elasticsearch postgresql postgresql-common redis-server nginx nodejs locales ufw

所有组件安装完成后,请逐个验证各项服务,确保其处于运行并已启用状态。
使用以下命令验证 PostgreSQL 服务器。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
如下图所示,PostgreSQL 正在运行且已启用。

使用以下命令验证 Redis 服务器。
sudo systemctl is-enabled redis
sudo systemctl status redis
如下图所示,Redis 正在运行。

现在使用以下命令验证 Nginx。
sudo systemctl is-enabled nginx
sudo systemctl status nginx
Nginx Web 服务器应如下图所示处于运行且已启用状态:

最后,运行以下命令启动并启用 Elasticsearch。
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
然后使用以下命令进行验证。您应该会看到 Elasticsearch 正在运行且已启用。
sudo systemctl status elasticsearch

配置依赖项
安装完 Zammad 的软件包依赖项后,下一步是配置 Zammad 的各项依赖。您将配置以下内容:
- PostgreSQL:将默认的 max_connections 增大到 2000。
- Elasticsearch:安装 Zammad 所需的 ingest-attachment 插件。
- 将默认区域设置配置为 en_US.UTF-8
- UFW:启动并启用,开放 SSH、HTTP 和 HTTPS 端口。
配置 PostgreSQL
使用以下 nano 编辑器命令打开 PostgreSQL 的默认配置文件 /etc/postgresql/15/main/postgresql.conf。
sudo nano /etc/postgresql/15/main/postgresql.conf
将 PostgreSQL 中默认的 max_connections 修改为 2000,这是 Zammad 的要求。
max_connections = 2000
保存文件并退出编辑器。
现在运行以下 systemctl 命令以重启 PostgreSQL 并应用更改,
sudo systemctl restart postgresql
配置 Elasticsearch
配置完 PostgreSQL 后,我们来设置 Elasticsearch。
使用以下 elasticsearch-plugin 命令为 Zammad 安装 ingest-attachment 插件。
/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
输入 y 确认安装。完成后,您将看到以下内容。

现在使用以下命令重启 Elasticsearch。
sudo systemctl restart elasticsearch
最后,使用 curl 验证 Elasticsearch 是否正在运行。
curl -X GET 'http://localhost:9200'
如下图所示,Elasticsearch 正在 Debian 服务器上运行。

配置默认区域设置
为了让 Zammad 正常运行,您需要将默认区域设置配置为 en_US.UTF-8。
运行以下命令生成 en_US.UTF-8 区域设置。
locale-gen en_US.UTF-8
然后通过向 /etc/default/locale 文件添加新配置,将默认区域设置设为 en_US.UTF-8。
echo "LANG=en_US.UTF-8" > /etc/default/locale

配置 UFW
现在运行以下 ufw 命令以启用 OpenSSH 和 WWW Full 配置文件。
sudo ufw allow OpenSSH
sudo ufw allow "WWW Full"
然后使用以下命令启用 UFW。输入 y 确认并启动 UFW。
sudo ufw enable
启用后,您将看到以下内容:

UFW 启用后,运行以下命令进行验证。
sudo ufw status
您可以看到 UFW 状态为 Active,且已启用 OpenSSH 和 WWW Full 配置文件。

安装 Zammad 客户支持系统
至此,您已完成 Zammad 依赖项的安装与配置。现在开始安装 Zammad,安装方式有多种。最简单的方法是使用官方 Zammad 软件源中的软件包。
运行以下命令添加 Zammad 软件源的 GPG 密钥。
curl -fsSL https://dl.packager.io/srv/zammad/zammad/key | \
gpg --dearmor | tee /etc/apt/trusted.gpg.d/pkgr-zammad.gpg> /dev/null
现在使用以下命令添加适用于 Debian 12 的 Zammad 软件源。
echo "deb [signed-by=/etc/apt/trusted.gpg.d/pkgr-zammad.gpg] https://dl.packager.io/srv/deb/zammad/zammad/stable/debian 12 main"| \
tee /etc/apt/sources.list.d/zammad.list > /dev/null
使用以下命令更新并刷新您的 Debian 软件源。
sudo apt update

软件源更新完成后,使用以下命令安装 Zammad。
sudo apt install zammad
以下是 Zammad 的安装过程:

在安装过程中,会创建 PostgreSQL 数据库和用户,并执行数据库迁移。

同时,会创建 Nginx 的 server block(虚拟主机)配置。

安装完成后,运行以下 zammad 命令以设置与 Elasticsearch 的集成,并重建 Elasticsearch 中的搜索索引。
zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
zammad run rake zammad:searchindex:rebuild

然后,运行以下命令重启 Zammad 服务。Zammad 包含多个服务,包括 zammad、zammad-web、zammad-worker 和 zammad-websocket。
sudo systemctl restart zammad
sudo systemctl restart zammad-web
sudo systemctl restart zammad-worker
sudo systemctl restart zammad-websocket
最后,运行以下命令验证 Zammad 服务状态。
sudo systemctl is-enabled zammad
sudo systemctl status zammad
如下图所示,Zammad 服务正在 Debian 服务器上运行且已启用。

配置 Nginx Web 服务器
默认情况下,Zammad 会生成位于 /etc/nginx/sites-available/zammad.conf 的 Nginx server block 配置。要在生产环境中部署 Zammad,您必须修改域名配置。同时,生产环境还必须启用 HTTPS 进行安全加固。
现在使用以下 nano 编辑器命令打开文件 /etc/nginx/sites-available/zammad.conf。
sudo nano /etc/nginx/sites-available/zammad.conf
按如下方式修改 server_name 选项中的默认域名:
server_name help.howtoforge.local;
保存并退出文件。
接下来,运行以下命令检查 Nginx 配置语法,并重启 Nginx 服务使之生效。
sudo nginx -t
sudo systemctl restart nginx
如下图所示,Nginx 语法检查通过。

保护 Zammad 安全
如果您在生产环境部署,请确保通过 Let's Encrypt 启用 HTTPS。
使用以下命令安装 certbot 和 certbot nginx 插件。输入 y 确认安装。
sudo apt install certbot python3-certbot-nginx
安装完成后,使用以下 certbot 命令为您的 Zammad 域名生成 SSL/TLS 证书。请务必修改命令中的域名和电子邮件地址信息。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email
[email protected]
-d help.howtoforge.local
生成过程将开始运行。完成后,您的 SSL 证书将位于 /etc/letsencrypt/live/domain.com 目录中。
安装 Zammad
打开您的 Web 浏览器并访问 Zammad 安装地址(http://help.howtoforge.local)。点击“Set up a new system(搭建新系统)”以开始安装。

现在输入管理员用户、电子邮件和密码的详细信息。然后点击 Create(创建)确认。

输入您的组织名称,然后点击 Next(下一步)。

对于邮件通知,点击 Skip for now(暂时跳过)。您可以稍后再配置。

点击 Skip(跳过)以跳过连接渠道配置。配置完成后也可以稍后进行此操作。

流程完成后,您将看到如下所示的 Zammad 管理后台:

总结
恭喜!您已成功在 Debian 12 服务器上安装了 Zammad 客户支持系统。您安装了基于 PostgreSQL 数据库后端、Nginx Web 服务器、以 Elasticsearch 作为主搜索引擎、以 Redis 进行缓存和会话管理的 Zammad。此外,您还学习了如何通过 Certbot 和 Let's Encrypt 为 Zammad 启用 HTTPS。