使用 Apache 的不同 Php-Fpm 容器

2023-11-29

我的生产服务器正在运行具有经典结构的 Docker Db-Container、Server-Container 和 Php-Fpm 容器。

我想做的是拆分源代码,以便为项目的 3 个主要部分提供不同的容器。现在,它们以旧的方式工作,例如用于主站点的 mydomain.com/index、用于其他服务的 mydomain.com/api 和 mydomain.com/adm。

我必须如何设置 Apache 虚拟主机才能映射这样的请求?

mydomain.com -> fcgi://siteFpm:9000
mydomain.com/api -> fcgi://apiFpm:9000
mydomain.com/cms -> fcgi://cmsFpm:9000

Thanks


在conf文件或vhosts文件中使用docker-compose公开和FastCgiExternalServer

(请注意,这是我将采取的一种方法,并且仍在研究中。我会在了解更多信息后进行更新。但它应该也能给您一个要做什么的概述。我确实更新了我的答案,而不是一个空洞的承诺,请参阅此这里的例子:在 Vagrant VM(在 Windows 7 主机下)上运行 LAMP 堆栈,完整说明?)

Install docker 撰写它提供了一种官方标准化方法来批量/自动运行 docker 容器,使用docker-compose.yml文件,而不是使用命令行docker命令单独启动每个命令。

In the docker-compose.yml文件,定义您的 php-fpm 服务,例如:

服务:

use the EXPOSE关键字语句/指令,使 php-fpm 的端口可用于 apache。

一个例子expose如本文所示:一台主机上有多个版本的 AMP示例中的位置docker-compose.yml包含这个公开声明:

  expose:      
   - "3306"   

- 这使得 sql 数据库可供其他 docker 容器使用。

您还需要确保 php 文件可用于 php 和 apache 容器 - 信用:https://stackoverflow.com/a/40449377/227926

那么,同样的expose:端口以及服务名称需要从 Apache 引用FastCgiExternalServervhosts 文件或conf 文件中的指令。我认为,选择 vhosts 文件或 conf 文件来放入指令似乎是个人偏好,尽管研究可能会揭示其中一个或另一个更适合您的情况的差异。

conf 文件中的示例如下所示:

FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization

我应该把它放在哪个conf文件中?

答案:有几个选项(如上所述),更详细地说,这些是(假设 Ubunut/Debian Linux 是 Apache 运行的操作系统): - httpd.conf - 000-default.conf(默认虚拟主机)(在可用站点中) - yoursite.conf(在可用站点中) - 和(例如)/etc/apache2/conf-available/php5.6-fpm.conf

这些conf文件位于哪里?

答案:在你的 apache docker 容器内。定义服务后,您将需要使用 docker-compose.yml 文件将描述的设置添加(注入)到容器中。您可以从 doket-compose.yml 执行标准 Linux 命令,将文本插入到配置文件中。

您应该自动添加这些设置,而不是在容器内手动编辑 Apache 配置文件,因为:1) 自动化意味着设置是可重复的,因此可以用于开发工作流程中的不同平台:dev、qa、 uat、live/prod 2) 无需手动工作 3) Docker 容器旨在是短暂的,因为它们可以被销毁和重新创建。任何持久数据都应该保存在它们之外 - 在主机中 - (Dockerfiles中的配置、docker-composer文件、单独文件夹中的资产(图像)、容器外部和主机上的数据库存储。

FastCgi 外部服务器指令示例:

  • Apache 2.4 + PHP-FPM 和授权标头
  • https://www.cyberciti.biz/tips/rhel-fedora-centos-apache2-external-php-spawn.html
  • https://www.howtoforge.com/using-php5-fpm-with-apache2-on-centos-6.2-p2
  • Apache FastCGI PHP 中 FastCgiExternalServer 和 FastCgiServer 的区别?
  • Ubuntu 服务器上的 Apache 2.4.6:客户端被服务器配置拒绝 (PHP FPM) [加载 PHP 文件时]
  • https://www.digitalocean.com/community/questions/apache-2-4-with-php5-fpm?answer=12056
  • https://www.howtoforge.com/tutorial/apache-with-php-fpm-on-ubuntu-16-04/#-making-phpfpm-use-a-tcp-connection-可选

conf 文件和 Apache 的 Debian/Ubuntu 约定的参考

  • https://serverfault.com/questions/216252/how-to-configure-apache-sites-available-vs-httpd-conf
  • https://forum.owncloud.org/viewtopic.php?t=30157
  • https://askubuntu.com/questions/378734/how-to-configure-apache-to-run-php-as-fastcgi-on-ubuntu-12-04-via-terminal

关于 PHP-FPM 的讨论 - https://serverfault.com/questions/645755/differences-and-dis-advanages- Between-fast-cgi-cgi-mod-php-suphp-php-fpm

有关 docker-file.yml 语句的有用相关信息

  • docker compose 中“image”和“build”之间的区别
  • https://docs.docker.com/compose/compose-file/#build

关于一起运行单独容器的类似讨论

  • https://medium.com/docker-captain/multiple-versions-of-amp-in-one-host-6e107c836cd8
  • php docker 链接 apache docker
  • 带有 PHP7 fpm 和 nginx 的多 Docker 容器
  • Docker - 在不同网站的主机和容器上运行 Apache
  • 将 nginx 和 php-fpm 容器链接在一起,以便在 docker prod 中快速交互
  • 如何正确链接 php-fpm 和 Nginx Docker 容器?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apache 的不同 Php-Fpm 容器 的相关文章

  • Rails:在任何源中都找不到并发 ruby​​-1.0.5 (Bundler::GemNotFound)

    我已经用谷歌搜索了很多 但没有发现任何对我的情况有用的东西 docker compose up abc 在日志中生成以下内容 usr lib ruby vendor ruby bundler spec set rb 92 in block
  • PHP 换行符 (\n) 不起作用

    由于某种原因我无法使用 n使用 PHP 输出到文件时创建换行符 上面只写着 n 到文件 我尝试使用 n 同样 它只写 n 如预期 但我一生都无法弄清楚为什么在字符串中添加 n 不会创建新行 我也尝试过 r n但它只是附加 r n 到文件中的
  • XP及PHP MYSQL 练级系统

    我已经查看了所有提出的问题和答案 但我似乎找不到最适合我的答案 我想做的是开发一个系统 当用户达到一定的 XP 限制时 系统会进入下一个级别 它显示了下一个 XP 之前需要多少 XP So lvl1 0 gt lvl2 256 gt lvl
  • 如何使用 jquery ajax 将锚点的值发送到 php

    我正在尝试使用 jquery 将几个锚点的值发送到 php 文件 但我没有从 php 脚本中得到回调 div class result div a href value class star Star 5 a a href value cl
  • 重定向而不是 404 错误页面 - 状态代码不起作用 (Nginx)

    我目前正在迁移到 nginx 服务器 我尝试将其放入名为的 404 ErrorDocument 中404 php 如果我现在尝试访问http mydomain com 404 php 这按预期工作 它将我重定向到 Google 但是一旦我尝
  • 在 PHP 中拆分 XML

    我有一个带有根元素和多个项目子元素的合并 xml 像这样的东西
  • 如何在 PHP 中将默认日期设置为波斯日期?

    如何在 PHP 中将默认日期设置为波斯日期 说吧 如果我echo这个功能date Y m d 然后它会显示2018 03 05但我想要1396 12 14波斯日期 请检查 http php net manual en intldatefor
  • 为什么 SORT_REGULAR 在 PHP 中产生不一致的结果?

    我正在开发一个类 它使 PHP 中的数组排序变得更容易 并且我一直在使用 SORT 常量 但是行为或SORT REGULAR 默认排序类型 似乎有所不同 具体取决于您在数组中添加项目的顺序 此外 我找不到任何模式来解释为什么会出现这种情况
  • 如何使用 Docker 访问输出文件

    我正在编写一个 C 程序 并想在其上使用 Docker 这Dockerfile看起来像下面这样 FROM gcc 7 2 0 ENV MYP repo WORKDIR MYP COPY MYP RUN bin sh c make ENTRY
  • $_REQUEST、$_GET、$_POST 哪一个最快?

    这些代码中哪一个会更快 temp REQUEST s or if isset GET s temp GET s else temp POST s REQUEST http php net manual en reserved variabl
  • 用PHP动态生成二维码[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的网站上生成二维码 他们所要做的就是在其中包含一个 URL 我网站上的变量将提供该 URL
  • 同一路由组的多个前缀

    我正在为一所学校编写一个相当简单的网站 该网站有新闻 文章 视频剪辑 等 它的工作方式是在主页中我们向访问者展示一些课程 例如 gt math gt geography gt chemistry 用户在其中选择 1 网站内容会根据用户的选择
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • PHP 和 MySQL 的重音字符错误

    我的问题是 直接通过 PHP 编写的内容是正确重音的 但是当重音单词来自 MySQL 时 字母会像这样 我尝试使用html charset as ISO 8859 1它修复了 MySQL 字母 但破坏了其他字母 解决这一切的一种方法是设置我
  • Laravel 上传前如何压缩图像?

    我正在制作一个图片库网站 用户可以在其中上传任何图像 它们将显示在前端 我需要在不影响图像质量的情况下压缩图像 以减小图像大小 以便页面加载速度不会影响那么大 我使用以下代码来上传图像 rules array file gt require
  • 我应该使用排队系统来处理付款吗?

    我在用着Slim https www slimframework com和这个结合Stripe 的 PHP 库 https stripe com docs api php在我的应用程序中处理付款 一切都很好 但是直到最近 我在我的系统中发现
  • 使用 html5 分块上传文件

    我正在尝试使用 html5 的文件 API 分块上传文件 然后在服务器端用 php 重新组装它 我正在上传视频 但是当我在服务器端合并文件时 大小增加了 并且它变成了无效文件 请注意 以下 html5 代码仅适用于 chrome 浏览器 在
  • 有关于 PHP 中的 V8JS 的文档吗?

    有没有关于V8JS的文档 我是否只需要标准 PHP 或一些扩展即可使用 V8JS 我将非常感谢有关 PHP 中的 V8JS 的任何信息 要求 PHP 5 3 3 和 V8 库和标头安装在正确的路径中 Install http www php
  • SimpleXML插入处理指令(样式表)

    我想集成一个XSL文件在一个XML给我的字符串php CURL命令 我试过这个 output XML gived me by curl option hotel simplexml load string output hotel gt a
  • MYSQL 按喜欢/不喜欢和受欢迎程度排序

    我有评论表 其中包括喜欢和不喜欢的内容 现在我在正确的顺序上遇到了问题 实际上 我的系统在顶部显示了最多点赞的评论 我正在 youtube 上寻找类似系统的东西 这意味着 100like 100dislikes 的评论的顺序高于 1 1 我

随机推荐

  • 可以“使用严格”警告而不是错误

    使用时use strictperl 将在不安全的构造上生成运行时错误 现在我想知道是否可以让它只打印警告而不导致运行时错误 或者是use warnings 或 w 关于相同问题的警告 No use strict无法发出警告而不死 它所做的只
  • 为什么 Next.js 中间件会多次运行?

    我创建了一个新鲜的Next js using npx create next app latest typescript 安装后 版本为13 3 4 在不更改任何文件的情况下 我添加了一个新的middleware ts文件内的src文件夹
  • Java中有没有办法实现n层嵌套循环?

    换句话说 我可以做类似的事情吗 for for for 除了N次 换句话说 当调用创建循环的方法时 它会被赋予一些参数 N 然后该方法将创建 N 个嵌套在另一个循环中的循环 当然 我们的想法是应该有一种 简单 或 通常 的方法来做到这一点
  • 我希望我的 Domino Servlet 获得经过身份验证的用户会话

    这似乎是一个非常基本的问题 在 Domino 上托管的正在运行的 Servlet 中 我想要访问 Domino 资源 我已经使用 IBM Notes 和 Domino 的非常精细的安全性明智地保护了这些资源 我希望 Servlet 能够向
  • React Native 错误:原始“”必须包含在显式 组件中

    您好 我在本机反应中遇到此错误 无法找出导致此错误的原因 帮助将不胜感激 谢谢 问题是空格 但是 使用制表符不算空格 尝试删除之间的空间tag和comment在第 32 和 37 行
  • 如何使用 XLRD 或 openpyxl 编辑 Excel 工作簿,同时保留图表?

    我有一本工作簿 里面有一些工作表 其中一张纸上有图表 我需要使用 xlrd 或 openpyxl 编辑另一张工作表 但是 每当我保存工作簿时 图表就会消失 有什么解决方法吗 是否有另一个保留图表和格式的 python 包 目前这两者都不可能
  • Spring 3 MVC + MySQL:无法存储 € 字符

    我使用 Hibernate 和 MySQL 5 设置了 Spring 3 MVC 在 Web 表单中 我在字段中输入单个字符 即仅一个字符 当我尝试保存数据时 出现以下异常 java sql BatchUpdateException Dat
  • Gradle 任务配置与任务执行

    下面的代码有什么区别 task A println configuration task B lt lt println action 我认为这与评价有关 即任务 A 总是被评估 而任务 B 仅在执行时才进行评估 事实上 任务 A 的 pr
  • 在 Monotouch 中使用 CoreAnimation 为自定义属性设置动画?

    这本质上与此处发布的问题相同 在 CALayer 中对自定义属性进行动画处理一年多前 尚未得到答复 我创建一个自定义图层并在其上画一个圆圈 我希望能够对圆的半径 以及稍后的其他属性 进行动画处理 根据我读到的内容 我是这样设置的 publi
  • 我在哪里可以找到一些 UML 示例? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我需要大量 UML 图样本作为开发我自己的图的起点 有谁知道有什么好的网站可以找到吗 Thanks 学习 UML 的最佳资源是 Martin Fowler 的 UML 蒸馏 如今 这
  • 在离线 iOS 应用程序中使用 MBTiles

    我已经有一个使用 MBTiles 格式存储的地图 我想在我正在制作的应用程序中使用它 应用程序在移动设备上没有信号 连接的情况下运行至关重要 Mapbox 之前有一个示例 介绍了如何将 MBTiles 与 RMMBTilesSource 一
  • 使用四元数从 iPhone 计算偏航、俯仰和滚动?

    我见过很多问题和文章提到四元数可以用来从 iPhone 获得更好 更准确 更稳定的偏航 俯仰和横滚读数 而不是读取它的直接偏航 俯仰和横滚读数 但与此同时 我还没有看到任何在iPhone平台上实现四元数的正确方法 作为初学者 真的很难知道这
  • Socket.io 不适用于 Firefox 和 Chrome

    我正在尝试开发一个简单的聊天应用程序 这是我的chat js file var app require http createServer handler io require socket io listen app fs require
  • 在 python 中使用 cairosvg 模块时可以指定缩放吗

    cairosvg 的命令行版本允许缩放 这是帮助函数的输出 cairosvg h usage cairosvg h v f pdf png ps svg d DPI W WIDTH H HEIGHT s SCALE u o OUTPUT i
  • Kafka Streams - 如何更好地控制内部创建的状态存储主题的分区?

    Kafka Streams 中的状态存储是在内部创建的 状态存储按键分区 但不允许提供除by key 据我所知 问题 How to 控制状态存储内部创建主题的分区数量 状态存储主题如何推断默认情况下要使用的分区数量和分区 以及如何覆盖 如果
  • OpenGL 计算着色器 SSBO

    我想要一个在输出缓冲区中写入 1 的计算着色器 我编译着色器并将其附加到程序中 没有问题 然后我调用glDispatchCompute 函数 我等到计算着色器结束 但当我看到数组时 只有 0 谁能告诉我错误在哪里 这是我的计算着色器代码 v
  • 是否无法从 BroadcastReceiver 启动活动

    我想从扩展 BroadcastReceiver 的类中调用此活动 但它不起作用 Intent i new Intent DevicePolicyManager ACTION SET NEW PASSWORD context startAct
  • OmniFaces 条件注释未写入 HTML 输出

    我正在使用 OmniFaces conditionalComment 加载 IE 6 浏览器的 javascript 文件 在网站上 它说脚本应该包含在页面中 如下所示 这不是有效的 xml 因此不能在 JSF xhtml 文件中使
  • 正则表达式从数字到数字匹配?

    有没有办法从一个数字到另一个数字进行正则表达式 我有这个曲目列表 01 Intro 02 Waage 03 Hy nen feat Samra 04 Ich will es bar feat Haftbefehl 05 Am Boden b
  • 使用 Apache 的不同 Php-Fpm 容器

    我的生产服务器正在运行具有经典结构的 Docker Db Container Server Container 和 Php Fpm 容器 我想做的是拆分源代码 以便为项目的 3 个主要部分提供不同的容器 现在 它们以旧的方式工作 例如用于主