Настройка Apache
Полное руководство по настройке Apache для FeedbackPulse SaaS.
Предварительные требования
- 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>
Поддержка wildcard-поддоменов (опционально)
Если вы хотите поддомены арендаторов вида 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>
Важно: Вам также понадобится wildcard-запись DNS (
*.yourdomain.com) и wildcard-SSL-сертификат. Смотрите Настройка Wildcard DNS и SSL-сертификаты.
Файл .htaccess
FeedbackPulse поставляется с файлом .htaccess в директории public/. Он обрабатывает:
- Переписывание URL (красивые URL без
index.php) - Принудительное использование 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 / Shared-хостинг
Если вы на shared-хостинге с cPanel:
Вариант А: Установка в public_html
- Загрузите все файлы в
public_html/feedbackpulse/ - В cPanel → Домены или Дополнительные домены, установите корень документов в
public_html/feedbackpulse/public - Если вы не можете изменить корень документов, используйте этот приём:
Создайте .htaccess в корне public_html/:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ feedbackpulse/public/$1 [L]
</IfModule>
Вариант Б: Установка в поддомен
- Создайте поддомен в cPanel (например,
feedback.yourdomain.com) - Установите его корень документов в папку
public/ - Загрузите все файлы FeedbackPulse в директорию поддомена
Вариант В: Перемещение содержимого 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';
Предупреждение: Вариант В требует обновления путей после каждого обновления. По возможности используйте Вариант А или Б.
Laragon (локальная разработка на Windows)
Laragon делает это невероятно просто:
- Поместите папку
feedbackpulse-saasвC:\laragon\www\ - Laragon автоматически создаёт виртуальный хост:
feedbackpulse-saas.test - Откройте
http://feedbackpulse-saas.testв браузере - Laragon автоматически указывает на
public/!
Автоматические виртуальные хосты Laragon: Laragon создаёт виртуальные хосты Apache для каждой папки в
www/. Корень документов автоматически устанавливается в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
- Настройка Wildcard DNS — включение поддоменов арен даторов
- Прохождение веб-установщика — запуск установщика