雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

在 Rocky 8 上安装 Zammad 票务系统 | CentOS 8

2024-07-28 43

每个拥有客户支持的企业都需要一个票务和客户支持系统来保证业务顺利运营。为此可以选择商业和开源软件解决方案。 Zammad 是最好的开源票务和客户支持系统之一,它允许您通过各种渠道(例如社交媒体、电子邮件、电话和集中式 Web 仪表板聊天)管理客户通信。

Zammad 软件解决方案的一些主要功能包括:

  • 客票管理
  • 操作方法、常见问题解答、内部 SOP 的知识库
  • IT资产管理
  • 工作流程自动化
  • 监控、报告和分析
  • 支持多种通讯渠道
  • 与许多协作工具集成
  • 收集客户反馈
  • 服务水平协议 (SLA) 管理
  • 呼叫中心管理
  • 电子邮件模板
  • 实时通知
  • 自助服务门户
  • 阿蒙还有很多其他人

在这个简短的教程中,您将学习如何在 Rocky 8 或 CentOS 8 Linux 系统上安装、配置和使用 Zammad 票务系统。

添加 EPEL 存储库

所需的一些依赖包包含在 EPEL 存储库中。您可以通过在系统上运行以下命令来配置系统上的存储库。

sudo dnf install wget epel-release

还将区域设置设置为您的语言。

sudo localectl set-locale LANG=en_US.utf8

安装Elasticsearch

将 elasticsearch GPG 密钥导入到您的系统存储中。

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

将 Elasticsearch 存储库添加到系统中。

