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

2020-06-17 07:26:53易采站长站整理
的错误。

所以

nginx
配置
server
时要注意如下的卷路径转换:


server {
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
是直接装在宿主机上才导致
nginx
转发
php
请求时需要重新定义下站点的根目录。

登陆容器


# 查看容器是否运行
docker ps

# 登陆容器
docker exec -it php56-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 update
apt-get install 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 方便 php 加载扩展。


# 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@aa739592b579:/usr/local# tree etc/
etc/
|-- pear.conf
|-- php # php 配置目录
| |-- conf.d # php 扩展配置
| | |-- docker-php-ext-shmop.ini
| |-- php.ini # cp 的 php.ini-development/production