Vultr VPS安装osTicket免费开源客户支持系统(基于CentOS 7系统)

osTicket是一个广泛使用。它将通过电子邮件,电话和基于Web的表单创建的查询无缝集成到一个简单易用的多用户Web界面中。本教程详细的介绍了如何在 CentOS 7 上安装 osTicket 并使用免费的 Let’s Encrypt TLS 证书设置 HTTPS的过程。

先决条件

一台CentOS的7服务器,禁用SELinux。
按照 Vultr 的最佳指南创建 sudo 用户并更新 CentOS 服务器。

本教程假设您拥有一个域名,例如example.com,并且您已将其指向服务器 IP 地址。如果没有,请将example.com替换为服务器 IP 地址。

确保将代码示例中的example.com替换为您的域名或 IP 地址。

1. 安装 PHP 7.4

CentOS 7 在其官方存储库中提供了 PHP 5.4 版,但 osTicket 不支持该版本。osTicket 推荐的 PHP 版本是 7.4。您可以从 Remi 的 RPM 存储库安装 7.4 版,这是一个长期且受社区信任的 CentOS 存储库。

以非root sudo 用户通过SSH 登录服务器,然后安装Remi 的RPM 仓库配置包。

$ sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm

安装yum-utils包以配置存储库。

$ sudo yum -y install yum-utils

启用 Remi 的 RPM 存储库。

$ sudo yum-config-manager –disable ‘remi-php*’
$ sudo yum-config-manager –enable remi-php74

安装 PHP-FPM 和其他必要的 PHP 扩展。

$ sudo yum install -y php-cli php-fpm php-gd php-gettext php-imap php-intl php-json php-mbstring php-xml php-apcu php-mysqli php-opcache

启用 PHP-FPM 服务,以便 PHP-FPM 在启动时运行。

$ sudo systemctl enable php-fpm.service

列出您的 CentOS 系统支持的所有时区。使用UP/DOWN键在列表中移动,然后按Q退出。

$ timedatectl list-timezones

从列表中选择合适的时区,例如America/New_York。然后使用该时区更新您的 CentOS 系统。

$ sudo timedatectl set-timezone America/New_York

打开主要的 PHP 配置文件。

$ sudo nano /etc/php.ini

找到该行;date.timezone =并将其替换为date.timezone = America/New_York。然后保存配置文件并退出。

为了增强服务器的安全性,请osticket为 osTicket创建一个名为PHP-FPM 进程的用户/组的专用用户。该用户还拥有 osTicket 源代码文件。

$ sudo adduser osticket

每次要添加、删除或更新源代码文件时,都需要切换到该用户。

从默认配置文件创建 PHP-FPM 配置文件。

$ sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/osticket.conf

重命名默认文件以禁用它并将其保留为备份。

$ sudo mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.default

打开/etc/php-fpm.d/osticket.conf文件。

$ sudo nano /etc/php-fpm.d/osticket.conf

在配置文件中,任何以 开头的行;都是注释。

确保listen = 127.0.0.1:9000设置不是以开头的,;因为 PHP-FPM 进程127.0.0.1使用9000端口侦听地址。

搜索以下设置,然后:

将[www]替换为[osticket] 将user = apache替换为user = osticket
用group = osticket替换group = apache
将/var/log/php-fpm/www-error.log替换为/var/log/fpm-php/osticket/error.log
将/var/lib/php/session替换为/var/lib/php/session.osticket

保存配置文件并退出。

为避免弄乱默认文件夹,请创建一个名为/var/log/php-fpm/www-error.log存储日志消息的单独文件夹和一个名为/var/lib/php/session.osticket存储会话数据的文件夹。

$ sudo mkdir -p /var/log/fpm-php/osticket
$ sudo mkdir -p /var/lib/php/session.osticket

更新两个文件夹的所有权和权限,以便只有 osTicket 的 PHP-FPM 进程可以写入它们。

$ sudo chown osticket:osticket /var/log/fpm-php/osticket
$ sudo chmod 700 /var/log/fpm-php/osticket
$ sudo chown osticket:osticket /var/lib/php/session.osticket
$ sudo chmod 700 /var/lib/php/session.osticket

检查新配置。

$ sudo php-fpm -t

启动 PHP-FPM 服务。

$ sudo systemctl start php-fpm.service

2. 安装 MariaDB 5.5

尽管 CentOS 7 的存储库中不包含 MySQL,但它包含 MariaDB 5.5,这是 MySQL 5.5 的直接替代品。由于 osTicket 支持 MySQL 5.5,因此您可以为 osTicket 安装 MariaDB 5.5。

$ sudo yum install -y mariadb-server

启用 MariaDB 服务,以便 MariaDB 在启动时运行。

$ sudo systemctl enable mariadb.service

启动 MariaDB 服务。

$ sudo systemctl start mariadb.service

运行mysql_secure_installation脚本以提高安全性并为 MariaDBroot用户设置密码。

$ sudo mysql_secure_installation

对于Enter current password for root (enter for none):问题,只需按,ENTER因为您尚未为root用户设置密码。

