通过 Nginx 部署 Laravel 站点 Vs. PHP Artisan 发球
Deploying Laravel site via Nginx Vs. PHP Artisan Serve
从本地开始,我只做了 php artisan serve
并且效果很好。
在我的生产 VM 中,我不确定我是否应该做同样的事情 php artisan serve &
这样我就不用安装Nginx、配置文档根目录等等。
这样做有什么缺点吗?
nginx
- 旨在解决c10k问题
- 即使在巨大的负载下也表现出色
- 是反向代理
- 使用最先进的 http 解析器来检查请求是否有效
- 使用极其强大而简单的配置语法
- 带有大量模块来处理 http 流量(auth 模块、mirror 模块)
- 可以终止ssl/tls
- 可以在多个 php 服务端点(或任何其他使用 http 的端点)之间进行负载平衡
- 可以重新加载以应用新配置,而不会丢失当前连接
php artisan 服务
- 旨在快速 fiddle 使用基于 laravel 的网站
- 写在php,不是为了解决c10k问题
- 一旦超过可用内存就会崩溃(默认为 128 MB,很快就会被填满)
- 不是反向代理
- 没有使用最先进的 HTTP 解析器
- 未经过压力测试
- 无法像 nginx 那样扩展到其他机器
- 不终止 SSL。即使这样做,与纯编译解决方案相比,它也会慢得令人痛苦
- 不是 event-based 或线程化方式 php-fpm/nginx 所以一切都在同一个进程中执行。没有反应堆模式可以卸载到工作人员以跨 cpu 个核心进行扩展,并防止在一段代码被搞砸时导致服务器停机。这意味着,如果您从 MySQL 加载过多数据 - 进程会停机,因此服务器也会停机。
对于有经验的人来说,配置 nginx 平均需要大约 30 秒。我是根据经验说的,因为这是我的日常工作。使用像 ansible 这样的自动化工具使这变得更加容易,你几乎可以忘记它。
使用旨在 fiddle 并在生产环境中快速测试部分代码的 Web 服务器会带来风险。您的网站会变慢。如果任何脚本小子决定在 foreach 循环中 运行 curl 请求,您的网站将很容易崩溃。
如果您认为安装和配置 nginx 很麻烦并且您想使用 php artisan serve
,请确保您 运行 它受到监督(supervisord
是我的首选工具)。如果它崩溃了,它会重新启动。
在我看来,运行 一台 php-based 服务器来为您的应用提供服务毫无价值。配置 nginx 所花费的时间/php-fpm 并不多,即使您是新手也是如此。
凡事都有风险和收益,但在这种特殊情况下 - 收益不存在,但肯定会出现问题。
TL;DR
不做,花那几分钟配置nginx。最好的软件是那种能很好地工作到你可以忘记它的程度的软件。 nginx 就是这些工具之一。 PHP 在许多领域都表现出色,但 built-in 网络服务器不是您应该在生产中使用的那些东西之一。使用在战场上经过验证的工具。
php artisan serve
永远不应在生产环境中使用,因为它使用的是 PHP7 内置服务器功能,该功能 仅用于开发目的.
看到这个page
因此,请避免在生产中使用。相反,使用 Apache 或 Nginx,这两者都是不错的选择,具体取决于您的需要。 Nginx 通常可能更快(并非总是如此)。
从本地开始,我只做了 php artisan serve
并且效果很好。
在我的生产 VM 中,我不确定我是否应该做同样的事情 php artisan serve &
这样我就不用安装Nginx、配置文档根目录等等。
这样做有什么缺点吗?
nginx
- 旨在解决c10k问题
- 即使在巨大的负载下也表现出色
- 是反向代理
- 使用最先进的 http 解析器来检查请求是否有效
- 使用极其强大而简单的配置语法
- 带有大量模块来处理 http 流量(auth 模块、mirror 模块)
- 可以终止ssl/tls
- 可以在多个 php 服务端点(或任何其他使用 http 的端点)之间进行负载平衡
- 可以重新加载以应用新配置,而不会丢失当前连接
php artisan 服务
- 旨在快速 fiddle 使用基于 laravel 的网站
- 写在php,不是为了解决c10k问题
- 一旦超过可用内存就会崩溃(默认为 128 MB,很快就会被填满)
- 不是反向代理
- 没有使用最先进的 HTTP 解析器
- 未经过压力测试
- 无法像 nginx 那样扩展到其他机器
- 不终止 SSL。即使这样做,与纯编译解决方案相比,它也会慢得令人痛苦
- 不是 event-based 或线程化方式 php-fpm/nginx 所以一切都在同一个进程中执行。没有反应堆模式可以卸载到工作人员以跨 cpu 个核心进行扩展,并防止在一段代码被搞砸时导致服务器停机。这意味着,如果您从 MySQL 加载过多数据 - 进程会停机,因此服务器也会停机。
对于有经验的人来说,配置 nginx 平均需要大约 30 秒。我是根据经验说的,因为这是我的日常工作。使用像 ansible 这样的自动化工具使这变得更加容易,你几乎可以忘记它。
使用旨在 fiddle 并在生产环境中快速测试部分代码的 Web 服务器会带来风险。您的网站会变慢。如果任何脚本小子决定在 foreach 循环中 运行 curl 请求,您的网站将很容易崩溃。
如果您认为安装和配置 nginx 很麻烦并且您想使用 php artisan serve
,请确保您 运行 它受到监督(supervisord
是我的首选工具)。如果它崩溃了,它会重新启动。
在我看来,运行 一台 php-based 服务器来为您的应用提供服务毫无价值。配置 nginx 所花费的时间/php-fpm 并不多,即使您是新手也是如此。
凡事都有风险和收益,但在这种特殊情况下 - 收益不存在,但肯定会出现问题。
TL;DR
不做,花那几分钟配置nginx。最好的软件是那种能很好地工作到你可以忘记它的程度的软件。 nginx 就是这些工具之一。 PHP 在许多领域都表现出色,但 built-in 网络服务器不是您应该在生产中使用的那些东西之一。使用在战场上经过验证的工具。
php artisan serve
永远不应在生产环境中使用,因为它使用的是 PHP7 内置服务器功能,该功能 仅用于开发目的.
看到这个page
因此,请避免在生产中使用。相反,使用 Apache 或 Nginx,这两者都是不错的选择,具体取决于您的需要。 Nginx 通常可能更快(并非总是如此)。