deploy laravel 4 app in a subdomain

南笙酒味 提交于 2019-12-01 08:43:35
Josh

This is super easy on shared hosting.

Step 1: Understanding your folder structure. The layout of your shared hosting should generally look something like this:

/
 username
   home
     public_html
     subdomain-name
     laravel-files (optional)
     ...other folders etc

As you hopefully know, all your public files for your site will be in your public_html folder.

Note: sometimes a subdomain will be inside the public_html folder. That is okay but I recommend creating your subdomain folder above the root for a little bit of extra security. You can do that easily in cPanel but changing the path to the subdomain when you are creating it.

Step 2: Upload your Laravel files above the root (above public_html) or in a subfolder if you want it to be cleaner.

For a small project I generally upload the files into the "home" folder above. But for cleaner structure you may want to create a folder inside that "home" folder called "laravel-files".

What follows is how to do it in an "laravel-files" folder. If you upload them to "home" instead then all you need to do is get rid of all references to "/laravel-files" below.

Step 3: edit your public/index.php and your bootstrap/paths.php files:

In paths.php

change

'app' => __DIR__.'/../app',

to:

'app' => __DIR__.'/../laravel-files/app',

change:

'public' => __DIR__.'/../public',

to:

'public' => __DIR__,

change:

'base' => __DIR__.'/..',

to:

'base' => __DIR__.'/../laravel-files',

change:

'storage' => __DIR__.'/../app/storage',

to:

'storage' => __DIR__.'/../laravel-files/app/storage',

In index.php

change:

require __DIR__.'/../bootstrap/autoload.php';

to:

require __DIR__.'/../laravel-files/bootstrap/autoload.php';

change:

$app = require_once __DIR__.'/../bootstrap/start.php';

to:

$app = require_once __DIR__.'/../laravel-files/bootstrap/start.php';

Now what you'll need to do is, as I said upload your laravel project to your "laravel files" folder.

The only thing you wont upload there is the contents of your laravel "public" folder, which should instead be uploaded to your "subdomain-name" folder (this includes your index.php and all your css js files etc).

Hope this helps!

Please note my answer is based on this question: How to install Laravel 4 to a web host subfolder without publicly exposing /app/ folder? but tailored for your situation.

I'm not sure this is the way to go, because, since your folders are completely different, it's doable but you probably will need to create symlinks for this to work this way.

Laravel is supposed to have the folder hiearchy you see in your application and you should have

domain/subdomains/golfmanager/httpddocs/app
domain/subdomains/golfmanager/httpddocs/bootstrap
domain/subdomains/golfmanager/httpddocs/public
domain/subdomains/golfmanager/httpddocs/vendor

So, what I think you can do it to put everything on

domain/subdomains/golfmanager/httpddocs

And ask your domain administrator to set the document root of your application to

domain/subdomains/golfmanager/httpddocs/public

This way, when you point your browser to

http://golfmanager.yourdomain.com

It will access this index file:

domain/subdomains/golfmanager/httpddocs/public/index.php

This is how Laravel is supposed to work.

Josh answer was very helpful, but it did not work or did not matched my case. I will tailor my solution like his one, so everyone could follow easily:

Step 1: My chosen folder structure:

/
 home
   username
     public_html
       subdomain-name
     laravel-files
     ...other folders etc

Note: my subdomain is inside the public_html folder.

Step 2: Uploaded my Laravel files above the root (above/out of public_html) in a subfolder: laravel-files (//home/username/laravel-files)

Step 3: edit your public/index.php and your bootstrap/paths.php files:

In paths.php

Don't change:

'app' => __DIR__.'/../app',

to:

'app' => __DIR__.'/../../laravel-files/app',

because it's useless - it will evaluate to the following path:

"/home/username/laravel-files/bootstrap/../../laravel-files/app"

so the default is enough to just get out of bootstrap and enter app.

Instead, change:

'public' => __DIR__.'/../public',

to:

'public' => __DIR__.'/../../public_html/subdomain-name',

Also, don't change: 'base' => DIR.'/..', 'storage' => DIR.'/../app/storage',

In index.php

change:

require __DIR__.'/../bootstrap/autoload.php';

to:

require __DIR__.'/../../laravel-files/bootstrap/autoload.php';

and change:

$app = require_once __DIR__.'/../bootstrap/start.php';

to:

$app = require_once __DIR__.'/../../laravel-files/bootstrap/start.php';

Upload your laravel project to the "laravel-files" folder, except the public folder. Content of "public" folder, should instead be uploaded to the "subdomain-name" folder.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!