站长视角
用户至上

如何在Vultr云主机CentOS 7上安装osTicket免费开源客户支持系统

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

Vultr官网

[qgg_yellow]点击直达Vultr官方网站[/qgg_yellow]

vultr最新优惠码

vultr长期针对新用户有促销活动,目前新用户注册最高送103美元,如果你是新用户可以考虑通过下面链接注册,最高可以获得103美元的免费使用额度。目前vultr已经支持支付宝充值购买,但是如果要参与下面活动,必须使用PayPal、信用卡完成首次充值才有额度赠送哦。

  • 赠送100美元:点击直达(必须通过此地址注册才有送,用户必须活跃30天以上,并且使用至少25美元)
  • 赠送50美元:点击直达(必须通过此地址注册才有送,用户必须活跃30天以上,并且使用至少25美元)
  • 赠送10美元:点击直达(必须通过此地址注册才有送,必须活跃30天以上,并且使用至少10美元)
  • 完成推特任务送3美元教程:Vultr完成三项Twitter任务即可免费获得3美元使用额度(可以叠加上面活动,每个账号可以参与一次,赠送金额使用期限应该是1年 以上。)

先决条件

  • 一台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端口侦听地址。

搜索以下设置,然后:

  1. [www]替换为[osticket]
  2. user = apache替换为user = osticket
  3. group = osticket替换group = apache
  4. /var/log/php-fpm/www-error.log替换为/var/log/fpm-php/osticket/error.log
  5. /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]问题,按YENTER设置root密码。

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

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

完成后,以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 安装程序屏幕

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

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

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

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 文档的安装后设置指南

赞(2)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权, 转载请注明出处。
文章名称:《如何在Vultr云主机CentOS 7上安装osTicket免费开源客户支持系统》
文章链接:https://www.veidc.com/17170.html
【声明】:国外主机测评仅分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问国外主机测评,即表示您已经知晓并接受了此声明通告。
【关于安全】:任何 IDC商家都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。