Задать вопрос
@carryx
MySQL Developer

Debian 9 + nginx + php-fpm в чем проблема?

Подскажите в чем может быть проблема:
На облаке стоит Debian 9.0
1. Поставил по инструкции PHP 7 (https://github.com/kasparsd/php-7-debian)
2. Поставил по инструкции Nginx 1.13.5 (https://gist.github.com/tollmanz/8662688)

Проблема в том, что не работают php файлы, пишет 502 Bad Gateway. Сайт на чистом html работает.
Изначально не создался файлик php7-fpm.sock. Я его создал вручную:
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/run/php7-fpm.sock')"

Конфиги такие:
PHP
Конфиг /usr/local/php7/etc/php-fpm.d/www.conf
[www]
user = www-data
group = www-data
listen = /run/php7-fpm.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Больше в PHP я ничего не менял....

NGINX
/etc/nginx/nginx.conf

user www-data;
worker_processes 4;
worker_rlimit_nofile 200000;
pid /var/run/nginx.pid;
events {
worker_connections 4000;
use epoll;
 multi_accept on;
}
http {
       charset utf-8;
        open_file_cache max=200000 inactive=20s; 
        open_file_cache_valid 30s; 
        open_file_cache_min_uses 2;
        open_file_cache_errors on;
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 30;
	keepalive_requests 1000;
	reset_timedout_connection on;
	client_body_timeout 10;
	send_timeout 2;
	types_hash_max_size 2048;
	server_names_hash_bucket_size 64;
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	error_log /var/log/nginx/error.log crit; #логирование только крит. ошибок
	gzip on;
	gzip_disable "msie6";
	gzip_min_length 10240;
        gzip_proxied expired no-cache no-store private auth;
        gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
	include /etc/nginx/sites-enabled/*;
	upstream php7-fpm-sock {
        server unix:/run/php7-fpm.sock;
}
}



/etc/nginx/sites-enabled/test.com

server {
        listen  80;
	charset utf-8;
        server_name  test.com test.com;
        root   /var/www/test.com;
        index  index.php;
		
location ~ /\. {
deny all;
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \.php$ {
    try_files $uri =404;
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    fastcgi_pass php7-fpm-sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT /var/www;
     # send bad requests to 404
    fastcgi_intercept_errors on;
    include fastcgi_params;
	}
}



Ошибок в конфигах не выдает!
Скрины:
service nginx status

f86dd5fdfca24d99ab4932db9cf72f7b.png

service php7-fpm status

610f0474282d47cbaf515881d2f97e0d.png

netstat -tlnp

c802eab499ba4bcc950848a2285c7393.jpg
  • Вопрос задан
  • 1002 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
castomi
@castomi
Серверный администратор - tickets.settin.ru
1. Поставил по инструкции PHP 7 (https://github.com/kasparsd/php-7-debian)

Собирать php когда в репозиториях Debian он есть, ну как минимум как-то глупо, тем более по сомнительным инструкциям.
2. Поставил по инструкции Nginx 1.13.5 (https://gist.github.com/tollmanz/8662688)
опять же Nginx есть в репозиториях Debian, версия правда 1.13.3, но разве это столь критично, она отлично работает.
Больше в PHP я ничего не менял....

Честно говоря Вы поменяли всё, ведь поставили самостоятельно собранную версию, вместо того чтобы поставить с репозитория уже готовую без костылей, с возможностью обновляться. Вот сначала делаете через жопу, а потом спрашиваете что не так.

да конечно и в таком варианте настройки всё может работать, но Вы усложняете себе жизнь. В данном случае у Вас не работает по причине не верной настройки вот этой диррективы
https://nginx.ru/ru/docs/http/ngx_http_fastcgi_mod...
В Вашем случае должно выглядеть так
fastcgi_pass unix:/run/php7-fpm.sock;
А ссылку на документацию всё равно прочтите.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@nikolayvaganov
Почему апстрим называется - php7-fpm-sock , а подключается как fastcgi_pass php; ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы