3

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

我创建了以下文件夹:

域/私人/myApps/golfmanager

我已将除公用文件夹之外的所有文件和文件夹都放在这里

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

域/子域/golfmanager/httpddocs

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

有人可以提供一些关于此文件夹设置需要更改的指示。不想破坏!!

谢谢

4

3 回答 3

6

这在共享主机上非常容易。

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

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

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

注意:有时子域会在 public_html 文件夹中。没关系,但我建议在根目录上方创建您的子域文件夹以获得额外的安全性。您可以在 cPanel 中轻松完成此操作,但在创建子域时更改子域的路径。

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

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

接下来是如何在“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 文件”文件夹。

您唯一不会上传的内容是您的 laravel“公共”文件夹的内容,而应该将其上传到您的“子域名”文件夹(这包括您的 index.php 和所有 css js 文件等)。

希望这可以帮助!

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

于 2013-10-11T03:17:12.650 回答
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"

因此默认值足以退出引导程序并进入应用程序。

相反,更改:

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

至:

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

另外,不要更改:'base' => DIR .'/..','storage' => DIR .'/../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”文件夹,public 文件夹除外。“public”文件夹的内容,应该被上传到“subdomain-name”文件夹。

于 2014-12-27T20:58:52.367 回答
1

我不确定这是要走的路,因为由于您的文件夹完全不同,因此它是可行的,但您可能需要创建符号链接才能以这种方式工作。

Laravel 应该有你在应用程序中看到的文件夹层次结构,你应该有

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 的工作方式。

于 2013-10-09T21:45:33.377 回答