本页内容
- 准备工作
- 安装依赖
- 配置 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 以继续安装。

依赖安装完成后,执行以下命令逐一验证各个依赖。
验证 Nginx 服务,确保该服务正在运行并已启用。
sudo systemctl is-enabled nginx
sudo systemctl status nginx
以下输出表明 Nginx 正在运行且已启用。

然后,使用以下命令验证 MariaDB 服务。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
您应该看到类似的 enabled 输出,表明 MariaDB 已启用且处于活动(运行中)状态。

现在执行以下命令验证 PHP-FPM 服务。
sudo systemctl is-enabled php8.2-fpm
sudo systemctl status php8.2-fpm
以下输出显示 PHP-FPM 服务正在运行且已启用。

最后,使用以下命令查看 PHP-FPM 版本以及已启用扩展的列表。
php -v
php -m
您应该看到已安装 PHP-FPM 8.2 以及部分已启用的扩展。

配置 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;

接下来,运行以下查询验证 freescout 用户,并确保该用户可以访问 freescout 数据库。
SHOW GRANTS FOR freescout@localhost;
以下输出确认 freescout 用户可以访问 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 的输出。

现在运行以下命令重启 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

接下来,运行以下 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 扩展均已安装。

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

现在确保 FreeScout 目录具有可写权限。然后点击 Configure Environments(配置环境)。
在 App URL 设置中输入您的域名,然后点击 Setup Database(配置数据库)

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

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

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

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

回到您的终端服务器,运行以下命令为 FreeScout 创建一个新 cron 任务。
crontab -u www-data -e
输入以下配置。
* * * * * php /var/www/freescout/artisan schedule:run >> /dev/null 2>&1
完成后保存并关闭文件。
接下来,回到您的 Web 浏览器,点击 Login(登录),随后将显示 FreeScout 登录页面。输入您的管理员邮箱地址和密码,然后点击 Login(登录)。

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

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