O Laravel tem sido usado com frequência por desenvolvedores web e muitos estão fazendo deploy em servidores de hospedagens com planos comuns onde só há o Apache disponível de forma simples.
Muitas vezes você está fazendo uma versão de desenvolvimento e não quer remover os arquivos da raiz do seu projeto e substituir pela versão beta, entre diversos outros motivos.
Nesse artigo veremos como usar o Laravel no Apache bem como usá-lo, caso queira, na raiz do seu projeto mesmo estando em uma subpasta no servidor.
Nós vimos aqui Como Instalar Composer e Laravel no Windows e Ubuntu.
Então, para acessar o Laravel no seu navegador, você pode usar o comando:
php artisan serve
Dentro de um projeto Laravel.
Para acessar direto no Apache siga os passos seguintes…
Primeiramente vamos ver como acessar o Laravel no Apache sem precisar do: ~php artisan serve
~.
mv meuprojeto /var/www/html
Ou também, dependendo do seu sistema:
mv meuprojeto /var/www/localhost/htdocs
, ou qualquer outro caso.
sudo vim /etc/apache2/sites-available/laravel.conf
Alguns sistemas pode ter o caminho diferente, no meu caso mesmo(Gentoo) é:
sudo vim /etc/apache2/vhosts.d/laravel.conf
.
E insira o conteúdo abaixo:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/localhost/htdocs/meuprojeto/public
<Directory /var/www/localhost/htdocs/meuprojeto/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/laravel_error.log
CustomLog /var/log/apache2/laravel_access.log combined
</VirtualHost>
sudo chown -R apache:apache /var/www/html/meuprojeto
sudo chown -R apache:apache /var/log/apache2
sudo chmod -R 775 /var/www/html/meuprojeto/storage/
sudo chmod -R 775 /var/www/html/meuprojeto/bootstrap/cache/
sudo usermod -a -G apache $USER
sudo find /var/www/html/meuprojeto -type f -exec chmod 664 {} \;
sudo find /var/www/html/meuprojeto -type f -exec chmod 775 {} \;
sudo chmod -R gu+w /var/www/html/meuprojeto
# Em alguns casos que há o comando a2enmod, rode também:
sudo a2enmod rewrite
sudo systemctl restart apache2
Use a forma de reiniciar o Apache de acordo com o seu sistema. No meu mesmo é:
sudo rc-service apache restart
, no Windows é dessa forma.
Agora, acesso no navegador o endereço correspondente ao seu projeto, mas para a pasta public
:
E note que seu projeto já está rodando direto no Apache!
Pode ser que você ainda queira acessar o projeto, mas identificar no URL que foi redirecionado.
Para esse caso, crie um arquivo de nome: .htaccess
na raiz do seu servidor, exemplo:
vim /var/www/html/.htaccess
E cole o conteúdo abaixo, substitua o nome meuprojeto
para o nome do seu projeto:
RewriteEngine On
# Redireciona http://localhost para http://localhost/meuprojeto/public/
RewriteCond %{HTTP_HOST} ^(localhost)$ [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /meuprojeto/public/$1 [L,R=301]
Há casos que talvez você precise reiniciar mais uma vez o Apache e outros casos até limpar o cache do seu navegador:
sudo systemctl restart apache2
# Por exemplo limpar o cache do Google Chrome no Ubuntu
rm -rf ~/.cache/google-chrome
Agora teste acessando: http://localhost e será redirecionado para http://localhost/meuprojeto/public
Talvez essa seja a parte mais interessante desse artigo, ou seja, algo que você não encontrará na documentação do Laravel! 😃
Se você quer acessar o projeto, redirecionar para meuprojeto/public
, mas sem alterar a URL, substitua o conteúdo do .htaccess
por esse conteúdo:
ALtere
meuprojeto
para o nome do seu projeto.vim /var/www/html/.htaccess
RewriteEngine On
# Reescreve internamente http://localhost para http://localhost/meuprojeto/public/
RewriteCond %{HTTP_HOST} ^localhost$ [NC,OR]
RewriteCond %{HTTP_HOST} ^localhost$
RewriteCond %{REQUEST_URI} !meuprojeto/public/
RewriteRule (.*) /meuprojeto/public/$1 [L]
Espero que eu tenha ajudado, se no seu caso tiver algum problema revise os passos.
E não se esqueça de compartilhar esse artigo!
laravel apache php desenvolvimentoweb