为啥 laravel homestead 没有运行 Apache

Posted

技术标签:

【中文标题】为啥 laravel homestead 没有运行 Apache【英文标题】:Why laravel homestead is not running Apache为什么 laravel homestead 没有运行 Apache 【发布时间】:2015-04-25 19:30:27 【问题描述】:

显然,我的 Laravel 项目确实需要 .htaccess 规则,而 nginx 对我来说似乎不是最佳解决方案,

1- 我的问题是为什么 Laravel 没有为 Apache 提供宅基地! 经过我进行的一项小型研究,我发现 online tool 用于转换规则,但输出不起作用(太短),而 Apache 更可能是已知和可用的,而且它更容易为安全和漂亮的 URL 定义规则..等等。 (至少对我来说)

2- 请给我答案,解释他们为什么选择 Nginx!,更重要的是我需要知道老年人和专家将使用什么(Nginx、Apache)

3- 你建议我在 Homestead 上安装 Apache 吗?

【问题讨论】:

一步一步可以找到here 【参考方案1】:
    Laravel homestead 目前可以使用 Homestead.yaml 文件安装 apache。

为您的网站添加一个名为type 的密钥。将其设置为apache。像这样:

sites:
    - map: laravel.local
      to: "/home/vagrant/laravel"
      type: apache

确保不要把 apache 和 nginx 混为一谈,那是行不通的。

然后运行 ​​vagrant up 并安装 apache 并提供正确的配置文件。

如果还是不行,那么先确保update到最新版的宅基地。

    这是一篇关于此事的有趣文章:https://www.nginx.com/blog/nginx-vs-apache-our-view/。 TLDR:Nginx 更快。

    仅当您有一个现有项目并且确实需要使用 apache 时。或者,如果您的应用程序将在 apache 服务器上运行。重新开始?使用 nginx。

【讨论】:

那个看起来很复杂的问题?我可以用 12 个字符解决它。 令我惊讶的是,Laravel 带有 .htaccess 文件,而 Homestead 不支持开箱即用。经过一个小时的搜索,这救了我的培根。【参考方案2】:

步骤如下here。

    SSH 进入 vagrant -> vagrant ssh

    停止 Nginx -> sudo service nginx stop

    删除它 -> sudo apt-get purge nginx

    更新你的 repos -> sudo apt-get update

    安装 apache -> sudo apt-get install apache2

    重启->sudo service apache2 restart

您现在在 Apache 服务器上,根据需要更新 apache conf 文件。

【讨论】:

完成此操作后,我设法将sites-available/home/vagrant/Code 配置为我的文档根目录。我现在的问题是 Apache 显示 php 代码而不是执行它。经过研究,我发现这是因为没有启用 PHP。问题是:如何在刚刚安装的 Apache 2.4 上启用 PHP 5.6? @MarcoAurélioDeleu 尝试按照this link. 的说明进行操作。否则,我建议将您的问题作为标准 SO 问题提出。 这个答案虽然有效,但不应被视为已接受所提出的问题! @BrianVanegasParra 你是对的。我并没有真正回答这三个问题中的任何一个,只是如何为 apache 配置 laravel。所以提问者应该随意给任何更合适的答案打勾。 这不是必须的,在 Homestead.yaml 文件中指定“apache”作为服务器类型就足够了。有关详细信息,请参阅下面的 @martijn-imhoff 的答案。【参考方案3】:

您到底想做什么,也许我们可以为您的问题提供解决方案。你真的不需要用 .htaccess 重写 URL,因为 Laravel 的路由会处理这个问题。

1) 不管是什么软件,如果您需要为每个特定项目配置网络服务器,最好自己配置与该项目相关的 vagrant box。

2) Nginx 的性能优于 apache,并减少了很多根本不需要的臃肿。它也是 forge 使用的,因此 homestead 反过来使用它来模拟 forge 环境。

3)见第1点,为本项目配置自己的vagrant box。

【讨论】:

以上是关于为啥 laravel homestead 没有运行 Apache的主要内容,如果未能解决你的问题,请参考以下文章

Vagrant Share - Laravel Homestead,Ubuntu

在 Laravel 的 Homestead 中运行 PHPUnit

迁移到 Homestead 后在 PhpStorm 中为 Laravel 运行测试

在 PhpStorm 中为 Laravel Homestead vagrant VM 运行测试

无法在 Laravel Homestead 中运行工匠命令

Laravel Homestead Box 0.4.2使用php5.6而不是php7