服务器
本文主要介绍了docker如何安装php-fpm服务器/扩展/配置。 内容简单易懂,请学习一下。 学习结束后一定会有收获。 以下,让编辑一起看看吧。
在mac上用brew安装php56时,由于openssl是1.1版,出现了各种谷歌无法处理的错误,非常辛苦。 现在,我们使用docker创建php56-fpm服务容器,nginx直接连接到主机。
PHP文档中心主页
创建容器
#创建容器
文档运行- d\\ \
--name php56-fpm \\\\
-p 9056:9000 \\\\&; quot;
-v /home/wwwroot:/var/www/html
--privileged=true
php:5.6-fpm
注意:
/var/www/html是php docker镜像的工作目录。
-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 location中将其重新定义为fpm容器的站点根。 现在,fpm可以正确读取脚本。
也就是说,将主机上的/home/wwwroot/sitea/public/index.PHP转换为/var/www/html/sitea/public/index.PHP以获取fpm 否则,将向文件not found报告
因此,在nginx上配置服务器时,请注意以下卷路径转换:
服务器{
listen 8056
.
#宿主机的站点根目录
root /home/wwwroot/siteA/public;
location至* ( ^ [/] *.PHP ) [/|$] {
#容器中的站点根目录
root /var/www/html/siteA/public;
pass_proxy: 127.0.0.1:9056;
include fastcgi.conf;
}
}
但是,这没有问题,因为一般大家都是docker nginx docker php-fpm,两个容器都统一映射了站点目录。 当nginx首次直接安装在主机上并传输php请求时,此处的nginx需要重新定义站点的根目录。
登记容器
#检查容器是否正在运行
文档PS
#登记容器
docker exec-it PHP 56-fpm/bin/bash
php的docker镜像基于ubuntu,可以使用apt-get安装所需的工具,如vim/vi lrzsz net-tools。
在使用apt-get安装工具之前,必须在update中更新源代码
#否则为apt-get E: Unable to locate package
获取更新
apt-get安装vim
安装php/pecl扩展
安装php扩展
也就是说,php官方扩展,例如shomp这样的具有但默认不开启的扩展。
#确认附带了这些扩展功能
cd /usr/local/php/ext ls -l
#安装扩展功能
dcoker-php-ext-install shmop
安装pecl扩展
需要注意的是,由于容器安装了pecl,因此只需直接用pecl安装即可,并扩展了对php版本的支持。
docker-php-ext-enable的主要用途是生成扩展配置文件和向/usr/local/etc/PHP/conf.d/docker-PHP-ext-{ extname }.ini
# igbinary php5.6的最高版本为2.0.8
pecl install igbinary-2.0.8
docker-php-ext-enable igbinary
# phpRedis php5.6的最高版本为4.3.0
pecl install redis-4.3.0
docker-php-ext-enable redis
# swoole php5.6的最高版本为2.0.11
pcel install swoole-2.0.11
docker-php-ext-enable swoole
php/php-fpm配置
/usr/local/etc是php容器的配置目录,包含php和php-fpm配置文件。 配置目录的结构如下:
root @ aa 739592 b 579:/usr/local # tree etc /
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/min children在这里
|-- 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
常见问题
1、文件不基础
无法将在nginx上指定的站点根目录直接映射到fpm容器。 在location中重新指定fpm容器的站点根目录。
2、apt-get E: Unable to locate package
只需运行apt-get update来刷新源代码即可。
3、容器承诺
工作目录:/var/www/html建议您将宿主机的站点目录映射到此目录
配置目录:/usr/local/etc注意配置目录结构
php扩展目录:用于查看/usr/local/PHP/extPHP附带的扩展包。 使用docker-php-ext-install安装很简单
以上是关于docker如何安装php-fpm服务/扩展/配置的内容。 如果你掌握了知识和技能,你就可以分享它并向更多的人展示。
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn