Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run Laravel project on normal Apache?

I have Laravel project and can run it with

php artisan serve

I am executing this command inside D:\Users\Dims\Design\MyApplication directory. After that I can see site on http://localhost:8000 and can navigate it, although slow.

Now I am configuring the same place to serve by apache:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "D:\Users\Dims\Design\MyApplication\public"
    ServerName myapplication.app
    ErrorLog "logs/myapplication-error.log"
    CustomLog "logs/myapplication-access.log" common
    <Directory />
        AllowOverride none
        Require all granted
        DirectoryIndex index.php
    </Directory>
</VirtualHost>

Not, that I pointed application not to the root of the project, but to the public directory. This makes me able to open home page of the site, but clicking any links causes error 404.

If I serve

DocumentRoot "D:\Users\Dims\Design\MyApplication"

with Apache, I am unable to see home page at all, saying 403 forbidden. This probably because this directory has no index.php.

So, is it possible to serve Laravel project with Apache?

like image 390
Dims Avatar asked Mar 10 '23 12:03

Dims


2 Answers

Yes, it's absolutely possible to serve Laravel applications with Apache. To debug why your links are producing 404 errors, you'll have to provide more information about the URLs these links point to. It's best to always use Laravel's url(), secure_url() or route() helper functions when printing URLs. Also confirm that the Apache module mod_rewrite is enabled (Laravel Installation: Web Server Configuration)

like image 190
bradforbes Avatar answered Mar 12 '23 00:03

bradforbes


Set up the apache server host file as shown below:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot D:\Users\Dims\Design\MyApplication\public
    ServerName  exampledomain.com
    ServerAlias  www.exampledomain.com
    ErrorLog "C:/some_dir/example.error.log"
    CustomLog "C:/some_dir/example.access.log" combined
    <Directory "D:\Users\Dims\Design\MyApplication\public">
        Options -Indexes
        DirectoryIndex index.php index.html
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Now that you have set the server name to exampledomain.com you also need to set up the hosts(DNS) file in windows so that you can type in exampledomain.com in your browser and access your laravel project.

Editing the hosts file:

Please follow the steps below:

  • Press the Windows key.
  • Type Notepad in the search field.
  • In the search results, right-click Notepad and select Run as administrator.
  • From Notepad, open the following file:

    c:\Windows\System32\Drivers\etc\hosts

  • Make the following changes to the file.

At the end of the file add the following line:

127.0.0.1        exampledomain.com www.exampledomain.com

Click File > Save to save your changes.

What we did here was to tell windows that when we try to access exampledomain.com or www.exampledomain.com do not try to find the server over the internet but take the request to the local machine itself(127.0.0.1) which will in return serve your laravel project.

You can also find one another method here at wikihow -> http://www.wikihow.com/Install-Laravel-Framework-in-Windows

like image 44
Shakti Phartiyal Avatar answered Mar 12 '23 02:03

Shakti Phartiyal