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

时间:2019-04-04 19:57:28

标签: php laravel nginx laravel-5 artisan

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

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

2 个答案:

答案 0 :(得分:2)

nginx

  • 旨在解决c10k问题
  • 即使在巨大的负载下,表现也非常好
  • 是反向代理
  • 使用最新的http解析器检查请求是否有效
  • 使用功能强大但简单的配置语法
  • 带有大量模块来处理http流量(身份验证模块,镜像模块)
  • 可以终止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在很多方面都表现出色,但是内置的Web服务器并不是您应该在生产中使用的东西之一。使用在战场上得到证明的工具。

答案 1 :(得分:1)

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

查看此page

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