【问题标题】:What's the best way to run a laravel project with out using artisan serve?在不使用 artisan serve 的情况下运行 laravel 项目的最佳方法是什么?
【发布时间】:2017-10-23 13:42:05
【问题描述】:

伙计们,我有一个 laravel 项目,它工作正常。每次我通过输入命令php artisan serve 然后在我的浏览器中输入url localhost:8000 来启动项目。但现在我只想通过输入 url localhost/projectname 来开始我的项目。

所以我做了一些挖掘并找到了一种方法来做到这一点,我通过将 server.php 文件从根目录更改为 index.php 并将 htaccess 文件从公共文件夹复制到根目录来实现` .这样我的浏览器只加载了 html 文件或 php 文件,但没有加载 css 文件和 js 文件,所以我不得不修改刀片文件上的链接,例如:

之前的 style.css 文件链接为:

 <link rel="stylesheet" type="text/css" href="{{asset('front_end/assets/css/style.css')}}">

现在我链接相同的 style.css 文件如下:

<link rel="stylesheet" type="text/css" href="{{asset('/public/front_end/assets/css/style.css')}}">

而且效果很好。

但是现在我发现了另一个问题,我在storage/app/public/myfolder 目录中存储了一些文件(图像),因此要访问这些文件,我必须使用命令php artisan storage:link 命令并从中访问文件(图像)上面提到的刀片文件中的目录我使用下面的代码:

<img src="{{$url = Storage::url('myfolder/'.$company->logo_name)}}"> 

此代码仅在我使用php artisan serve 命令启动项目时才有效。现在我没有链接,我该怎么办?你们还能告诉我将server.php 文件更改为index.php 的方式是否正确?你们在实际项目中做了什么?

谢谢。

【问题讨论】:

  • 你不需要为了它工作而搞砸太多,只需创建一个虚拟主机,例如:projectname.app 将它添加到你的主机文件并像访问任何网站一样访问它......只要确定将公用文件夹添加为此虚拟主机的文档根目录
  • 感谢我创建了虚拟主机文件,现在我可以像访问网站一样访问它了。

标签: php laravel .htaccess


【解决方案1】:

在部署 Laravel 项目时,您希望 nginxapache 配置指向项目的 public 路径。无需更改server.phpindex.php 文件。

Apache 配置示例:

<VirtualHost *:80>
   ServerName project.dev
   DocumentRoot "/home/vagrant/projects/project/public"
   <Directory "/home/vagrant/projects/project/public">
      AllowOverride all
   </Directory>
</VirtualHost>

正如您在这个 apache 配置示例中看到的那样,它指向您项目的公共目录。

您可以通过在本地计算机上安装 Apachenginx 在本地实现此目的。

我建议您在决定在服务器上运行它之前,按照 Laravel 的关于使用 Vagrant 的 Homestead 的文档指南了解它是如何工作的。 A link here

您可以采取多种选择来实现基本相同的目标。这取决于您运行的机器和个人喜好。

【讨论】:

  • Laravel 明确指出不能放在根目录 (laravel.com/docs/8.x/installation#directory-configuration) 下以外的其他地方。因此,如果按照 Laravel 文档的建议将 Laravel 直接放在根目录 /home/XYZ/project 下,并且如果根据您的解决方案(设置根目录)将 Apache 更改为指向 /home/XYZ/project/public,那么服务器将返回错误 500 或其他错误。我对吗?如果是:是否有任何其他 Apache 配置选项仅设置 public 目录(不是根目录)?
【解决方案2】:

您不需要修改任何文件。

您需要其中之一:

  • 本地安装的 Web 服务器,Apache 或 Nginx
  • 一个 Vagrant 虚拟机,用于在生产环境中运行项目,如 Homestead
  • Valet

如果您决定使用 Web 服务器,您只需要考虑指向 project/public 文件夹而不是 project

使用此选项之一,您无需修改​​资产网址,因为在任何情况下,public 都不应该是您的网址的一部分。

【讨论】:

  • Laravel 明确指出不能放在根目录 (laravel.com/docs/8.x/installation#directory-configuration) 下以外的其他地方。因此,如果按照 Laravel 文档的建议将 Laravel 直接放在根目录 /home/XYZ/project 下,并且如果根据您的解决方案(设置根目录)将 Apache 更改为指向 /home/XYZ/project/public,那么服务器将返回错误 500 或其他错误。我对吗?如果是:是否有任何其他 Apache 配置选项仅设置 public 目录(不是根目录)?
【解决方案3】:

首先,不要对 server.php 文件做任何调整,这很好。 要使用http://localhost/my-project.dev 或我的http://project.dev 之类的url 运行您的项目,请使用WAMP 或XAMPP(如果在Windows 机器上工作)和用于Linux 的灯。你也可以查看 Laravel 的 Homestead。

然后设置虚拟主机。 请参阅this 在 WAMP 上设置虚拟主机的教程 - http://www.coderomeos.org/how-to-set-up-virtual-host-on-wamp-server

并且不要将您的资产放在 public/assets 文件夹中,以防止使用存储链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-14
    • 2020-07-10
    • 2016-11-25
    • 2018-06-08
    • 1970-01-01
    • 2021-06-22
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多