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
- 将所有文件上传至
public_html/feedbackpulse/ - 在 cPanel → 域名 或 附加域名 中,将文档根目录设置为
public_html/feedbackpulse/public - 如果无法更改文档根目录,使用以下方法:
在 public_html/ 根目录创建 .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ feedbackpulse/public/$1 [L]
</IfModule>
方案 B:安装在子域名
- 在 cPanel 中创建子域名(如
feedback.yourdomain.com) - 将其文档根目录设置为
public/文件夹 - 将所有 FeedbackPulse 文件上传至子域名目录
方案 C:移动 public/ 内容
当主机限制较严格时,作为最后手段:
- 将所有文件上传至
public_html/外部的目录(如/home/user/feedbackpulse/) - 将
public/的内容复制到public_html/ - 编辑
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 使配置过程极为简单:
- 将
feedbackpulse-saas文件夹放置在C:\laragon\www\中 - Laragon 会自动创建虚拟主机:
feedbackpulse-saas.test - 在浏览器中访问
http://feedbackpulse-saas.test - 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 落地页或安装程序。
下一步
- SSL 证书 — 配置 HTTPS
- 通配符 DNS 配置 — 启用租户子域名
- Web 安装程序详解 — 运行安装程序