当前位置: 首页 > 网络应用技术

使用nginx单元构建应用程序堆栈

时间:2023-03-05 18:20:38 网络应用技术

  客户经常询问如何在某个技术堆栈中使用NGINX单元。就其而言,NGINX单元易于配置,但是将其集成到各种工具和服务中并不容易;此外,如何使最终客户享受潜在的好处,它也面临着同样的问题。本文旨在通过相当普通的情况讨论此问题。

  我们的许多读者可能遇到了一个问题,即需要生产环境部署过程的自动化,这涉及使用自定义语言运行时版本以及特定的库,模块和扩展程序来满足特定业务需求。一般来说,可以通过暂时采取合理的措施来实现这一目标,但是将自定义的半手动工作流程转换为一系列适合大型可调节自动化的可调节自动化步骤是一项极其乏味的工作。烦人的用户最终将最终选择完全放弃项目。LET审视NGINX单元如何帮助您解决此问题。

  以上方案通常由于需求重叠而变得复杂,例如::

  就每项要求而言,都不难以满足,但是如果需要重复所有步骤,它将带来巨大的压力。在这里,我们建议一种可以减轻这种压力的方法,为您提供更多时间来增加业务价值,而是比铺设管道。您可以直接使用此方法或根据特定方案进行调整。然后,然后

  本质上,我们想为您所选的应用程序介绍一个NGINX单元插件。插件 - 由我们的同事蒂莫·史塔克(Timo Stark)设计,并在github上提供。构造堆栈基于WordPress,生动地称为UnitWP。支持https://kaufdaheim.org网站基于CakePHP的支持,该网站正在帮助德国公司在新的皇冠流行病的封锁期间生存。

  在预配置的端口上接触它。出于在开发环境和环境变量中讨论的原因,设置将故意避免数据库。

  解决方案取决于官方的NGINX单元图像。该图像具有预先配置的PHP 7.3运行和适合NGINX单元的语言模块。与自定义镜子的自行准备相比,这可以节省大量的时间和能量。如果要使用简单的docker映像,则可以使用nginx/unit:1.16.0微镜像,仅包含核心nginx单元可执行文件。有关使用NGINX单元和Docker的解决方案,请参阅我们的官方准则。

  注意:以下步骤假定您有一个PHP Composer依赖的管理器;如有必要,请根据下载说明下载。如果不是,您可以继续使用任何其他可用的安装方法。

  我们首先使用基本作曲家将WordPress应用程序的本地副本配置为创建文件。基本的作曲家配置使用WordPress分支,该分支在GitHub上支持作曲家:

  如果要下载并安装作曲家,请将此代码段保存到Composer.json,然后在同一目录中运行Composer install命令。

  现在,让我们使用以下dockerfile将文件加载到docker镜像中:

  该文件首先使用WordPress所需的几个程序包来自定义基本镜像的PHP环境。如果您的项目仍然需要其他程序包或自定义,那么这将是第一个潜在的扩展。如果您想自己构建整个工具链,则可以使用 - 最小的基本镜像,而不是上述图像。

  随后,该文件将从作曲家创建的目录中复制WordPress文件并设置适当的所有权。它将复制JSON代码段。当容器启动时,代码段将上传到NGINX单元配置。启动脚本将自动运行,但是您也可以按照NGINX单元文档中所述使用自定义证书和Shell脚本。

  以下是NGINX单元配置:

  WordPress的特定路由方案(选择自我选择我们的准则)使用NGINX单元1.16.0中引入的后备路由选项,该选项与NGINX的Try_files指令相似。“应用程序”部分中的不同WP_Direct和WP_Index对象;如果愿意,也可以使用不同的php.ini文件。

  最后,我们将所有内容包装在一个小的构建中。SH脚本:

  对于Yourimagetag,请更换本地标签;对于RemoteMagetag,最终标签包含目标Docker注册表的名称。为了简明,省略并报告了脚本。

  当我们运行build.sh push命令时,脚本将从开始并标记新图像,然后将其推到我们选择的镜像仓库。您还可以增强shell脚本,例如介绍可调节的标签和版本控制或删除同一图像的旧版本以减少混淆。

  NGINX单元的功能还可以为其他方案带来更多好处,即简单而迅速地扩展并关闭本地开发或测试环境。感谢动态配置特征,NGINX单元支持在语言运行时,环境变量,环境变量,环境变量,环境变量,或几乎所有用于处理应用程序的设置。LET基于上述内容的进一步扩展。

  我们的UNITWP WordPress应用程序的开发版本位于GitHub存储库的Dev Sub -Directory中。它使用的设置和解决方案:在Docker和Nginx单元中基本相同,仅在少数不同的位置。

  第一个区别是Dockerfile,它具有以下命令,而无需将WordPress文件复制到镜像中。此更改支持您每次构建镜像时添加特定的php.ini设置。

  另一个重要的区别是使用Docker-Compose添加MariadB数据库容器。以下是Docker-Compose.yaml文件:

  维护服务的容器是做Docker的最佳方法,这就是为什么我们没有在Docker和Nginx单元中添加数据库。在生产环境中,数据库连接可以具有多种表格,因此我们可以使容器通用并且可以使用。在任何情况下都可以在不选择特定数据库的情况下使用。固定的,开发环境通常需要独立,因此该部分的动态配置将在运行时创建一个完全可操作的堆栈。这涉及大量的环境变量,下一步部分将进行详细讨论。

  如果要运行此设置,我们需要升级的Shell脚本。在这里,我们致电Run-local.sh。一种选项用于构建镜子并运行容器。另一个选项用于停止服务并清理:

  如果您想启动或停止本地开发环境,请运行https://www.shouxicto.com/article/run-local.sh dev和https://www.shouxicto.com/article.com/article/article/run-local-local.sh stop命令

  尽管在开发环境中存储一次性优惠券是合理的,但是将硬编码的数据库密码或API访问令牌推向生产代码仓库并不是一个好主意,尽管有人总是会这样做。事件,但是环境变量是硬编码证书的最基本替代方案。

  您可以以各种方式设置环境变量,包括:

  在由NGINX单元配置的开发版本中,我们为两个应用程序使用了“环境”选项,如本示例所示:

  如您所见,“环境”部分中的JSON非常简单:您只需要提供应用程序的键值列表和可变名称的设置。应用程序,在同一环境中不与其他应用程序共享。

  当然,特定方法取决于您的个人选择。但是,我们建议选择一个配置环境变量而不再更改的位置。

  如本文所述,NGINX单元包含许多特征和选项,可以简化涉及多个工具和技术的多层次方案到几个Shell命令:

  总而言之,NGINX单元是提供堆栈的每个订单的理想选择。我们还促进了一些重要的更新,以增强请求路由和应用程序隔离,以提供更多选择,因此请继续关注!

  想要及时,全面地获得与NGINX相关的技术干货,互动问题,系列课程和活动资源?请访问Nginx开源社区的官方网站。