【问题标题】:Laravel 5.2 application deployment on productionLaravel 5.2 应用程序在生产环境中的部署
【发布时间】: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


【解决方案1】:

index.php 文件应该在公共文件夹中。其他一切都不应该。您的 Web 服务器应配置为指向此目录。

index.php 文件引导 Laravel 框架。框架文件应位于可公开访问的文件夹之外的目录中。这通常在 public/ 文件夹上方的目录中。

您不应该绕过您的部署工具。它应该被配置为维护这个目录结构。一旦没有混淆文件应该推送到哪里,您就可以开始解决其他与路径相关的部署问题。为避免未来的痛苦,我建议您将开发环境设置为尽可能接近生产环境。

【讨论】:

  • 如果我的结构是public_html/abcd,那么abcd就是可以公开访问的文件夹。我应该在哪里创建不能公开访问的文件夹?
  • 按照惯例 public_html/ 应该是包含 index.php 的可公开访问的文件夹。默认情况下,Laravel 将此文件夹命名为“public”——但在您的情况下,它被称为“public_html”,您需要配置您的服务器以将其指向您的文档根目录。 Laravel 框架文件应位于此公共文件夹上方的一个目录。
猜你喜欢
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2016-05-21
  • 2017-12-18
  • 2021-04-08
  • 2023-04-01
相关资源
最近更新 更多