docker 安装 php-fpm 服务扩展配置的示例教程详解

docker 安装 php-fpm 服务扩展配置的示例教程详解,第1张

docker安装php-fpm服务/扩展/配置的示例教程详解

本文详细介绍了docker的php-fpm服务项目/扩展/设备的安装。根据案例代码非常详细,对大家的学习、培训或者工作都有一定的参考价值,有需要的朋友可以参考一下。

brew在mac上安装php56的时候,各种google看不懂的不准确都是因为openssl是1.1的版本号造成的。修修补补太多了。现在用docker搭建一个php56-fpm服务项目容器,nginx直接安装在主机上。

PHPDockerHub主页

创建一个容器

#建立容器 dockerrun-d\ --namephp56-fpm\ -p9056:9000\ -v/home/wwwroot:/var/www/html --privileged=true php:5.6-fpm

注:

/var/www/html是phpdocker镜像系统的工作文件目录。

-v/home/wwwroot:/var/www/html的作用是将主机的站点文件目录初始化到容器中。比如/home/wwwroot/siteA,容器中的浏览位置是/var/www/html/siteA。

nignx分享php需求时,会将脚本名SCRIPT_NAME和脚本文件夹名SCRIPT_FILENAME发送给fpm,然后fpm加载脚本实现。

在应用fpm容器时,一定要注意nginx共享的SCRIPT_FILENAME是否是fpm容器中合理的站点路径。如果nginx的根不能立即投影到fpm容器的站点根,我们必须在php位置将其完全改为fpm容器的站点根。那么fpm可以被正确地加载到脚本中。

即主机上的/home/wwwroot/sitea/public/index.PHP应改为/var/www/html/sitea/public/index.PHP并发送到fpm容器,否则,未找到的文件将被报告为不正确。

因此,nginx在配备服务器时要注意以下卷路径转换:

server{ listen8056; .... #宿主机的站点网站根目录 root/home/wwwroot/siteA/public; location~*(^[/]*.php)[/|$]{ #容器中的站点网站根目录 root/var/www/html/siteA/public; pass_proxy:127.0.0.1:9056; includefastcgi.conf; } }

但总的来说,大家都是dockernginxdockerphp-fpm,两个容器都统一投影站点文件目录,所以不容易出现这个问题。这里的Nginx是直接安装在主机上的,这就导致nginx在分享php需求时,完全改变了站点的根目录。

登录容器

#查询容器是不是运作 dockerps #登录容器 dockerexec-itphp56-fpm/bin/bash

php的docker镜像系统是我们可以根据ubuntu应用apt-get进行安装的专用工具,比如vim/vilrzsznet-tools。

#在应用apt-get安裝一些专用工具前,必须update升级一下源 #不然会apt-getE:Unabletolocatepackage apt-getupdate apt-getinstallvim

安装php/pecl扩展

安装php扩展

也就是php官方的网络扩展,比如shomp等内置但默认不开启的扩展。

#查询内置了这些扩展 cd/usr/local/php/ext&&ls-l #安裝扩展 dcoker-php-ext-installshmop

安装pecl扩展

Pecl安装在容器中,可以马上应用pecl安装,注意扩展到php版本号的应用。

docker-php-ext-enable的应用范围是相对于/usr/local/etc/PHP/conf.d/docker-PHP-ext-{extname}的扩展名形成一个环境变量。ini,方便PHP加载扩展。

#igbinaryphp5.6最大版本号是2.0.8 peclinstalligbinary-2.0.8 docker-php-ext-enableigbinary #phpredisphp5.6最大版本号是4.3.0 peclinstallredis-4.3.0 docker-php-ext-enableredis #swoolephp5.6最大版本号是2.0.11 pcelinstallswoole-2.0.11 docker-php-ext-enableswoole

php/php-fpm配备了

/usr/local/etc是php容器的配置文件目录,里面内置了php和php-fpm的环境变量。配置文件目录如下:

root@aa739596b579:/usr/local#treeetc/ etc/ |--pear.conf |--php#php配备文件目录 ||--conf.d#php扩展配备 |||--docker-php-ext-shmop.ini ||--php.ini#cp的php.ini-development/production ||--php.ini-development ||--php.ini-production |--php-fpm.conf#php-fpm的配备内置的主要是导入php-fpm.d |--php-fpm.conf.default#php-fpm配备本身同php-fpm.d/www.conf一致 |--php-fpm.d#php-fpm的扩展配备 |--docker.conf |--www.conf#php-fpm配备本身方式啊max/minchildren啊都在这儿 |--zz-docker.conf

可以将主机的配置文件目录投影到容器的/usr/local/etc,但是要注意主机的配置文件目录和容器的当前目录的一致性,或者立即在容器中写入环境变量。按照docker的核心理念,我们应该在主机上维护一个环境变量,并将其投影到容器的配置文件目录上,这样才能充分发挥docker容器的可重用性。

将主机的php环境变量投影到容器

-v/opt/docker/conf/php/php.ini:/usr/local/etc/php/php.ini -v/opt/docker/conf/php/php-fpm.ini:/usr/local/etc/php-fpm.d/www/conf

难题[/s2/]

1、Filenotfound
nginx特定的站点网站根目录没法立即投射给fpm容器,在location中再次特定fpm容器的站点网站根目录。2、apt-getE:Unabletolocatepackage
实行apt-getupdate更新一下源就可以。3、容器的有关承诺
工作中文件目录:/var/www/html提议将宿主机的站点文件目录投射到此文件目录
配备文件目录:/usr/local/etc留意配备文件目录构造
php扩展文件目录:/usr/local/php/ext能够查询php内置的扩展包应用docker-php-ext-install安裝更便捷

关于docker安装php-fpm服务/扩展/设备的这篇文章到此为止。关于docker安装php-fpm的大量内容,请搜索您之前文章的内容或者再次访问下面的相关文章。期待你以后的申请!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/774535.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存