docker部署php-fpm与nginx 已排万坑

docker部署php-fpm与nginx

本人被此问题折磨多时,如若不足或有误的地方,欢迎评论指出

php-fpm

Step1

从 docker 拉取 php-fpm 镜像(此处以7.4版本为例)

docker pull php:7.4-fpm

Step2

创建 php-fpm 容器

docker run -itd --name php-fpm \
-v /var/lib/docker/volumes/conf/etc:/usr/local/etc \
-v /www:/var/www/html -p 9000:9000 \
--privileged=true php:7.4-fpm

nginx

Step1

从 docker 拉取 nginx 镜像

docker pull nginx

Step2

创建 nginx 容器

docker run -d --name nginx -p 8080:8080 \
-v /www:/usr/nginx/html \
-v /var/lib/docker/volumes/nginx/_data/conf:/etc/nginx/conf.d \
--link php-fpm
nginx

-i:以交互模式运行容器,通常与-t同时使用

-d:后台运行容器,并返回容器ID

-t:为容器重新分配一个伪输入终端,通常与-i同时使用

–name:容器名称

-p:冒号左边对外端口号:容器端口号(如若使用服务器,请添加对外端口规则)

-v:冒号左边为本机路径:冒号右边为容器内路径(如若容器内无该对应路径则会自动创建)

–privileged=true:使容器内的root拥有真正的root权限

–link:通过已创建的容器名称实现互联

Step3

创建容器成功后可以下列两种方法查看是否link成功:

方法一

进入容器中查看是否有link关系

例:在这里插入图片描述

方法二

ping php-fpm对应ip

docker exec -it nginx bash
apt-get update
apt install iputils-ping
ping ***.**.**.* #此处为php-fpm容器端口,通过在容器外 ps -ef|grep 9000 可得出

注意:如若容器中的文件并未挂载出来,对应服务器目录为空,则无需挂载目录,先把对应容器跑起来

例:Copy nginx容器中default.conf的配置文件至服务器;此命令是在容器外使用,且容器id与容器name都可作为条件cp

docker ps -a #查看容器ID or name
sudo docker cp 57tq633x8818:/etc/nginx/conf.d /var/lib/docker/volumes/nginx/_data/conf #docker cp 容器ID:容器目录 本地目录

copy成功后即可再按照上面方法挂载对应目录

Question1:(页面显示)file not found 或者 打开对应php路径直接下载php文件

此问题一般都出现在nginx的配置文件中(default.conf)

解决办法:

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    root   /usr/nginx/html;
    location / {
        #伪静态
        try_files $uri $uri/ /index.php$is_args$query_string;
        index  index.php index.html index.htm;
    }

    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   php-fpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
        include        fastcgi_params;
    }

    access_log  /var/log/nginx/laravel_access.log  main;
    error_log  /var/log/nginx/laravel_error.log warn;
}

以上修改的主要内容在location /{}与location ~ .php${}中,此外还有root路径切记添加

Question2:若所有步骤与配置都如上解决,依旧无法正常打开时

!!!!一定要清理缓存或者重新创建一个新的php文件再试试,血的教训

如若还是行不通,请再重新阅读此篇文章或联系作者

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caomei__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值