本页内容

  • 准备工作
  • 安装依赖
  • 配置 PHP-FPM
  • 配置 MariaDB 服务器
  • 下载 FreeScout 源代码
  • 配置 Nginx 服务器块
  • 使用 SSL/TLS 证书保护 FreeScout
  • 通过 Web 安装向导安装 FreeScout
  • 总结

FreeScout 是一款开源的帮助台和共享收件箱,使用 PHP 编写,基于 Laravel 框架。它是 Zendesk/Help Scout 的替代方案。它是一款轻量且功能强大的帮助台软件,可安装在任何地方。FreeScout 是一款 100% 适配移动端的帮助台软件,支持多语言以及现代 Microsoft Exchange 认证。

本指南将带您在 Debian 12 服务器上一步步安装 FreeScout 帮助台。您将在 Debian 服务器上使用 LEMP 技术栈(Nginx、MariaDB 和 PHP-FPM)安装 FreeScout,并使用来自 Letsencrypt 的 SSL/TLS 证书保护您的安装。

准备工作

在继续之前,请确认您已准备好:

  • 一台 Debian 12 服务器。
  • 一个具有 sudo 管理员权限的非 root 用户。
  • 一个指向服务器 IP 地址的域名。

安装依赖

FreeScout 帮助台是一款使用 PHP 编写的开源应用程序,支持 MySQL/MariaDB 或 PostgreSQL 数据库,并可在 Nginx、Apache 和 IIS Web 服务器上运行。本指南中,您将使用 LEMP 技术栈(Nginx、MariaDB 和 PHP-FPM)安装 FreeScout。

执行以下命令以更新并刷新您的 Debian 软件包索引。

sudo apt update

仓库更新完成后,运行以下命令安装 FreeScout 帮助台所需的依赖,包括 LEMP 技术栈(Nginx、MariaDB、PHP-FPM)以及额外的 PHP 扩展和 git。

sudo apt install nginx mariadb-server libmariadb-dev git php-fpm php-mysql php-mbstring php-xml php-imap php-zip php-gd php-curl php-intl

输入 y 以继续安装。

在 Debian 12 上安装 FreeScout 帮助台工单系统

依赖安装完成后,执行以下命令逐一验证各个依赖。

验证 Nginx 服务,确保该服务正在运行并已启用。

sudo systemctl is-enabled nginx
sudo systemctl status nginx

以下输出表明 Nginx 正在运行且已启用。

在 Debian 12 上安装 FreeScout 帮助台工单系统

然后,使用以下命令验证 MariaDB 服务。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

您应该看到类似的 enabled 输出,表明 MariaDB 已启用且处于活动(运行中)状态。

在 Debian 12 上安装 FreeScout 帮助台工单系统

现在执行以下命令验证 PHP-FPM 服务。

sudo systemctl is-enabled php8.2-fpm
sudo systemctl status php8.2-fpm

以下输出显示 PHP-FPM 服务正在运行且已启用。

在 Debian 12 上安装 FreeScout 帮助台工单系统

最后,使用以下命令查看 PHP-FPM 版本以及已启用扩展的列表。

php -v
php -m

您应该看到已安装 PHP-FPM 8.2 以及部分已启用的扩展。

在 Debian 12 上安装 FreeScout 帮助台工单系统

配置 PHP-FPM

安装依赖后,您将通过修改 php.ini 文件来配置 PHP-FPM 安装。

使用以下 nano 编辑器命令打开 PHP-FPM 的 php.ini 配置文件 /etc/php/8.2/fpm/php.ini。

sudo nano /etc/php/8.2/fpm/php.ini

修改以下选项,并务必根据您的服务器环境调整 timezone 和 memory_limit 的具体设置。

memory_limit = 512M
date.timezone = Europe/Stockholm
upload_max_filesize = 16M
cgi.fix_pathinfo=0

完成后保存并退出文件。

现在运行以下 systemctl 命令以重启 PHP-FPM 服务并应用更改。

sudo systemctl restart php8.2-fpm

配置 MariaDB 服务器

在接下来的步骤中,您将通过 mariadb-secure-installation 工具来保护您的 MariaDB 服务器安装。然后,您将创建一个供 FreeScout 使用的新数据库和用户。

要保护您的 MariaDB 服务器,请输入以下命令。

