質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.59%

Dockerを使用しDebian:buster, mariaDB, PHP,でwordpress環境を構築しようとしている502が改善できない。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 877

score 1

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
Dockerを使用しDebian:buster, mariaDB, PHP,でwordpress環境を構築しようとしています。

発生している問題・エラーメッセージ

502エラーが発生してしまいます。
error.logは
下記のようなログを吐いています。

2020/08/18 11:28:59 [error] 315#315: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: _, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8000/", host: "localhost:8000"

該当のソースコード

FROM debian:buster

RUN apt-get update &&\
     apt-get install -y\
    vim\
    openssl\
    nginx\
    less\
    wget\
    mariadb-server\
    php7.3-fpm php7.3-common php7.3-mysql\
    php7.3-gmp php7.3-curl php7.3-intl php7.3-mbstring\
    php7.3-xmlrpc php7.3-gd php7.3-xml\
    php7.3-cli php7.3-zip php7.3-soap php7.3-imap

COPY ./srcs/run.sh ./run.sh
COPY ./srcs/webserver ./etc/nginx/sites-available/webserver

CMD bash ./run.sh
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# In most cases, administrators will remove this file from sites-enabled/ and
# leave it as reference inside of sites-available where it will continue to be
# updated by the nginx packaging team.
#
# This file will automatically load configuration files provided by other
# applications, such as Drupal or Wordpress. These applications will be made
# available underneath a path with that package name, such as /drupal8.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    root /var/www/html/wordpress;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
          proxy_pass http://127.0.0.1:8000;
        allow all;
    }

    # pass PHP scripts to FastCGI server

    #location ~ \.php$ {
        #include snippets/fastcgi-php.conf;

        #With php-fpm (or other unix sockets):
        #fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        #fastcgi_pass 127.0.0.1:9000;
        #include /etc/nginx/conf.d/*.conf;
        #include /etc/nginx/sites-enabled/*;
        #fastcgi_intercept_errors on;
        # With php-cgi (or other tcp sockets):
        #fastcgi_pass 127.0.0.1:9000;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny all;
    #}
}


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
#    listen 80;
#    listen [::]:80;
#
#    server_name example.com;
#
#    root /var/www/example.com;
#    index index.html;
#
#    location / {
#        try_files $uri $uri/ =404;
#    }
#}
#!/bin/sh

service mysql start

wget https://wordpress.org/latest.tar.gz -P ./tmp
tar xzvf  ./tmp/latest.tar.gz -C /var/www/html/

chown -R www-data:www-data /var/www/
chmod -R 755 /var/www/
echo "daemon off;" >> /etc/nginx/nginx.conf
ln -s /etc/nginx/sites-available/webserver  /etc/nginx/sites-enabled/
rm -rf /etc/nginx/sites-enabled/default


service php7.3-fpm start
service nginx start
bash

試したこと

fpmの再起動等試してみましたが改善しませんでした。

記述で間違いがあるようでしたら指摘していただきたいです。
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mit0223

    2020/08/19 19:02

    php-fpm が起動していないのだと思いますが、php-fpm のログや /var/log/messages にエラーがでてませんか?

    キャンセル

  • tasads

    2020/08/19 23:38 編集

    回答ありがとうございます。
    fpmのログには
    [18-Aug-2020 11:28:59] NOTICE: fpm is running, pid 300
    [18-Aug-2020 11:28:59] NOTICE: ready to handle connections
    [18-Aug-2020 11:28:59] NOTICE: systemd monitor interval set to 10000ms
    と出ていたので起動してると思ってるのですが。。。

    キャンセル

  • TaichiYanagiya

    2020/08/20 00:33

    構成は、「*:80/nginx → fcgi(socket or port)/php-fpm」ではなく、「*:80/nginx → 127.0.0.1:8000/? → fcgi(socket or port)/php-fpm」なのですか?
    8000 番ポートは何が担当しているのでしょうか?

    キャンセル

  • tasads

    2020/08/20 10:08

    docker run --name *** -it -p 8000:80 *** でlocalの8000ポートとnginxの80ポートに接続しています。

    キャンセル

回答 1

checkベストアンサー

0

docker run の "-p 8000:80" は docker ホストの 8000 番ポートをコンテナの 80 番ポートへポートフォワードする設定です。
一方、nginx 設定 "proxy_pass http://127.0.0.1:8000;" はコンテナの 8000 番ポートへリバースプロキシーする設定なので、まったく関係がありません。

nginx から php-fpm に接続するための設定が必要です。
php-fpm は http ではなく fcgi で話しますので、proxy_pass ではなく、fastcgi_pass で接続します。

php-fpm 側で socket で待ち受けているのであれば、fastcgi_pass unix:(ソケットファイルのパス); とします。
nginx 実行ユーザーでソケットファイルにアクセスできるよう、php-fpm の設定ファイルでソケットファイルのオーナーやパーミッションを設定します。

php-fpm 側で TCP (9000 番ポートが使われることが多い) で待ち受けているのであれば、fastcgi_pass 127.0.0.1:9000; とします。

nginx 側では、fastcgi_pass の他に、fastcgi_param などの設定も必要になると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • PHPに関する質問
  • Dockerを使用しDebian:buster, mariaDB, PHP,でwordpress環境を構築しようとしている502が改善できない。