Integrar Apache y Laravel. Solucion Http Error 500: Internal Server Error

Hoy estaba haciendo la migración de un proyecto en laravel hacia una vps de amazon con un mi, pero lo que se quería es que laravel funcionara sin necesidad de ejecutar su propio servidor. 


LARAVEL PARA APACHE

Realmente se quiere es que el laravel trabaje en conjunto con apache. Entonces para ello es necesario primero realizar unas configuraciones en el archivo de instalacion de apache.

Como se estaba en un servidor ami la ruta es /etc/httpd/conf/httpd.conf
en este archivo es necesario agregar la linea de importación de los .conf. 
Luego de ello en la ruta que se asigno para los .conf se crea un archivo de configuración que en este caso llamamos virtuales.conf

Y es el lugar donde vamos a guardar todos los host virtuales que se va a manejar en el servidor vps.

En uno de los casos para laravel su hostvirutal quedo dela siguiente manera


  ServerName proyecto.net
  ServerAlias www.proyecto.net
  Alias /proyecto /var/www/html/proyecto/public
 DocumentRoot "/var/www/html/poyecto/public"
  
        AllowOverride All
        Order allow,deny
        Allow from all
 
Lo que esta en verde es lo unico que hay que cambiar.

Ahora de esta manera si se ingresa al servidor con el nombre que se le asigno desde el navegador, el proyecto de laravel debe aparecer, la pagina principal.

Pero aun no se ha terminado ya que si se quiere ingresar a alguna ruta probablemente arroje un error de 500 Internal Server o parecido.

Para soluciona este error es necesario.

Primero modificar el archivo .htaccess dentro de proyecto/public
RewriteEngine On
RewriteBase /proyecto/

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Authorization Headers
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

y se debe cambiar la configuración que tiene el archivo por la anterior. Aunque lo mejor seria hacerle una copia antes de hacer cualquier cambio. En este archivo solo se cambia el nombre del proyecto.

Por ultimo es necesario asignar los permisos a la carpeta raiz del proyecto de la siguiente forma.
sudo chmod 755 -R proyectolaravel
chmod -R o+w proyectolaravel/storage

Quedara algo como esto
permisos laravel apache storage

De esta forma se integra laravel con Apache y ademas se soluciona el error 500 o internal error que puede generar y los posibles errores.


Segundo posible error

En caso de que de la forma anterior no funcione entonces es necesario cambiar el .htaccess y dejar el siguiente


Options +FollowSysmLinks
RewriteEngine On
RewriteBase /

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Authorization Headers
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]


# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]


y si en ese momento carga la pagina principal pero en las rutas aparece el error 404 Not Fount  entonces ejecutar el comando a2enmod rewrite referencia


Referencias

https://es.stackoverflow.com/questions/71658/integrar-laravel-5-apache-en-linux

0 Comentarios