跳到主要内容

Apache 配置

FeedbackPulse SaaS 完整的 Apache 配置指南。


前提条件

  • Apache 2.4+
  • 已启用 mod_rewrite
  • 已启用 mod_headers(用于安全响应头)
  • PHP 8.4+(通过 mod_php 或 PHP-FPM)

启用所需模块

sudo a2enmod rewrite headers ssl
sudo systemctl restart apache2

基本虚拟主机配置

创建新的虚拟主机文件:

sudo nano /etc/apache2/sites-available/feedbackpulse.conf

粘贴以下内容:

<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/feedbackpulse-saas/public

<Directory /var/www/feedbackpulse-saas/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>

# 日志
ErrorLog ${APACHE_LOG_DIR}/feedbackpulse-error.log
CustomLog ${APACHE_LOG_DIR}/feedbackpulse-access.log combined
</VirtualHost>

启用站点并重启:

sudo a2ensite feedbackpulse.conf
sudo a2dissite 000-default.conf # 禁用默认站点(可选)
sudo systemctl restart apache2

HTTPS 虚拟主机配置(使用 Let's Encrypt)

获取 SSL 证书后:

<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/feedbackpulse-saas/public

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem

<Directory /var/www/feedbackpulse-saas/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>

# 安全响应头
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

ErrorLog ${APACHE_LOG_DIR}/feedbackpulse-ssl-error.log
CustomLog ${APACHE_LOG_DIR}/feedbackpulse-ssl-access.log combined
</VirtualHost>

# 将 HTTP 重定向至 HTTPS
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>

通配符子域名支持(可选)

如果您需要支持 acme.yourdomain.com 这样的租户子域名:

<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias *.yourdomain.com
DocumentRoot /var/www/feedbackpulse-saas/public

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem

<Directory /var/www/feedbackpulse-saas/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

重要: 您还需要配置通配符 DNS 记录(*.yourdomain.com)和通配符 SSL 证书。请参阅通配符 DNS 配置SSL 证书


.htaccess 文件

FeedbackPulse 在 public/ 目录中附带了 .htaccess 文件,处理以下内容:

  • URL 重写(不带 index.php 的美观 URL)
  • 强制 HTTPS
  • 设置安全响应头

如果 .htaccess 不生效,请确保虚拟主机配置中设置了 AllowOverride All

默认 .htaccess 包含:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

public/.htaccess 中包含:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

cPanel / 共享主机

如果您使用带 cPanel 的共享主机:

方案 A:安装在 public_html

  1. 将所有文件上传至 public_html/feedbackpulse/
  2. 在 cPanel → 域名附加域名 中,将文档根目录设置为 public_html/feedbackpulse/public
  3. 如果无法更改文档根目录,使用以下方法:

public_html/ 根目录创建 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ feedbackpulse/public/$1 [L]
</IfModule>

方案 B:安装在子域名

  1. 在 cPanel 中创建子域名(如 feedback.yourdomain.com
  2. 将其文档根目录设置为 public/ 文件夹
  3. 将所有 FeedbackPulse 文件上传至子域名目录

方案 C:移动 public/ 内容

当主机限制较严格时,作为最后手段:

  1. 将所有文件上传至 public_html/ 外部的目录(如 /home/user/feedbackpulse/
  2. public/内容复制到 public_html/
  3. 编辑 public_html/index.php — 更新路径:
// 将这个:
require __DIR__.'/../vendor/autoload.php';
// 改为:
require '/home/user/feedbackpulse/vendor/autoload.php';

// 将这个:
$app = require_once __DIR__.'/../bootstrap/app.php';
// 改为:
$app = require_once '/home/user/feedbackpulse/bootstrap/app.php';

警告: 方案 C 在每次更新后都需要重新修改路径。如果可能,请优先使用方案 A 或 B。


Laragon(Windows 本地开发)

Laragon 使配置过程极为简单:

  1. feedbackpulse-saas 文件夹放置在 C:\laragon\www\
  2. Laragon 会自动创建虚拟主机:feedbackpulse-saas.test
  3. 在浏览器中访问 http://feedbackpulse-saas.test
  4. Laragon 会自动将文档根目录指向 public/

Laragon 自动虚拟主机: Laragon 会为 www/ 中的每个文件夹创建 Apache 虚拟主机。如果存在 public/ 目录,文档根目录会自动设置为 public/


验证 Apache 配置

# 测试配置语法
sudo apachectl configtest

# 检查 mod_rewrite 是否已启用
apache2ctl -M | grep rewrite

# 检查站点是否已启用
ls /etc/apache2/sites-enabled/

# 重启 Apache
sudo systemctl restart apache2

访问 https://yourdomain.com — 您应该能看到 FeedbackPulse 落地页或安装程序。


下一步