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

  • Vultr VPS安装osTicket免费开源客户支持系统(基于CentOS 7系统)已关闭评论
  • A+
所属分类:新手教程

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

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

先决条件

一台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 美元