本文详细介绍了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/bashphp的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-enableswoolephp/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、Filenotfoundnginx特定的站点网站根目录没法立即投射给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的大量内容,请搜索您之前文章的内容或者再次访问下面的相关文章。期待你以后的申请!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)