实现dnmp中多站点多版本php并存

news/2024/10/21 3:37:29

实现dnmp中多站点多版本php并存

PHP多版本部署之docker方式

背景

搞了一段时间Python,这两天又要开始做一些PHP相关的项目了,本地开发环境、测试环境、线上环境都需要重新弄了,为了开发方便还是决定用Docker方式来部署,自己又不想写Dockfile和compose文件啥的。于是找了下,发现了一个不错的项目:https://github.com/Tinywan/dnmp (国内:https://gitee.com/Tinywan/dnmp) ,根据介绍完成安装

发现问题

安装结束后发现,nginx配置里只有一个站点(A),于是在nginx容器的vhost目录中配置另一个站点(B),想要的是 A站点用PHP8,B站点用PHP7.4。看介绍上说支持多版本PHP共存,可任意切换(PHP5.4、PHP5.6、PHP7.1、PHP7.2、PHP7.3、PHP7.4、PHP8.0)。但并不满足我多站点用不通版本PHP共存的需求。

解决问题

解决思路

由于多个版本的PHP镜像的端口映射9000:9000,会导致 Bind for 0.0.0.0:9000 failed: port is already allocated 错误,那么就从修改端口容器端口入手。

解决步骤

  1. 修改docker-compose.yml文件
    为了好记,就把php版本放到端口号里,如php74,端口就为9074。

  2. 修改nginx子站点的配置(php版本和端口号)

  3. 修改php74容器
    文件位置:/usr/local/etc/php-fpm.d/zz-docker.conf,将9000 改为 9074

重启容器,进入到nginx容器里访问,site1.dev和site2.dev 都能显示对应的php版本

新的问题和解决办法

于是我修改本机hosts,将自定义域名指向对应的nginx容器IP, 但当我在浏览器输入 site1.dev或site2.dev 并不可访问, 输入:localhost(与site1.dev一个站点)是可以的,就很奇怪。在宿主机ping不通nginx容器,看了下docker的network是bridge方式也没问题,
突然想到这次用的windows电脑安装docker时候选择的是wsl方式(兼容linux子系统),修改本机hosts 指向 wsl子系统应该就行了。

127.0.0.1 localhost
172.19.23.124 site1.dev #wsl子系统IP
172.19.23.124 site2.dev

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72484.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

数据采集实践第一次作业

目录作业①:定向爬取大学排名信息实验要求及结果心得体会作业②:商城商品比价定向爬虫实验要求及结果心得体会作业③:爬取网页中的JPEG和JPG格式图片实验要求及结果心得体会码云连接作业①:定向爬取大学排名信息 实验要求及结果要求 用requests和BeautifulSoup库方法定向爬…

mysql学习笔记3

通过Node-red对mysql数据库进行操作 1、环境配置 操作系统 宿主机:UBUNTU 虚拟环境:KVM 虚拟机1:Armbian 虚拟机2:Debian 网络 虚拟网络(默认的default配置): +-------------------+ +-------------------+ | | | …

这十年我与广告不共戴天练就的十八般武艺 #PC去广告 #手机去广告

背景大家应该都体会过广告的苦恼,比如看着好看的电视,突然给播放广告,这时候痛苦系数飙升。随着社会进步,广告的载体,还有形式也越来越多,比如手机端各种APP启动广告,PC端软件弹窗,网站Banner等,这些广告最主要的目的就是诱骗你误操作点击,然后陷入几乎无限弹窗的循环…

产品经理不会画架构图

在当今竞争激烈的科技行业中,产品经理扮演着至关重要的角色。他们是产品的灵魂人物,负责从概念提出到产品上线的整个过程。然而,有一个问题常常困扰着许多产品经理,那就是不会画架构图。在一些团队中,产品经理不会画架构图可能会遭到同事的质疑甚至群嘲。这不仅会影响产品…

CI/CD主流技术

软件持续集成/持续部署(CI/CD)阶段的主流技术1. 代码管理:Git(常用平台如 GitHub, GitLab, Bitbucket)SVN(Subversion)2. 单元测试:JUnit(Java)PyTest(Python)Jest(JavaScript/Node.js)NUnit(C#)3. 构建打包:Maven(Java)Gradle(Java、Kotlin)npm / Yarn(…

《使用Gin框架构建分布式应用》阅读笔记:p52-p76

《用Gin框架构建分布式应用》学习第4天,p32-p76总结,总计25页。 一、技术总结 1.Go知识点 (1)iouti 书上使用ioutil包读取JSON文件,但是从go 1.16 开始,不再推荐使用ioutil,应该使用os 包。 (2)json.Unmarshal() vs json.NewDecoder() 当数据已经被加载到内存中了(例如一个…

2024-10-16

选择器: 全局 元素 类 ID 合并示例点击查看代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title&…