一.安装docker并启动
yum install dockersystemctl start docker
二.安装nginx
centos 7默认不能从yum中安装nginx,原因可以自己搜索一下,需要执行以下命令
sudo rpm -uvh http://nginx.org/packages/centos/7/noarch/rpms/nginx-relea-centos-7-0.el7.ngx.noarch.rpm
之后就可以用yum安装了
yum install nginx
三.用docke湖北招生网r拉取php-fpm
因为是老项目,不支持php7,所以用的php5.6的fpm镜像
docker pull phpdockerio/php56-fpm
四.运行phpfpm
docker run --name php56fpm -v /var/www/html/xx/www/:/var/www/html/ --privileged=true -d phpdockerio/php56-fpm
解释:
docker run
运行镜像
–name php56fpm
将运行的容器命名为php56fpm
-v /var/www/html/xx/www/:/var/www/html/
映射本地目录到容器内部的/var/www/html/,php-fpm容器内部会通至夏过这个目录访问php文件.
–privileged=true
增加特如何找到个人档案权,不然没有权限访问/var/www/html/这里的文件,会导致nginx也无法访问文件(file not found.).(共三种方法,见ps.1)
-d
后台运行
phpdockerio/php56-fpm
镜像的名字
可以不映射端口,如果需要映射,增加参数-p 9001:9湖南农业大学000 本地的9001端口映射到容器内部的9000端口,但nginx只用内部的9000端口就够了.
五.修改宿主机的nginx配置
vi /etc/nginx/conf.d/xx.conf
location ~ \.php$ { root /var/www/html/xx/www; fastcgi_pass 172.17.0.2:9000; fastcgi_index index.php; fastcgi_param script_filename /var/www/html/$fastcgi_script_name; include fastcgi_params;}
其中的fastcgi_pass和fastcgi_param和平时配置nginx的时候有所区别,
fastcgi_pass要指定容器的ip,通过 docker inspect php56fpm 可以查看具体ip(“ipaddress”: “172.17.0.2”)
fastcgi_param script_filename 后面的值要改成容器内部的地址/var/www/html/
ps.1乡村风情
在cent os 7中运行,如果不加–privileged=true,则会出现nginx没有访问内部文件的权限
原因是centos7中的安全模块linux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
1,在运行容器的时候,给容器加特权:–privileged=true
2,临时关闭linux:
su -c “tenforce 0”
3,添加linux规则,将要挂载的目录添加到白名单:
chcon -rt svirt_sandbox_file_t /var/www/html/xx/www/
ps.2
如果遇到明明没用开启端口却提示端口占用,有可能是之前删除的容器还没完全退出,重启一下docker就好了
比如提示:error respon from daemon: driver failed programming external connectivity……
iptables failed: iptables –wait -t nat -a docker
本文发布于:2023-04-07 13:02:51,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/a7ae16db7d15082f9844ffe904382705.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Centos7下,宿主机nginx配合docker环境的php.doc
本文 PDF 下载地址:Centos7下,宿主机nginx配合docker环境的php.pdf
留言与评论(共有 0 条评论) |