sudo mariadb-secure-installation

过程中,输入 Y 以确认新配置,或输入 n 表示否并拒绝。以下是您会被询问的 MariaDB 服务器部分配置:

  • 将本地认证切换为 unix_socket?输入 n 表示否。
  • 设置 MariaDB root 密码?输入 y,然后输入新的 MariaDB root 密码并重复确认。
  • 删除默认的匿名用户?输入 y 以确认。
  • 禁止 root 用户远程登录?输入 y 以确认。
  • 删除默认的 test 数据库?输入 y 以确认。
  • 重新加载权限表并应用更改?输入 y 以确认。

保护 MariaDB 服务器后,您将创建一个供 FreeScout 使用的新 MariaDB 数据库和用户。这可以通过 mariadb 客户端登录 MariaDB 服务器来完成。

执行以下 mariadb 命令以登录 MariaDB 服务器。系统询问时输入您的 MariaDB root 密码。

sudo mariadb -u root -p

现在运行以下查询,创建一个名为 freescout 的新数据库和一个名为 freescout 的用户。请务必修改以下查询中的密码。

CREATE DATABASE freescout CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON freescout.* TO freescout@localhost IDENTIFIED BY "password";
FLUSH PRIVILEGES;

在 Debian 12 上安装 FreeScout 帮助台工单系统

接下来,运行以下查询验证 freescout 用户,并确保该用户可以访问 freescout 数据库。

SHOW GRANTS FOR freescout@localhost;

以下输出确认 freescout 用户可以访问 freescout 数据库。

在 Debian 12 上安装 FreeScout 帮助台工单系统

您现在可以输入 quit 退出 MariaDB 服务器。

下载 FreeScout 源代码

既然 PHP-FPM 和 MariaDB 服务器已配置完成,下一步是通过 Git 下载 FreeScout 源代码,然后为 FreeScout 源代码设置正确的权限和所有权。

执行以下命令创建新的 Web 根目录 /var/www/freescout 并进入该目录。

mkdir -p /var/www/freescout; cd /var/www/freescout

通过以下 git 命令从 GitHub 下载 FreeScout 源代码。

git clone https://github.com/freescout-helpdesk/freescout .

过程完成后,执行以下命令将 Web 根目录 /var/www/freescout 的所有权更改为 www-data 用户。这将允许 Nginx 访问 FreeScout 源代码。

sudo chown -R www-data:www-data /var/www/freescout

最后,您还可以通过执行以下命令确保每个目录和文件具有正确的权限。

find /var/www/freescout -type f -exec chmod 664 {} \;    
find /var/www/freescout -type d -exec chmod 775 {} \;

至此,您已将 FreeScout 源代码下载到 Web 根目录 /var/www/freescout。在下一步中,您将创建一个新的 Nginx 服务器块配置,用于运行您的 FreeScout 安装。

配置 Nginx 服务器块

下载 FreeScout 源代码后,您将创建一个新的 Nginx 服务器块来运行您的 FreeScout 安装。在继续之前,请确保您已将域名指向服务器 IP 地址。

使用以下 nano 编辑器命令创建新的 Nginx 服务器块配置文件 /etc/nginx/sites-available/freescout。

sudo nano /etc/nginx/sites-available/freescout

插入以下配置,并务必修改域名

