web-dev-qa-db-ja.com

NGINX:unix:/var/run/php7.0-fpm.sockへのconnect()が失敗しました(2:そのようなファイルまたはディレクトリはありません)

Php7でUbuntu 16.04に合わせて調整しながら このAnsibleチュートリアル を実行しようとしています。このメッセージの下に、私のAnsibleファイルがあります。実行してブラウザでページにアクセスしようとすると、404が表示され、nginxエラーログに次のように記録されます。

2016/10/15 13:13:20 [crit] 28771#28771:* 7への接続中にunix:/var/run/php7.0-fpm.sockへのconnect()が失敗しました(2:そのようなファイルまたはディレクトリはありません)アップストリーム、クライアント:93.xxx.xxx.xx、サーバー:95.xx.xx.xx、リクエスト: "GET/HTTP/1.1"、アップストリーム: "fastcgi:// unix:/var/run/php7.0- fpm.sock: "、ホスト:" 95.xx.xx.xx "

そこで、ソケットファイルが存在するかどうかを確認し、存在するようですが、lsの動作がおかしい:

$ Sudo ls -l /var/run/php
total 4
-rw-r--r-- 1 root     root     5 Oct 15 13:00 php7.0-fpm.pid
srw-rw---- 1 www-data www-data 0 Oct 15 13:00 php7.0-fpm.sock
$ Sudo ls -l /var/run/php7
ls: cannot access '/var/run/php7': No such file or directory
$ Sudo ls -l /var/run/php7.0-fpm.sock
ls: cannot access '/var/run/php7.0-fpm.sock': No such file or directory

名前lsの一部で検索すると、phpを見つけることができるのに、それ以上のphp7またはフルネームphp7.0-fpm.sock

そして最も重要なことは、nginxでこれをどのように機能させることができるのでしょうか?すべてのヒントを歓迎します!

以下にAnsibleファイルを貼り付けました

---
- hosts: php
  become: true

  tasks:
  - name: install packages
    apt: name={{ item }} update_cache=yes state=latest
    with_items:
      - git
      - mcrypt
      - nginx
      - php-cli
      - php-curl
      - php-fpm
      - php-intl
      - php-json
      - php-mcrypt
      - php-mbstring
      - php-sqlite3
      - php-xml
      - sqlite3

  - name: enable mbstring
    Shell: phpenmod mbstring
    notify:
      - restart php7.0-fpm
      - restart nginx

  - name: create /var/www/ directory
    file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700

  - name: Clone git repository
    git: >
      dest=/var/www/laravel
      repo=https://github.com/laravel/laravel.git
      update=no
    become: true
    become_user: www-data
    register: cloned

  - name: install composer
    Shell: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    args:
      creates: /usr/local/bin/composer

  - name: composer create-project
    composer: command=create-project working_dir=/var/www/laravel optimize_autoloader=no
    become: true
    become_user: www-data
    when: cloned|changed

  - name: set APP_DEBUG=false
    lineinfile: dest=/var/www/laravel/.env regexp='^APP_DEBUG=' line=APP_DEBUG=false

  - name: set APP_ENV=production
    lineinfile: dest=/var/www/laravel/.env regexp='^APP_ENV=' line=APP_ENV=production

  - name: Configure nginx
    template: src=nginx.conf dest=/etc/nginx/sites-available/default
    notify:
      - restart php5-fpm
      - restart nginx

  handlers:
    - name: restart php7.0-fpm
      service: name=php7.0-fpm state=restarted

    - name: restart nginx
      service: name=nginx state=restarted

    - name: reload nginx
      service: name=nginx state=reloaded
25
kramer65

同じ問題がありました。解決策は非常に簡単です。

Nginx confファイルでは、アップストリーム化を試みています

unix:/var/run/php7.0-fpm.sock

正しいパスは

unix:/var/run/php/php7.0-fpm.sock


documentation にこれに関する言及があります

Nginxは、Unixドメインソケットを使用してPHP-FPMと通信します。ソケットはファイルシステム上のパスにマップされ、PHP 7インストールはデフォルトで新しいパスを使用します。

PHP 5 /var/run/php5-fpm.sock

PHP 7 /var/run/php/php7.0-fpm.sock

39
nned

Ubuntu 18.04での問題は、現在PHP 7.2を使用していることですが、サイトで利用可能なデフォルトファイルには次のものがあります。

fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;

その行のバージョンを7.0ではなく7.2に更新すると、問題が修正されました。

fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;

6
Infineight

/ etc/php/7.0/fpm/pool.d/www.confファイルを編集して、次の行を見つけます。

listen = 127.0.0.1:9000

そして、コメントアウトするか、次のものに置き換えます。

listen = /var/run/php7.0-fpm.sock
5
Mehdi Fekih

最初の質問に答える:

名前lsの一部で検索すると、phpを見つけることができるのに、それ以上のphp7またはフルネームphp7.0-fpm.sock

Sudo ls -l /var/run/phpを実行すると、/var/run/phpディレクトリの内容が表示されますが、Sudo ls -l /var/run/php7またはSudo ls -l /var/run/php7.0-fpm.sockを実行すると、その親ディレクトリ/var/run存在しません。

2番目の質問については、Ansibleの問題とは思われませんが、上記を考慮してファイルの配置をトラブルシューティングする必要があります。

4
techraf

/etc/nginx/nginx.conf

ユーザーnginx;

Webサーバーがユーザーで動作する場合www-data書き込みが必要

ユーザーwww-data;

1
Hakop Hakopian

ステータスを確認:

Sudo service php7.0-fpm status

OR

Sudo systemctl status php7.0-fpm

既に実行されている場合に試してください

Sudo service php7.0-fpm restart

OR

Sudo systemctl reload php7.0-fpm

それ以外の場合

Sudo service php7.0-fpm start

OR

Sudo systemctl start php7.0-fpm
0
itsazzad