通过Nginx Vs部署Laravel站点PHP工匠服务

问题描述 投票:0回答:2

从本地,我只做php artisan serve,它工作正常。在我的生产虚拟机中,我不确定是否应该执行相同的php artisan serve &,因此我不必安装Nginx,配置文档根目录等等。

这样做有什么不利之处吗?

php laravel nginx laravel-5 artisan
2个回答
2
投票

nginx的

  • 旨在解决c10k问题
  • 即使在巨大负荷下也能表现得非常好
  • 是一个反向代理
  • 使用最先进的http解析器来检查请求是否有效
  • 使用非常强大而简单的配置语法
  • 附带了大量的模块来处理http流量(auth模块,镜像模块)
  • 可以终止ssl / tls
  • 可以在多个php服务端点(或任何其他说http的端点)之间加载平衡
  • 可以重新加载以应用新配置,而不会丢失当前连接

php工匠服务

  • 旨在快速摆弄基于laravel的网站
  • 用php编写,不是为解决c10k问题而设计的
  • 一旦超出可用内存就会崩溃(默认为128 MB,快速填满)
  • 不是反向代理
  • 没有使用最先进的http解析器
  • 没有经过压力测试
  • 不能像nginx那样扩展到其他机器
  • 不会终止SSL。即使它确实如此,与纯编译解决方案相比,它也会非常缓慢
  • 不是基于事件或以php-fpm / nginx的方式进行线程化,所以一切都在同一个进程中执行。没有反应器模式可以卸载到工作人员以跨越cpu核心进行扩展,并防止在一段代码混乱时将服务器关闭。这意味着如果从MySQL加载太多数据 - 进程停止,因此服务器也是如此。

对于有经验的人来说,配置nginx平均需要约30秒。我是从经验中说话,因为这是我的日常工作。使用像ansible这样的自动化工具可以使这更容易,你几乎可以忘记它。

使用设计用于在生产中快速测试部分代码的Web服务器会带来风险。您的网站会变慢。如果任何脚本小子决定在foreach循环中运行curl请求,您的站点将容易崩溃。

如果您认为安装和配置nginx是一件麻烦事,并且您想要使用php artisan serve,请确保您在监督下运行它(supervisord是我的工具)。如果它崩溃了,它会再次启动。

在我看来,运行基于PHP的服务器来为您的应用程序提供服务毫无价值。配置nginx / php-fpm所花费的时间并不是很大,即使你是新手也是如此。

一切都伴随着风险和收益,但在这种特殊情况下 - 收益不存在,而确定会出现问题。


TL; DR

不要这样做,花几分钟配置nginx。最好的软件是能够很好地完成工作的软件,你可以忘掉它。 nginx就是其中一种工具。 PHP在很多方面都很出色,但内置的webserver并不是你应该在生产中使用的东西之一。使用战场上经过验证的工具。


1
投票

php artisan serve永远不应该在生产环境中使用,因为它使用的PHP7内置服务器功能仅用于开发目的。

看到这个page

所以,请避免在生产中使用。相反,使用Apache或Nginx,这两者都是不错的选择,具体取决于您的需求。 Nginx通常可能更快(并非总是如此)。

© www.soinside.com 2019 - 2024. All rights reserved.