对于Set root password? [Y/n]问题,按Y和ENTER设置root密码。

出现提示时输入两次强密码。您可以使用KeePassXC等免费密码管理器或Random Password Generator等在线工具来生成强密码。

对于任何剩余问题,请按Y和ENTER以接受推荐的选项。

完成后,以root用户身份连接到 MariaDB 命令行。

$ sudo mysql -u root -p

为 osTicket创建一个名为osticket的 MariaDB 数据库。

MariaDB [(none)]> CREATE DATABASE osticket CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

为 osTicket创建一个名为osticket的 MariaDB 用户。更换密码使用强密码。

MariaDB [(none)]> CREATE USER ‘osticket’@’localhost’ IDENTIFIED BY ‘password’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osticket.* TO ‘osticket’@’localhost’;
MariaDB [(none)]> FLUSH PRIVILEGES;

退出 MariaDB 命令行。

MariaDB [(none)]> exit

3.安装osTicket
下载源代码

创建一个文件夹来存储 osTicket 源代码。

$ sudo mkdir -p /var/www/osticket

设置osticket为源代码文件夹的所有者。

$ sudo chown osticket:osticket /var/www/osticket

安装 git 包,因为您将使用它来下载 osTicket 源代码。

$ sudo yum install -y git

切换到osticket用户下载并配置osTicket。

$ sudo su osticket

下载最新的 osTicket。

$ cd ~ && git clone https://github.com/osTicket/osTicket

将代码部署到/var/www/osticket您在上面创建的文件夹中。

$ cd osTicket
$ php manage.php deploy –setup /var/www/osticket

从示例文件创建配置文件。

$ cp /var/www/osticket/include/ost-sampleconfig.php /var/www/osticket/include/ost-config.php

切换回 sudo 用户以继续设置。

$ exit

4. 安装 Nginx

使用以下命令安装 Nginx。

$ sudo yum install -y nginx

启用 Nginx 服务,以便 Nginx 在启动时运行。

$ sudo systemctl enable nginx.service

为 osTicket 创建一个新的配置文件。

$ sudo nano /etc/nginx/conf.d/osticket-http.conf

粘贴以下内容:

server {
listen 80;
listen [::]:80;

server_name example.com;

root /var/www/osticket;
index index.php index.html;

location ~ ^/include/ {
deny all;
}

# Pass the PHP script to the FastCGI server listening on 127.0.0.1:9000
# Reference: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;

if (!-f $document_root$fastcgi_script_name) {
rewrite ^/api/(.+) /api/http.php/$1 break;
rewrite ^/apps/(.+) /apps/dispatcher.php/$1 break;
rewrite ^/scp/apps/(.+) /scp/apps/dispatcher.php/$1 break;
rewrite ^/pages/(.+) /pages/index.php/$1 break;

return 404;
}

# Mitigate https://httpoxy.org/ vulnerabilities
fastcgi_param HTTP_PROXY “”;

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;

fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
}

location ~ ^/(api|apps|pages|scp/apps)/(.+) {
try_files $uri $uri/ @rewrite_rules;
}

location @rewrite_rules {
rewrite ^/api/(.+) /api/http.php/$1 last;
rewrite ^/apps/(.+) /apps/dispatcher.php/$1 last;
rewrite ^/scp/apps/(.+) /scp/apps/dispatcher.php/$1 last;
rewrite ^/pages/(.+) /pages/index.php/$1 last;
}
}

保存配置文件并退出。然后检查新配置。

$ sudo nginx -t

启动 Nginx 服务。

$ sudo systemctl start nginx.service

更新防火墙以允许传入的 HTTP 请求。

$ sudo firewall-cmd –permanent –zone=public –add-service=http

重新加载当前的防火墙会话。

$ sudo firewall-cmd –reload

5.(可选)配置HTTPS

如果您拥有有效的域名,则可以免费为您的 osTicket 设置 HTTPS。使用 Certbot 程序,您可以从证书颁发机构 Let’s Encrypt 获得免费的 TLS 证书。
使用 Snap 安装 Certbot

Snap Store 是一个拥有数百万用户的 Linux 应用程序商店。它可以轻松获取具有自动证书续订等功能的最新版本的 Certbot。提供使用 Snap Store 所需的一切的包是snapd。

安装 snapd 包。

$ sudo yum install snapd -y

启用 snapd 服务。

$ sudo systemctl enable –now snapd.socket

启用经典快照支持。

$ sudo ln -s /var/lib/snapd/snap /snap

获取最新版本的 snapd 核心。

$ sudo snap install core && sudo snap refresh core

如果出现以下错误,请不要担心。

error: too early for operation, device not yet seeded or device model not acknowledged

安装 snapd 后,可能需要一些时间来初始化其环境。请稍等片刻,然后重试上述命令。

安装 Certbot。

$ sudo snap install –classic certbot

使certbot命令全局可用。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

获取 Let’s Encrypt 证书

重命名 HTTP 配置文件,使其成为 HTTPS 配置文件的模板。

