在子域中部署laravel 4 app

时间:2013-10-09 21:33:24

标签: laravel subdomain laravel-4

我即将将共享Web主机上的laravel 4部署到子域中,我对该怎么做有点困惑。我让它在hostpapa帐户上工作,但对测试环境的配置和交换提供程序不满意。

我创建了以下文件夹:

域/私人/安装MyApps / golfmanager

我已经在这里放置了除公用文件夹

之外的所有文件和文件夹

然后我将公共文件夹的内容放入此文件夹中:

域/子域/ golfmanager / httpddocs

我不知道现在该做什么!我知道我需要更改bootstrap / path.php中的路径

有人可以提供一些指示,说明此文件夹设置需要更改的内容。不想打破它!!

由于

3 个答案:

答案 0 :(得分:6)

这在共享主机上非常简单。

第1步:了解您的文件夹结构。共享主机的布局通常应如下所示:

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

如您所知,您网站的所有公共文件都将位于您的public_html文件夹中。

注意:有时子域名将位于public_html文件夹中。这没关系,但我建议在root上面创建你的子域文件夹,以获得一些额外的安全性。您可以在cPanel中轻松完成此操作,但在创建子域时可以更改子域的路径。

第2步:如果您希望它更干净,请将您的Laravel文件上传到根目录(在public_html之上)或在子文件夹中。

对于一个小项目,我通常会将文件上传到上面的“home”文件夹中。但是对于更干净的结构,您可能希望在名为“laravel-files”的“home”文件夹中创建一个文件夹。

以下是如何在“laravel-files”文件夹中执行此操作。如果你把它们上传到“home”而不是你需要做的就是摆脱下面对“/ laravel-files”的所有引用。

第3步:编辑你的public / index.php和你的bootstrap / paths.php文件:

在paths.php

变化

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

为:

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

变化:

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

为:

'public' => __DIR__,

改变:

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

为:

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

变化:

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

为:

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

在index.php中

变化:

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

为:

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

变化:

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

为:

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

现在您需要做的是,正如我所说,将您的laravel项目上传到“laravel files”文件夹。

你唯一不会上传的是你的laravel“public”文件夹的内容,而应该上传到你的“subdomain-name”文件夹(这包括你的index.php和你所有的css js文件等)。

希望这有帮助!

请注意我的回答是基于这个问题:How to install Laravel 4 to a web host subfolder without publicly exposing /app/ folder?,但针对您的情况量身定制。

答案 1 :(得分:1)

我不确定这是怎么回事,因为,由于你的文件夹完全不同,它是可行的,但你可能需要为此工作创建符号链接。

Laravel应该有你在应用程序中看到的文件夹hiearchy,你应该有

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

所以,我认为你可以把它放在

domain/subdomains/golfmanager/httpddocs

并要求您的域管理员将您的应用程序的文档根目录设置为

domain/subdomains/golfmanager/httpddocs/public

这样,当您将浏览器指向

http://golfmanager.yourdomain.com

它将访问此索引文件:

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

这就是Laravel的工作方式。

答案 2 :(得分:1)

乔希的回答非常有帮助,但它不起作用或与我的情况不符。 我会像他的那样定制我的解决方案,所以每个人都可以轻松跟进:

第1步:我选择的文件夹结构:

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

注意:我的子域位于public_html文件夹中。

步骤2:将我的Laravel文件上传到子文件夹的根目录(public_html上方/外部):laravel-files(// home / username / laravel-files)

步骤3:编辑你的public / index.php和你的bootstrap / paths.php文件:

在paths.php中

不要改变:

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

为:

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

因为它没用 - 它会评估到以下路径:

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

所以默认就足以退出bootstrap并输入app。

相反,改变:

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

为:

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

另外,不要改变: '基础' =>的 DIR ' /..&# 39 ;, '存储' =>的 DIR ' /../应用程序/存储',

在index.php中

变化:

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

为:

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

并改变:

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

为:

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

将您的laravel项目上传到" laravel-files"文件夹,公用文件夹除外。 " public"的内容文件夹,应该上传到" subdomain-name"文件夹中。