Pular para o conteúdo principal

Configuração do Apache

Guia completo de configuração do Apache para o FeedbackPulse SaaS.


Pré-requisitos

  • Apache 2.4+
  • mod_rewrite habilitado
  • mod_headers habilitado (para cabeçalhos de segurança)
  • PHP 8.4+ (via mod_php ou PHP-FPM)

Habilitar Módulos Necessários

sudo a2enmod rewrite headers ssl
sudo systemctl restart apache2

Virtual Host Básico

Crie um novo arquivo de virtual host:

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

Cole o seguinte:

<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>

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

Habilite o site e reinicie:

sudo a2ensite feedbackpulse.conf
sudo a2dissite 000-default.conf # Desabilita o site padrão (opcional)
sudo systemctl restart apache2

Virtual Host HTTPS (com Let's Encrypt)

Após obter um certificado 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>

# Cabeçalhos de Segurança
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>

# Redireciona HTTP para HTTPS
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>

Suporte a Subdomínios Wildcard (Opcional)

Se você quiser subdomínios de tenant como 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>

Importante: Você também precisa de um registro DNS wildcard (*.yourdomain.com) e um certificado SSL wildcard. Consulte Configuração de DNS Wildcard e Certificados SSL.


O Arquivo .htaccess

O FeedbackPulse vem com um arquivo .htaccess no diretório public/. Ele gerencia:

  • Reescrita de URL (URLs amigáveis sem index.php)
  • Forçar HTTPS
  • Definir cabeçalhos de segurança

Se o seu .htaccess não estiver funcionando, verifique se AllowOverride All está definido na configuração do seu virtual host.

O .htaccess padrão inclui:

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

E em public/.htaccess:

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

cPanel / Hospedagem Compartilhada

Se você estiver em hospedagem compartilhada com cPanel:

Opção A: Instalar em public_html

  1. Faça upload de todos os arquivos para public_html/feedbackpulse/
  2. No cPanel → Domínios ou Domínios Adicionais, defina o document root como public_html/feedbackpulse/public
  3. Se você não puder alterar o document root, use este recurso:

Crie um .htaccess na raiz public_html/:

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

Opção B: Instalar em um Subdomínio

  1. Crie um subdomínio no cPanel (ex.: feedback.yourdomain.com)
  2. Defina o document root para a pasta public/
  3. Faça upload de todos os arquivos do FeedbackPulse para o diretório do subdomínio

Opção C: Mover o Conteúdo de public/

Como último recurso em hospedagem restritiva:

  1. Faça upload de todos os arquivos para um diretório fora de public_html/ (ex.: /home/user/feedbackpulse/)
  2. Copie o conteúdo de public/ para public_html/
  3. Edite public_html/index.php — atualize os caminhos:
// Mude isso:
require __DIR__.'/../vendor/autoload.php';
// Para isso:
require '/home/user/feedbackpulse/vendor/autoload.php';

// Mude isso:
$app = require_once __DIR__.'/../bootstrap/app.php';
// Para isso:
$app = require_once '/home/user/feedbackpulse/bootstrap/app.php';

Aviso: A Opção C requer atualização dos caminhos após cada atualização. Use a Opção A ou B se possível.


Laragon (Desenvolvimento Local no Windows)

O Laragon torna isso incrivelmente fácil:

  1. Coloque a pasta feedbackpulse-saas em C:\laragon\www\
  2. O Laragon cria automaticamente um virtual host: feedbackpulse-saas.test
  3. Acesse http://feedbackpulse-saas.test no seu navegador
  4. O Laragon aponta para public/ automaticamente!

Virtual host automático do Laragon: O Laragon cria virtual hosts Apache para cada pasta em www/. O document root é automaticamente definido para public/ se esse diretório existir.


Verificar a Configuração do Apache

# Testar a sintaxe da configuração
sudo apachectl configtest

# Verificar se mod_rewrite está habilitado
apache2ctl -M | grep rewrite

# Verificar se o site está habilitado
ls /etc/apache2/sites-enabled/

# Reiniciar o Apache
sudo systemctl restart apache2

Acesse https://yourdomain.com — você deve ver a landing page ou o instalador do FeedbackPulse.


Próximos Passos