server {
    listen 80;
    server_name howtoforge.local;
    root /var/www/freescout/public;
    index index.php index.html index.htm;
    error_log /var/www/freescout/storage/logs/web-server.log;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    # Uncomment this location if you want to improve attachments downloading speed.
    # Also make sure to set APP_DOWNLOAD_ATTACHMENTS_VIA=nginx in the .env file.
    #location ^~ /storage/app/attachment/ {
        #    internal;
        #    alias /var/www/freescout/storage/app/attachment/;
    #}
    location ~* ^/storage/attachment/ {
        expires 1M;
        access_log off;
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~* ^/(?:css|js)/.*\.(?:css|js)$ {
        expires 2d;
        access_log off;
        add_header Cache-Control "public, must-revalidate";
    }
    location ~* ^/(?:css|fonts|img|installer|js|modules|[^\\\]+\..*)$ {
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
    }
    location ~ /\. {
        deny  all;
    }
}

完成后保存文件并退出编辑器。

接下来,运行以下命令以激活服务器块文件 /etc/nginx/sites-available/freescout 并验证您的 Nginx 语法。

sudo ln -s /etc/nginx/sites-available/freescout /etc/nginx/sites-enabled/
sudo nginx -t

如果语法正确,您将看到 test is successful - syntax is ok 的输出。

在 Debian 12 上安装 FreeScout 帮助台工单系统

现在运行以下命令重启 Nginx 服务并应用您所做的更改。

sudo systemctl restart nginx

在下一步中,您将(也必须)通过 Certbot 和 Certbot Nginx 插件从 letsencrypt 生成 SSL/TLS 证书。

使用 SSL/TLS 证书保护 FreeScout

要安装 FreeScout 帮助台,您必须在 Web 服务器上启用 HTTPS。在接下来的步骤中,您将通过 Certbot 和 Certbot Nginx 插件从 Letsencrypt 生成 SSL/TLS 证书。

使用以下 apt 命令安装 Certbot 和 Certbot Nginx 插件。输入 y 以继续安装。

sudo apt install certbot python3-certbot-nginx

在 Debian 12 上安装 FreeScout 帮助台工单系统

接下来,运行以下 certbot 命令为您的域名生成新的 SSL/TLS 证书。请务必将您的邮箱地址和域名替换为您自己的信息。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email 
[email protected]
 -d help.example.io

过程完成后,您的 SSL/TLS 证书将位于 /etc/letsencrypt/live/domain.com/ 目录。此外,您的 Nginx 服务器块文件 /etc/nginx/sites-available/freescout 将由 Certbot Nginx 插件自动配置为启用 HTTPS。

通过 Web 安装向导安装 FreeScout

打开您的 Web 浏览器并访问您 FreeScout 安装的域名,例如 http://glpi.howtoforge.local/。您将被重定向到安全的 HTTPS 连接以及 FreeScout 安装页面。

点击 Check Requirements(检查要求)以确保所需的 PHP 扩展均已安装。

在 Debian 12 上安装 FreeScout 帮助台工单系统

如果所需的 PHP 扩展已安装,点击 Check Permissions(检查权限)以继续。

在 Debian 12 上安装 FreeScout 帮助台工单系统

现在确保 FreeScout 目录具有可写权限。然后点击 Configure Environments(配置环境)。

在 App URL 设置中输入您的域名,然后点击 Setup Database(配置数据库)

在 Debian 12 上安装 FreeScout 帮助台工单系统

将默认数据库选择为 MySQL,并输入数据库名称、用户和密码。然后点击 Setup Application(配置应用)以继续。

在 Debian 12 上安装 FreeScout 帮助台工单系统

选择应用程序语言和时区,然后点击 Setup Admin(配置管理员)。

在 Debian 12 上安装 FreeScout 帮助台工单系统

现在为您的 FreeScout 安装创建一个新管理员用户。输入您的邮箱地址、新用户名和密码,然后点击 Install(安装)以继续 FreeScout 的安装。

在 Debian 12 上安装 FreeScout 帮助台工单系统

安装成功后,您应该会看到以下确认信息。此外,您会看到需要为 FreeScout 创建一个新 cron 任务。

在 Debian 12 上安装 FreeScout 帮助台工单系统

回到您的终端服务器,运行以下命令为 FreeScout 创建一个新 cron 任务。

crontab -u www-data -e

输入以下配置。

* * * * * php /var/www/freescout/artisan schedule:run >> /dev/null 2>&1

完成后保存并关闭文件。

接下来,回到您的 Web 浏览器,点击 Login(登录),随后将显示 FreeScout 登录页面。输入您的管理员邮箱地址和密码,然后点击 Login(登录)。

在 Debian 12 上安装 FreeScout 帮助台工单系统

如果安装成功,您将看到如下所示的 FreeScout 仪表盘:

在 Debian 12 上安装 FreeScout 帮助台工单系统

总结

总而言之,您已成功在 Debian 12 服务器上使用 LEMP 技术栈(Nginx、MariaDB 和 PHP-FPM)安装了 FreeScout 帮助台。您还使用从 letsencrypt 生成的 SSL/TLS 证书保护了您的 FreeScout 安装。现在您可以将 FreeScout 作为帮助台平台用于您的本地/内部组织。