【发布时间】:2017-04-18 07:20:02
【问题描述】:
我在 laravel 5.2 中开发了应用程序。我在本地使用虚拟主机并轻松指向 publice/index.php。
但是在生产中,为什么我们需要使用 put index.php 和公共文件夹中的所有内容。这是在生产环境中部署的最佳做法吗?
我将整个项目文件夹和公用文件夹的内容复制到服务器的根目录(public_html)上。
我相应地更改了 index.php 并且它工作正常。
require __DIR__.'/project/bootstrap/autoload.php';
$app = require_once __DIR__.'/project/bootstrap/app.php';
问题是当我使用自动部署工具时,它会将整个代码推送到项目文件夹中。每次我通过 ssh 将资产从 project/public/assets 手动移动到 root/assets 时。
主要问题 我也面临问题,将个人资料图片保存在资产文件夹中。但它将图片保存在项目/公共/资产中,而不是它应该在根/资产中。我对这个问题也很困惑。
给我建议 请向我推荐最佳实践,我应该将公用文件夹的内容保存在哪里以及如何管理自动部署。
我们可以将 index.php 保留在 public 中,并直接指向 index.php 。这样自动部署就可以正常工作了。
部署后的命令 我正在使用 DeployHQ.com 来部署我的代码。它执行 ssh 命令,但不幸的是我的命令不起作用,因为 artisan 文件位于 root/abc/project 文件夹中。我不知道这个 shell 在哪里执行命令。或者如何直接指向项目文件夹来执行这些命令。
Bitbucket webhook 返回 422 错误代码 我在批准事件上使用 bitbucket webhook。我已经给了它部署 url 并打开了自动部署。钩子也触发了,但它没有部署任何东西,它显示错误代码422和错误“无法解码部署”。
【问题讨论】:
-
您遇到的问题太多,请将其缩小到具体问题。
index.php在公共场合应该在那里并且不会被改变,它的唯一目的是加载 laravel,仅此而已。应该允许访问公用文件夹..您可能对其他一些目录有错误的权限。您还可以使用存储类将文件放在存储目录中,并仅通过您使用的路由提供它们,以便您可以限制/控制访问。您应该真正阅读该指南,它详细解释了部署 laravel 应用程序的所有内容,还请使用您使用的服务的文档。 -
你的生产服务器有什么样的主机?
-
在专用服务器上托管。
-
@Mr.phoenix,请解释一下,在 cpanel 的生产中,我将如何指向 public/index.php。如您所知,默认情况下它不起作用。这是主要问题。
-
取决于网络服务器,如果您使用 apache 尝试设置虚拟主机并指向公共目录,这些是基础知识..如果您缺乏知识,请尝试阅读指南或找人做你。
标签: php laravel laravel-5.2 bitbucket web-deployment