LINUX.ORG.RU

NGINX + php-fpm + домашняя директория

 ,


0

1

Ранее все работало, конфиги все те же, nginx + php-fpm запущен под моим пользователем, сайт лежит в домашней директории, иначе постоянно просит пароль, пробовал добавлять своего пользователя в группу http, не помогло

в логах ошибка - [error] 798#798: *6 FastCGI sent in stderr: «Primary script unknown» while reading response header from upstream, client: 127.0.0.1, server: adminer, request: «GET /adminer.php HTTP/1.1», upstream: «fastcgi://unix:/run/php-fpm/php-fpm.sock:», host: server { listen 80; server_name adminer; root /home/56/websites/adminer; index index.php index.html index.htm; charset utf-8;

конфиг сайта

server {
        listen       80;
        server_name  adminer;
        root /home/56/websites/adminer;
        index index.php index.html index.htm;
        charset utf-8;

        location / {
            try_files $uri $uri/ =404;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        location ~ \.php$ {
            fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
            include fastcgi.conf;
        }
}

если запустить php из консоли в папке сайта то сайт работает(php -S localhost:8080)

я это так вижу - в конфиги занесли что то новое и теперь нужно его сконфигурировать(раньше все без проблем работало) или же обходной путь - держать сайты на /usr/share/nginx/html/ и как то дать своему пользователю запись на эти папки

мой старый аккаунт был заблокирован так как я неправильно сделал название профиля, поэтому создал новый, не хочется ставить убунту из за такого пустяка

Система Arch

решение - отключить protect home в /etc/systemd/system/multi-user.target.wants/php-fpm.service сервис должен быть включен в автозагрузку

Проверь пути, прверь создается ли файл сокета по указанному пути, на арче nginx + php-fpm нет под рукой но на дебиане и убунту путь до сокета ran/php/phpX.Y-fpm.sock, где Х.Y версия пхп. В пхп ини вывод ошибок включен? И еще

nginx + php-fpm запущен под моим пользователем, сайт лежит в домашней директории, иначе постоянно просит пароль, пробовал добавлять своего пользователя в группу http

Вообще дичь какаято.Разберитесь уже с правами.

julixs ★★ ()
Ответ на: комментарий от julixs

сокет есть - /run/php-fpm/php-fpm.sock

если запускать нгинкс и пхп фпм под пользователем по умолчанию(http) и положить сайты в место по умолчанию(/usr/share/nginx/html/) и отредактировать конфиг сайта то сайты опять таки работают

Regulo ()
Ответ на: комментарий от Regulo

Проверяйте права на доступ к сокету ваша ошибка означает что

веб-сервер не может найти указанный в файле конфигурации nginx.conf скрипт.

В конфиге фпм указан пользователь под которым стартует сервер или по умолчанию.

Из каких соображения сайт лежит в хомяке? Что мешает положить его по дефолтному пути? И конфиги фпм нжинкса и виртуалхостов если есть, в студию пожалуйста.

julixs ★★ ()
Ответ на: комментарий от julixs

не решилось, я по ошибке запустил сайт из /usr/share/nginx/html/

из хоме фолдер пока не работает, пойду еще раз проверю разрешения

Regulo ()
Ответ на: комментарий от julixs

если запускать nginx и php-fpm под пользователем по умолчанию(http) и положить сайты в место по умолчанию(/usr/share/nginx/html/) и отредактировать конфиг сайта то сайты работают

раньше я запускал nginx и php-fpm под своим пользователем и держал сайты в домашней директории и проблем не знал, никаких, где то 2 месяца назад, а теперь что то изменилось в политике... в принципе сайты можно держать в месте по умолчанию но нужно постоянно набирать пароль для изменения или запускать под sudo, наверно можно и моему пользователю дать права на изменение /usr/share/nginx/html/

nginx конфиг сайта

server {
        listen       80;
        server_name  adminer;
        root /home/56/websites/adminer;
        #root /usr/share/nginx/html/adminer;
        index index.php index.html index.htm;
        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            try_files $uri $uri/ =404;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        location ~ \.php$ {
            #fastcgi_pass 127.0.0.1:9000; (depending on your php-fpm socket configuration)
            fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
            #fastcgi_index index.php;
            #fastcgi_param  SCRIPT_FILENAME  /home/56/websites/adminer/fastcgi_script_name;
            include fastcgi.conf;
        }

}

конфиг нгинкса


#user html;
user 56 users;
#worker_processes 4;

error_log  /var/log/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

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

    }
		include /etc/nginx/conf.d/*.conf;
		include /etc/nginx/sites-enabled/*;
}

конфиг php-fpm

; Start a new pool named 'www'.
; the variable $pool can be used in any directive and will be replaced by the
; pool name ('www' here)
[www]

; Per pool prefix
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'
; When not set, the global prefix (or /usr) applies instead.
; Note: This directive can also be relative to the global prefix.
; Default Value: none
;prefix = /path/to/pools/$pool

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.

;user = http
;group = http

user = 56
group = users

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /run/php-fpm/php-fpm.sock

; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
;                 mode is set to 0660

;listen.owner = http
;listen.group = http

listen.owner = 56
listen.group = users

;listen.mode = 0660
; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owne

Regulo ()
Ответ на: комментарий от julixs

запускал сервер под своим пользователем и сайты все равно работают, которые лежат в /usr/share/nginx/html/

Regulo ()
Ответ на: комментарий от julixs

решение - отключить protect home в /etc/systemd/system/multi-user.target.wants/php-fpm.service

сервис должен быть включен в автозагрузку

Regulo ()
Ответ на: комментарий от Regulo

Инструкции на все есть, так что после их прочтения все становится понятным и простым, для обычных окружений.

insw ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.