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错误的解决步骤!

相关推荐
HAORChain2 小时前
Fabric 2.x 外部链码部署(External Chaincode Service)实战攻略
linux·docker·区块链·fabric
Lin_Aries_04212 小时前
部署 GitLab 服务器
linux·运维·服务器·docker·gitlab·github
早睡冠军候选人4 小时前
K8s学习----节点(Node)
运维·学习·云原生·容器·kubernetes
2501_920047034 小时前
k8s-pod的容器类型
云原生·容器·kubernetes
MinggeQingchun4 小时前
Elasticsearch - Linux下使用Docker对Elasticsearch容器设置账号密码
elasticsearch·docker
会飞的小蛮猪5 小时前
运维之路(SSH工具集)
运维·经验分享·工具
❀͜͡傀儡师5 小时前
Docker部署Kafka Native
docker·容器·kafka
IT成长日记5 小时前
【Nginx开荒攻略】静态文件服务深度解析:MIME类型映射与优化实战
linux·运维·服务器·nginx·mime
wanhengidc6 小时前
云手机服务器多开需要注意哪些
运维·服务器·智能手机