sudo tee /etc/yum.repos.d/elasticsearch-7.x.repo<<EOF
[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
EOF

通过在终端中执行以下命令来安装 elasticsearch 包。

sudo dnf -y install elasticsearch

打开配置文件进行编辑

sudo vim /etc/elasticsearch/elasticsearch.yml

自定义 http.max_content_lengthindices.query.bool.max_clause_count 值。

# Tickets above this size (articles + attachments + metadata)
# may fail to be properly indexed (Default: 100mb).
#
# When Zammad sends tickets to Elasticsearch for indexing,
# it bundles together all the data on each individual ticket
# and issues a single HTTP request for it.
# Payloads exceeding this threshold will be truncated.
#
# Performance may suffer if it is set too high.
http.max_content_length: 400mb

# Allows the engine to generate larger (more complex) search queries.
# Elasticsearch will raise an error or deprecation notice if this value is too low,
# but setting it too high can overload system resources (Default: 1024).
#
# Available in version 6.6+ only.
indices.query.bool.max_clause_count: 2000

启动并启用该服务在系统引导时启动。

sudo systemctl enable --now elasticsearch

为elasticsearch安装ingest-attachment插件。

$ sudo /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

更改后重新启动服务。

sudo systemctl restart elasticsearch

在 Rocky/CentOS 8 上安装 Zammad

导入 Zammad 存储库密钥

sudo rpm --import https://dl.packager.io/srv/zammad/zammad/key

然后添加 Zammad RPM 存储库,其中包含所需的软件包

wget https://dl.packager.io/srv/zammad/zammad/stable/installer/el/8.repo -O zammad.repo 
sudo mv zammad.repo  /etc/yum.repos.d/

使用 yum 或 dnf 包管理器安装 Zammad。

sudo dnf -y install zammad

启动并启用服务。

sudo systemctl enable --now zammad zammad-web zammad-worker zammad-websocket

设置数据的目录权限

sudo chmod -R 755 /opt/zammad/public/

如果 SELinux 处于强制模式,请配置标签。

sudo chcon -Rv --type=httpd_sys_content_t /opt/zammad/public/
sudo setsebool httpd_can_network_connect on -P
sudo semanage fcontext -a -t httpd_sys_content_t /opt/zammad/public/
sudo restorecon -Rv /opt/zammad/public/
sudo chmod -R a+r /opt/zammad/public/

打开防火墙上的端口 80 或端口 443(如果处于活动状态)。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

一般来说,Zammad 使用三种服务 – 这些服务可以通过父 zammad 来(重新)启动和停止。

$ Zammad service to start all services at once
$ systemctl (status|start|stop|restart) zammad

$ # Zammads internal puma server (relevant for displaying the web app)
$ systemctl (status|start|stop|restart) zammad-web

$ # Zammads background worker - relevant for all delayed- and background jobs
$ systemctl (status|start|stop|restart) zammad-worker

$ # Zammads websocket server for session related information
$ systemctl (status|start|stop|restart) zammad-websocket

检查服务是否正在运行。

$ systemctl status zammad zammad-web zammad-worker zammad-websocket
 zammad.service
   Loaded: loaded (/etc/systemd/system/zammad.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6807 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 172.0K
   CGroup: /system.slice/zammad.service
           └─6807 /bin/sleep infinity

Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad.service.

 zammad-web.service
   Loaded: loaded (/etc/systemd/system/zammad-web.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6810 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 172.0K
   CGroup: /system.slice/zammad-web.service
           └─6810 /bin/sleep infinity

Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad-web.service.

 zammad-worker.service
   Loaded: loaded (/etc/systemd/system/zammad-worker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6808 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 172.0K
   CGroup: /system.slice/zammad-worker.service
           └─6808 /bin/sleep infinity

Mar 14 22:36:35 webhosting.cloudspinx.com systemd[1]: Started zammad-worker.service.

 zammad-websocket.service
   Loaded: loaded (/etc/systemd/system/zammad-websocket.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-14 22:36:35 EAT; 1min 14s ago
 Main PID: 6812 (sleep)
    Tasks: 1 (limit: 49026)
   Memory: 176.0K
   CGroup: /system.slice/zammad-websocket.service
           └─6812 /bin/sleep infinity

Mar 14 22:36:35 webhosting.example.com systemd[1]: Started zammad-websocket.service.

使用 zammad 命令设置 Elasticsearch 服务器地址。

zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"

使用 Zammad 之前构建搜索索引。

$ zammad run rake zammad:searchindex:rebuild
Dropping indexes... done.
Deleting pipeline... done.
Creating indexes... done.
Creating pipeline... done.
Reloading data...
  - Chat::Session...
    done in 0 seconds.
  - Cti::Log...
    done in 0 seconds.
  - Group...
    done in 0 seconds.
  - KnowledgeBase::Answer::Translation...
    done in 0 seconds.
  - KnowledgeBase::Category::Translation...
    done in 0 seconds.
  - KnowledgeBase::Translation...
    done in 0 seconds.
  - Organization...
    done in 0 seconds.
  - StatsStore...
    done in 0 seconds.
  - Ticket::Priority...
    done in 0 seconds.
  - Ticket::State...
    done in 0 seconds.
  - Ticket...
    done in 0 seconds.
  - User...
    done in 0 seconds.

可以通过将 es_ssl_verify 设置为 false 来停用 SSL 验证。

zammad run rails r "Setting.set('es_ssl_verify', false)"

配置 Nginx 代理

确保已安装 nginx。

sudo dnf -y install nginx && sudo systemctl enable --now nginx

通过复制配置文件来配置 Web 服务器

$ sudo find / -name zammad.conf
/etc/nginx/conf.d/zammad.conf
/opt/zammad/contrib/apache2/zammad.conf
/opt/zammad/contrib/nginx/zammad.conf

编辑并设置正确的 DNS 名称以匹配 DNS 名称。

$ sudo vim /etc/nginx/conf.d/zammad.conf
  # replace 'localhost' with your fqdn if you want to use zammad from remote
   server_name tickets.cloudspinx.com;

确认 Nginx 索引。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重新启动 nginx Web 服务器服务。

sudo systemctl restart nginx

访问 Zammad 网页界面

使用配置的主机名 - http://yourfqdn 在网络浏览器上访问 Zammad。选择“设置新系统”。

输入您的组织名称并上传您的公司徽标。

确认徽标已上传并且可见。

接下来,您可以为外发电子邮件配置 SMTP 或选择稍后进行设置。

本地 MTA 可用于电子邮件传送。

设置要使用的通信通道或跳过以后的配置。

在下一页中,您应该看到 Zammad 管理界面。

使用 Let’s Encrypt 证书保护 Zammad

Let’s Encrypt 是一个免费的 SSL 证书,可用于您的网站 HTTPS 访问。安装证书机器人。

sudo dnf -y install epel-release
sudo dnf -y install certbot python3-certbot python3-certbot-nginx

设置将接收证书过期警报的 Zammad 域名和电子邮件。

export DOMAIN="tickets.example.com"
export ALERTS_EMAIL="alerts.example.com"

生成 SSL 证书并配置 nginx 以使用它们。

sudo certbot --nginx --redirect -d $DOMAIN --preferred-challenges http --agree-tos -n -m $ALERTS_EMAIL --keep-until-expiring

从 Zammad 文档页面了解更多信息。


更新于:1个月前
赞一波!2

文章评论

全部评论