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