Apache使用多個docker php-fpm

原本centos linux安裝Apache及php5.4(php-fpm),最近一些framework只支援php7.2,想到要昇級或共存就覺得會有一場災難,想說是否可以使用docker php7.2-fpm來直接使用,減少系統的昇級或更換過程的一些問題。

可以直接略過1,2二步奏直接pull build好的images

docker pull catyku/php-fpm7.2

https://hub.docker.com/r/catyku/php-fpm7.2/

1.首先建立自己需要的php-fpm Dockerfile

FROM php:7.2-fpm
MAINTAINER yku "[email protected]"

#  設定時區
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#  更新系統及增加php外掛mysqli pdo_mysql等
RUN apt-get update && apt-get install -y \
        git \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
        && docker-php-ext-install zip \
        && docker-php-ext-install pdo_mysql \
        && docker-php-ext-install opcache \
        && docker-php-ext-install mysqli \
        && rm -r /var/lib/apt/lists

2.編譯Dockerfile

docker build -t catyku:php-fpm7.2 .

3.然後啟動docker

docker run -d --name php-fpm7.2 -p 127.0.0.1:9001:9000 -v /var/www/:/var/www catyku:php-fpm7.2

因為9000 port已經給原本系統的php5.4-fpm使用了,只好把它調開,並指定www工作資料夾給php7.2-fpm

(建議可以細調php-fpm的設定檔,或是把設定檔也-v出來)

4.需要啟用模組proxy_fcgi

(因為原本就使用php-fpm架構,所以此處不需要設定)

/etc/httpd/conf.modules.d/00-proxy.conf

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

5.設定apache virtualhost來使用php7.2-fpm

centos的路徑在/etc/httpd/conf.d/

virtualhost設定檔內容如下:

<VirtualHost *:80>
DocumentRoot "/var/www/php7-test"
ServerName shop.yslifes.com
#<FilesMatch \.php$>
        #SetHandler application/x-httpd-php
        #SetHandler proxy:fcgi://127.0.0.1:9001/var/www/php7-test/
        #SetHandler "proxy:unix:/var/run/php5-fpm.sock"
#</FilesMatch>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9001/var/www/php7-test/$1

<Directory "/var/www/php7-test">
        #Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        #Require all granted
</Directory>
#ServerAlias shoptest.the-creations.com.tw
#RLimitMEM 16
</VirtualHost>

6.撰寫程式測試

建立目錄

sudo mkdir /var/www/php7-test
sudo nano /var/www/php7-test/index.php

index.php內容

<?php phpinfo();?>

7.連線測試一下

參考資料:

用 Docker 构建 PHP 开发环境

發表迴響