当前位置:首页 » 《随便一记》 » 正文

windows上使用docker配置 nginx+php-fpm集群_huangweibbk的专栏

9 人参与  2022年02月20日 12:34  分类 : 《随便一记》  评论

点击全文阅读


本文nginx 运行在主机上(不在docker容器中),而php-fpm 配置在docker容器中。

最终效果就是在电脑浏览器中访问 本机的nginx ,只要是php请求都转发到 3个容器中。

而且容器启动带上了环境变量,每个容器的应用都可以获取到属于自己的应用标识。 

1.安装docker 和  开启3个php-fpm 容器。

windows docker 安装过程就略了。不会的自行百度。

docker 安装好了  

先设置 获取 docker镜像服务器地址。

这里可以加速。

设置好了以后  开一个windows 的cmd 程序 执行指令:

docker pull registry.cn-hangzhou.aliyuncs.com/1221/huangweigang:huang7

这个是我自己制作的镜像 。相对网上通用的php8-fpm的镜像。我的镜像做了如下新增操作。

1.新增了 apt-get update  指定的更新数据源 从阿里云获取,这样装软件更快

2.装上了vim 工具命令 (拉取的 别人的php8-fpm 容器 是不支持vim 命令的,当然别人是为了让镜像更小

3. php-fpm 的位置文件www.conf  里面 listen =  unix:/tmp/php-cgi.sock; 改成了listen:127.0.0.7:9000 ,因为不是在容器内调用php-fpm 是在容器外,所以得改。我的容器只做个php解析器。

当然网友也可以不用我的镜像,直接去网上找 php8-fpm的镜像。然后自己设置。

拉取镜像后  用 命令:

docker images

查看 镜像的id  ,然后用命令 开启3个docker容器 

docker run -d --name php8-1  -p 9011:9000 -v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1:/mydata -e hid=3  e77f01937c11 

docker run -d --name php8-2  -p 9012:9000 -v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html2:/mydata -e hid=3  e77f01937c11 

docker run -d --name php8-3  -p 9013:9000 -v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html3:/mydata -e hid=3  e77f01937c11 

 启动容器。

这个命令我解释下

参数-d ,--name就不解释了 都知道。

-p 9012:9000 ,9012是 主机端口(本机的nginx 负载均衡访问的就是这个端口),就是windows电脑的端口,等于 docker 容器暴露出来端口,9000 指的是容器内部的端口。

 -v C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1:/mydata  表示将本地电脑的  C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1 目录映射到容器里面的目录/mydata ,这样你修改脚本在windows 直接修改即可,不用进入容器内用linux命令操作。方便。

-e hid=3 传入环境变量,等于是应用id ,php 可以通过函数getenv(‘hid’) ,获取。方便应用根据这个应用id 获取属于应用自己的应用配置。

 最后一个  e77f01937c11  就是镜像id 了 每个人不一样。你拉取的镜像是什么id 就是这个。

2,下载nginx 配置 。 如何下载就省略了。现在主要讲配置。我这里是用phpstudy做的集成环境一部到位。

我在php_study 里面创建了一个网站。www.huangse.com (当然要修改windows 的host文件才能访问)

修改nginx.conf文件 

在 server上面加上

upstream upstream_name{
       server 127.0.0.1:9011;#这个就是docker容器1
       server 127.0.0.1:9012;#这个就是docker容器2
       server 127.0.0.1:9013;#这个就是docker容器3
   }

我开了3个容器。 里面都运行着 php-fpm 

修改 网站的 nginx配置文件,注意红色字体。

server {
        listen        80;
        server_name  www.huangse.com;
        location / {
            index index.php index.html error/index.html;
            error_page 400 /error/400.html;
            error_page 403 /error/403.html;
            error_page 404 /error/404.html;
            error_page 500 /error/500.html;
            error_page 501 /error/501.html;
            error_page 502 /error/502.html;
            error_page 503 /error/503.html;
            error_page 504 /error/504.html;
            error_page 505 /error/505.html;
            error_page 506 /error/506.html;
            error_page 507 /error/507.html;
            error_page 509 /error/509.html;
            error_page 510 /error/510.html;
            autoindex  off;
        }
        location ~ \.php(.*)$ {
        root   "/mydata/";
            #fastcgi_pass   127.0.0.1:9011;
             fastcgi_pass  upstream_name;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  /mydata/$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
      error_log C:/phpstudy_pro/Extensions/Nginx1.15.11/logs/www.huangse.com_error.log crit;
      access_log C:/phpstudy_pro/Extensions/Nginx1.15.11/logs/www.huangse.com_acess.log;
}

然后分别在 路径 C:/Users/Administrator/Documents/Kitematic/php72/var/www/html1,C:/Users/Administrator/Documents/Kitematic/php72/var/www/html2,C:/Users/Administrator/Documents/Kitematic/php72/var/www/html3,里面放入文件a.php,a.php代码就写这个,打印出应用id。

使用浏览器访问。可以看到  这个数字 从 1 2 3 反复,每次刷新都不一样。 

推荐一个docker 可视化管理软件,Kitematic.

下载后安装到windows ,是个客户端软件。效果如下,可以看到管理的容器数量,还有容器配置的参数,非常方便。


点击全文阅读


本文链接:http://zhangshiyu.com/post/35022.html

容器  镜像  端口  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1