Configuração do Apache
Guia completo de configuração do Apache para o FeedbackPulse SaaS.
Pré-requisitos
- Apache 2.4+
mod_rewritehabilitadomod_headershabilitado (para cabeçalhos de segurança)- PHP 8.4+ (via
mod_phpou 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
- Faça upload de todos os arquivos para
public_html/feedbackpulse/ - No cPanel → Domínios ou Domínios Adicionais, defina o document root como
public_html/feedbackpulse/public - 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
- Crie um subdomínio no cPanel (ex.:
feedback.yourdomain.com) - Defina o document root para a pasta
public/ - 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:
- Faça upload de todos os arquivos para um diretório fora de
public_html/(ex.:/home/user/feedbackpulse/) - Copie o conteúdo de
public/parapublic_html/ - 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:
- Coloque a pasta
feedbackpulse-saasemC:\laragon\www\ - O Laragon cria automaticamente um virtual host:
feedbackpulse-saas.test - Acesse
http://feedbackpulse-saas.testno seu navegador - 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 parapublic/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
- Certificados SSL — configure o HTTPS
- Configuração de DNS Wildcard — habilite subdomínios de tenant
- Passo a Passo do Instalador Web — execute o instalador