问题描述
我正在尝试关注 这个 Ansible 教程,同时使用 php7 为 Ubuntu 16.04 调整它.在此消息下方,您将找到我的 Ansible 文件.运行它并尝试在浏览器中访问该页面后,我收到 404,并且在 nginx 错误日志中显示以下内容:
I'm trying to follow this Ansible tutorial while adjusting it for Ubuntu 16.04 with php7. Below this message you'll find my Ansible file. After running it and trying to visit the page in the browser I get a 404, and the following in the nginx error logs:
2016/10/15 13:13:20 [暴击] 28771#28771:*7 connect() tounix:/var/run/php7.0-fpm.sock failed (2: No such file or directory)连接上游时,客户端: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
表现得很奇怪:
So I checked if the socket file exists, and it seems to exist, but ls
behaves weird:
$ 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
为什么如果我按名称php
的一部分搜索它,ls
可以找到套接字文件,而当我列出超过那个时却找不到套接字文件php7
甚至全名php7.0-fpm.sock
?
Why can ls
find the socket file if I search it by part of the name php
while it cannot find the socket file when I list more than that php7
or even the full name php7.0-fpm.sock
?
最重要的是,我怎样才能在 Nginx 上做到这一点?欢迎所有提示!
And most importantly, how can I make this work with nginx? All tips are welcome!
下面我粘贴了我的 Ansible 文件
below I pasted my Ansible file
---
- 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
推荐答案
遇到了同样的问题.解决方法很简单.
Had the same problem.Solution is very easy.
在 nginx conf 文件中,您正在尝试向上游发送
In nginx conf file you are trying upstreaming to
unix:/var/run/php7.0-fpm.sock
正确的路径是
unix:/var/run/php/php7.0-fpm.sock
Nginx 使用 Unix 域套接字与 PHP-FPM 通信.插座映射到文件系统上的路径,我们的 PHP 7 安装使用新的默认路径:
PHP 5 /var/run/php5-fpm.sock
PHP 7 /var/run/php/php7.0-fpm.sock
这篇关于NGINX: connect() to unix:/var/run/php7.0-fpm.sock failed (2: No such file or directory)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!