2016-10-11 11 views
0

マシン上にドッカーを備えた完全なLNMP環境を設定したいと思います。しかし、分離されたphp-fpm & nginxコンテナには何か問題があります。php-fpm&nginxが分離ドッカーコンテナにあり、.phpファイルを実行できません

何I'vが行わことです:docker.ioから

  1. プル画像:

    ドッカプルPHP:7.1-FPM

    ドッカプルnginxの

  2. 実行して画像:

    ドッカーrun -d --name php-fpm -v/data/Docker/php-fpm /configs/:/usr/local/etc/php-fpm.d -v/data/Docker/nginx/html:/ var/www/html php:7.1-fpm

    ドッカーrun -d --name nginx/var/www/html -p 80:80 - リンクphp-fpm nginx

すべてのディレクトリ&ファイルは755の特権です。

コンフィグファイルは、以下のrを:

nginx.conf

server { 
    listen 80 default_server; 
    server_name SkyEyeLab; 
    root /var/www/html; 

    fastcgi_read_timeout 90; 
    location ~ \.php { 
    fastcgi_pass php-fpm:9000; 
    } 
} 

php-fpm.conf(重要な設定セクションの一部):

listen 0.0.0.0:9000 
listen.allowed_clients = any 

は、その後、私はnginxの&のphp-FPMの環境をチェックします:

[[email protected] ~]# docker ps 
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS       NAMES 
6faf4a4b4f7e  nginx    "nginx -g 'daemon off" 19 minutes ago  Up 19 minutes  0.0.0.0:80->80/tcp, 443/tcp nginx 
9a6caff831d3  php:7.1-fpm   "php-fpm"    20 minutes ago  Up 20 minutes  9000/tcp      php-fpm 
[[email protected] ~]# docker exec 6faf4a4b4f7e ping -c3 php-fpm 
PING php-fpm (172.17.0.2): 56 data bytes 
64 bytes from 172.17.0.2: icmp_seq=0 ttl=64 time=0.081 ms 
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.018 ms 
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.041 ms 
--- php-fpm ping statistics --- 
3 packets transmitted, 3 packets received, 0% packet loss 
round-trip min/avg/max/stddev = 0.018/0.047/0.081/0.026 ms 
[[email protected] ~]# docker exec 9a6caff831d3 ss -apn 
Netid State  Recv-Q Send-Q  Local Address:Port  Peer Address:Port 
tcp LISTEN  0  128     *:9000     *:*  users:(("php-fpm",pid=1,fd=7)) 

すべてうまく見えます。それから私は、次の内容の(nginxののの/ var/www/htmlディレクトリにmoutedさ)/データ/ドッカー/ nginxの/ htmlの下a.php作成:

<?php 
phpinfo(); 
?> 

はその後、Webブラウザで http://localhost:80/a.phpにアクセスします。

[[email protected] ~]# docker logs 6faf4a4b4f7e 
220.181.171.120 - - [11/Oct/2016:10:25:11 +0000] "GET /a.php HTTP/1.1" 200 31 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" 
220.181.171.120 - - [11/Oct/2016:10:25:12 +0000] "GET /a.php HTTP/1.1" 200 31 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" 
220.181.171.120 - - [11/Oct/2016:10:31:58 +0000] "GET /a.php HTTP/1.1" 200 31 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" 
220.181.171.120 - - [11/Oct/2016:10:31:59 +0000] "GET /a.php HTTP/1.1" 200 31 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" 

に思えa.php正しく実行&を解析されます。 しかし、私は唯一の空のページを持って、私はnginxのののaccess.logをチェックします。しかし、なぜ私はWebブラウザでphpinfo()の結果を見ることができないのですか?うまく

答えて

0

、私はnginxのの設定ファイルを変更した後:

server { 
    listen 80 default_server; 
    server_name SkyEyeLab; 
    root /var/www/html; 

    fastcgi_read_timeout 90; 
    location ~ \.php { 
    fastcgi_pass php-fpm:9000; 
    } 
} 

server { 
    listen 80 default_server; 
    server_name SkyEyeLab; 
    root /var/www/html; 

    fastcgi_read_timeout 90; 
    location ~ \.php { 
    fastcgi_pass php-fpm:9000; 
    include fastcgi.conf; 
    } 
} 

にerverythingは罰金行きます。

fastcgi.confは環境設定ファイルです。あなたのnginxの設定ディレクトリ(通常は/ etc/nginx)の下をチェックして、そこにfastcgi.confかfastcgi_paramがあるかどうかを調べることができます。

0

あなたはnginxのconfの中で名前 "PHP-FPM" を使用したい場合は、多分、あなたはこのようにコンテナをリンクする必要があります。

docker run -d --name php-fpm -v /data/Docker/php-fpm/configs/:/usr/local/etc/php-fpm.d -v /data/Docker/nginx/html:/var/www/html php:7.1-fpm 

以降:

docker run -d --name nginx --link php-fpm:php-fpm -v /data/Docker/nginx/configs/:/etc/nginx -v /data/Docker/nginx/html:/var/www/html -p 80:80 --link php-fpm nginx 
関連する問題