Перейти к основному содержимому

Настройка 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

  1. Загрузите все файлы в public_html/feedbackpulse/
  2. В cPanel → Домены или Дополнительные домены, установите корень документов в public_html/feedbackpulse/public
  3. Если вы не можете изменить корень документов, используйте этот приём:

Создайте .htaccess в корне public_html/:

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

Вариант Б: Установка в поддомен

  1. Создайте поддомен в cPanel (например, feedback.yourdomain.com)
  2. Установите его корень документов в папку public/
  3. Загрузите все файлы FeedbackPulse в директорию поддомена

Вариант В: Перемещение содержимого 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';

Предупреждение: Вариант В требует обновления путей после каждого обновления. По возможности используйте Вариант А или Б.


Laragon (локальная разработка на Windows)

Laragon делает это невероятно просто:

  1. Поместите папку feedbackpulse-saas в C:\laragon\www\
  2. Laragon автоматически создаёт виртуальный хост: feedbackpulse-saas.test
  3. Откройте http://feedbackpulse-saas.test в браузере
  4. 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 или установщик.


Следующие шаги