我即将将共享Web主机上的laravel 4部署到子域中,我对该怎么做有点困惑。我让它在hostpapa帐户上工作,但对测试环境的配置和交换提供程序不满意。
我创建了以下文件夹:
域/私人/安装MyApps / golfmanager
我已经在这里放置了除公用文件夹
之外的所有文件和文件夹然后我将公共文件夹的内容放入此文件夹中:
域/子域/ golfmanager / httpddocs
我不知道现在该做什么!我知道我需要更改bootstrap / path.php中的路径
有人可以提供一些指示,说明此文件夹设置需要更改的内容。不想打破它!!
由于
答案 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"文件夹中。