$ sudo mv /etc/nginx/conf.d/osticket-http.conf /etc/nginx/conf.d/osticket-https.tpl

创建一个新的配置文件来处理 HTTP 请求。

$ sudo nano /etc/nginx/conf.d/osticket-http.conf

粘贴以下内容:

server {
listen 80;
listen [::]:80;

server_name example.com;

root /var/www/osticket;

location / {
return 301 https://$server_name$request_uri;
}

location /.well-known/acme-challenge/ {}
}

此配置使 Nginx 将所有 HTTP 请求(来自 Let’s Encrypt 的请求除外)重定向到相应的 HTTPS 请求。

保存配置文件并退出。然后检查Nginx配置。

$ sudo nginx -t

应用新配置。

$ sudo systemctl reload nginx.service

现在您可以运行以下命令来获取 Let’s Encrypt 证书。

$ sudo certbot certonly –webroot -w /var/www/osticket -d example.com -m admin@example.com –agree-tos

您可能需要回答有关与电子前沿基金会共享电子邮件的问题。

完成后,certbot告诉您证书文件和密钥文件的路径:

/etc/letsencrypt/live/example.com/fullchain.pem
/etc/letsencrypt/live/example.com/privkey.pem

位于同一文件夹中的另一个关键文件也是下一步所需的chain.pem.
使用 Nginx 安装证书

为 DHE 密码生成带有 DH 参数的文件。

$ sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048

2048是 DH 参数的推荐大小。此过程可能需要一段时间,请耐心等待。

从上面的模板文件创建 HTTPS 配置文件。

$ sudo mv /etc/nginx/conf.d/osticket-https.tpl /etc/nginx/conf.d/osticket-https.conf

打开 HTTPS 配置文件。

$ sudo nano /etc/nginx/conf.d/osticket-https.conf

找到以下几行:

listen 80;
listen [::]:80;

将它们替换为:

listen 443 ssl http2;
listen [::]:443 ssl http2;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions

# DH parameters file
ssl_dhparam /etc/nginx/dhparam.pem;

# intermediate configuration
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
#
# Uncomment the following line only if your website fully supports HTTPS
# and you have no intention of going back to HTTP, otherwise, it will
# break your site.
#
# add_header Strict-Transport-Security “max-age=63072000” always;

# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;

# verify chain of trust of OCSP response using Root CA and Intermediate certs
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

# Use Cloudflare DNS resolver
resolver 1.1.1.1;

保存配置文件并退出。然后检查Nginx配置。

$ sudo nginx -t

应用新配置。

$ sudo systemctl reload nginx.service

更新防火墙以允许传入的 HTTPS 请求。

$ sudo firewall-cmd –permanent –zone=public –add-service=https

重新加载当前的防火墙会话。

$ sudo firewall-cmd –reload

自动续订

Let’s Encrypt 证书的有效期为 90 天,因此您必须至少每三个月更新一次 TLS 证书。Certbot 安装自动创建了一个 systemd 计时器单元来自动执行此任务。运行以下命令以验证计时器是否处于活动状态。

$ sudo systemctl list-timers | grep ‘certbot\|ACTIVATES’

更新证书后,Certbot 不会自动重新加载 Nginx,因此 Nginx 仍然使用旧证书。您必须在/etc/letsencrypt/renewal-hooks/deploy文件夹内编写一个脚本来重新加载 Nginx。

打开你的文本编辑器。

$ sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

粘贴以下内容:

#!/bin/bash

/usr/bin/systemctl reload nginx.service

保存并退出。然后使脚本可执行。

$ sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

通过试运行测试更新过程。

$ sudo certbot renew –dry-run

6. 完成 osTicket 设置

重新启动服务器以确保它在之后仍然有效。

$ sudo reboot

等待系统启动,然后在浏览器中打开http://example.com链接。该osTicket安装程序出现,您将看到您的服务器的配置满足所有的最低要求。

单击继续按钮移至osTicket 基本安装。

用您的信息填写表格以更新系统设置并创建管理员用户。

对于Database Settings,在MySQL Database和MySQL Username字段中输入osticket,然后在MySQL Password字段中输入您在步骤 2 中创建的osticket用户的密码。

单击立即安装按钮以安装 osTicket。完成后,它会将您重定向到祝贺屏幕。

删除安装文件夹返回到您的 SSH 会话进行清理。

$ sudo rm -rf /var/www/osticket/setup

设置root为 osTicket 配置文件的所有者以防止 PHP-FPM 更改它。

$ sudo chown root:root /var/www/osticket/include/ost-config.php

您的 osTicket 网站现已准备就绪。您应该打开Staff Control Panel页面 https://example.com/scp/,以继续安装后设置。有关完整和最新的说明,请阅读osTicket 文档的安装后设置指南。

Vultr 新用户直送 50-100 美元活动再次开启,社交 转发再领 3 美元

未经允许不得转载:Vultr中文网 » Vultr VPS安装osTicket免费开源客户支持系统(基于CentOS 7系统)