簡體   English   中英

如何通過unix socket設置Apache2和PHP-FPM?

[英]How to set up Apache2 and PHP-FPM via unix socket?

我嘗試通過unix socket設置Apache2和PHP-FPM,但結果是

(111)連接被拒絕:AH02454:FCGI:嘗試連接到Unix域套接字/run/php/php7.2-fpm.sock(*)失敗

泊塢窗,compose.yml

version: "2"
services:
    php:
        build: "php:7.2-rc-alpine"
        container_name: "php"
        volumes:
            - "./code:/usr/local/apache2/htdocs"
            - "./php7.2-fpm.sock:/run/php/php7.2-fpm.sock"
    apache2:
        build: "httpd:2.4-alpine"
        container_name: "apache2"
        volumes:
            - "./code:/usr/local/apache2/htdocs"
            - "./php7.2-fpm.sock:/run/php/php7.2-fpm.sock"
        ports:
            - 80:80
        links:
            - php

www.conf

listen = /run/php/php7.2-fpm.sock

的httpd-vhosts.conf

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>

但是通過TCP連接時它是有效的。

www.conf

listen = 127.0.0.1:9000

的httpd-vhosts.conf

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://php:9000"
</FilesMatch>

好吧,所以回購有助於解決這個問題。

問題#1 - www.conf被復制到apache容器中

您在apache容器Dockerfile中有以下語句

COPY ./www.conf /usr/local/etc/php-fpm.d/www.conf

這實際上是用於運行php-fpm而不是apache容器的php容器

問題#2 - 永遠不會創建套接字

你的卷綁定- "./php7.2-fpm.sock:/run/php/php7.2-fpm.sock"正在創建套接字,它們不是由php-fpm創建的。 因此,您創建了一個空白文件,並嘗試連接到它不會做任何事情

問題#3 - 在php中沒有配置來創建套接字

默認情況下,docker容器在fpm容器內創建監聽0.0.0.0:9000 您需要覆蓋容器內的zz-docker.conf文件來解決問題。

ZZ-docker.conf

[global]
daemonize = no

[www]
listen = /run/php/php7.2-fpm.sock
listen.mode = 0666
更新了docker文件
 FROM php:7.2-rc-fpm-alpine LABEL maintainer="Eakkapat Pattarathamrong (overbid@gmail.com)" RUN docker-php-ext-install \\ sockets RUN set -x \\ && deluser www-data \\ && addgroup -g 500 -S www-data \\ && adduser -u 500 -D -S -G www-data www-data COPY php-fpm.d /usr/local/etc/php-fpm.d/ 

問題#4 - 套接字被共享為托管卷

您應該使用命名卷共享套接字,因此套接字根本不應該在主機上。

更新了docker-compose.yml
 version: "2" services: php: build: "./php" container_name: "php" volumes: - "./code:/usr/local/apache2/htdocs" - "phpsocket:/run/php" apache2: build: "./apache2" container_name: "apache2" volumes: - "./code:/usr/local/apache2/htdocs" - "phpsocket:/run/php" ports: - 7080:80 links: - php volumes: phpsocket: 

在解決了所有問題后,我能夠讓php頁面正常工作

PHP-FPM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM