Alibaba Cloud Linux 3 +Docker 部署 ThinkPHP6 (宝塔环境)-问题篇

上篇文章介绍了具体的操作步骤,这里总结记录一下部署过程中遇到的问题:

这里注明一下,所有操作容器的命令要在项目目录(tp6)下运行,目录结构如下图:

宿主机(安装宝塔面板)

├─ /www/wwwroot/tp6 (项目目录)

├─app

├─config

├─public

├─vender

... ...

├─think

├─Dockerfile

├─docker-composer.yml

一、Nginx 报 "502 Bad Gateway"

步骤1:检查 PHP-FPM 是否正常运行并监听 9003 端口

首先需要找到运行 PHP-FPM 的容器,并确认其内部端口:

执行命令:

#列出所有运行中的容器

root@iZ2ze8he63z0zt6g8kiae2Z tp6\]# docker ps

#输出结果

bash 复制代码
CONTAINER ID   IMAGE                       COMMAND                  CREATED       STATUS       PORTS                                                 NAMES
7205b7c455d3   tp6-tp6-php-fpm             "docker-php-entrypoi..."   7 hours ago   Up 7 hours   9000/tcp, 0.0.0.0:9003->9003/tcp, :::9003->9003/tcp   tp6-tp6-php-fpm-1

关键信息:

  • 容器名称(如tp6-tp6-php-fpm-1

  • 端口映射(如9003:9000表示宿主机 9003 映射到容器内 9000 端口)

步骤 2:检查容器内 PHP-FPM 是否监听正确端口

进入容器内部,确认 PHP-FPM 实际监听的端口(通常是 9000,而非宿主机的 9003):

bash 复制代码
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash

# 在容器内执行,检查PHP-FPM监听端口
root@7205b7c455d3:/var/www/html# netstat -tlnp | grep php-fpm

运行结果:

bash 复制代码
tcp6       0      0 :::9000                 :::*                    LISTEN      1/php-fpm: master p 

根据运行结果,就可以确定Docker内部实际监听的端口是9000

在我们的Docker中,有一段代码如下图红框中部分就是用来修改 PHP-FPM 的监听端口,从默认的 9000 端口改为 9003 端口。

  • s/listen = 9000/listen = 9003/ 是替换规则,意思是将所有 "listen = 9000" 字符串替换为 "listen = 9003" ,这里是完全匹配的原则。

再看看容器内的www.conf中的内容,

bash 复制代码
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash


//编辑www.conf文件
root@7205b7c455d3:/usr/local/etc/php-fpm.d# vim /usr/local/etc/php-fpm.d/www.conf

如下图:

这里可以看到文件 中是 listen = 127.0.0.1:9000,按照匹配规则,肯定是修改不掉这部分的,所以,我们先临时修改一下(即:进入www.conf文件,修改内容 为 listen = 9003 保存退出)

ctrl + PQ键退出容器

bash 复制代码
# 重启容器(会自动加载修改后的配置)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker restart tp6-tp6-php-fpm-1

等待5秒,再次进入容器,检查PHP-FPM监听的端口

bash 复制代码
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash

# 在容器内执行,检查PHP-FPM监听端口
root@7205b7c455d3:/var/www/html# netstat -tlnp | grep php-fpm

运行结果:

还是9000,可能存在多个配置文件:

bash 复制代码
#容器内直接搜索配置文件中的 listen 配置,查看都有哪些配置文件监听了9000端口
grep -r "listen = " /usr/local/etc/php-fpm.d/

运行结果:

这里看到以.conf结尾的文件有两个一个www.conf,一个是zz-docker.conf,zz-docker.conf文件中监听了9000端口,我们把这个也修改一下试试。

bash 复制代码
#修改配置文件listen = 9000 为 listen = 9003
vim /usr/local/etc/php-fpm.d/zz-docker.conf

退出容器,重启容器

ctrl + PQ键退出容器

#重启容器

docker restart tp6-tp6-php-fpm-1

等待5秒,再次进入容器,检查PHP-FPM监听的端口

bash 复制代码
​
# 进入容器(替换容器ID或名称)
[root@iZ2ze8he63z0zt6g8kiae2Z tp6]# docker exec -it tp6-tp6-php-fpm-1 bash

# 在容器内执行,检查PHP-FPM监听端口
root@7205b7c455d3:/var/www/html# netstat -tlnp | grep php-fpm

​

运行结果如下图:

监听接口正确了,我们再尝试打开网址,这时候显示404错误。

十月一了,放假休息,放假回来我再补充404错误的解决步骤!

相关推荐
乾元4 分钟前
10 个可复制的企业级项目:从需求到交付的 AI 网络工程模板(深度实战版)
运维·网络·人工智能·网络协议·安全
不做菜鸟的网工17 分钟前
使用docker部署Speedtest-X内网测试网站
docker
遇见火星1 小时前
Linux 命令篇:df、du、fdisk 磁盘管理
linux·运维·服务器·df·du·fdisk
噎住佩奇1 小时前
正则表达式(Regex)入门
运维·正则表达式
运维行者_1 小时前
远程办公场景 NFA:从网络嗅探与局域网流量监控软件排查团队网络卡顿问题
运维·服务器·开发语言·网络·自动化·php
❀͜͡傀儡师1 小时前
docker部署Apache Answer 一款高效问答平台
docker·容器·apache
成为你的宁宁2 小时前
【Zabbix运维监控实战(附图文教程):Nginx 服务可用性、连接请求状态、CPU 内存占用与 JVM(Jar 包 / Tomcat)全维度监控】
运维·jvm·nginx·zabbix
gaize12132 小时前
个人建站服务器完全指南:从基础认知到实操选型
运维·服务器
咕噜企业分发小米2 小时前
新人如何利用好云服务器
运维·服务器
q***44152 小时前
Xshell高效运维实战技术文章大纲基础配置与优化
运维