PHP-FPM и NGINX на AltServer: 502 Bad Gateway

После установки Bookstack у меня ошибка "502 Bad Gateway" ОС - Альт Сервер 10 Код из /etc/nginx/sites-avialable.d/bookstack.conf: Пример беру с Github

server {
  listen 80;
  listen [::]:80;

  server_name 127.0.0.1;

  root /var/www/bookstack/public;
  index index.php index.html;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  
  location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
  }
}

Код из /var/www/bookstack/.env:

APP_URL=http://127.0.0.1

# Database details
DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstack
DB_PASSWORD=bookstack

# Mail system to use
# Can be 'smtp' or 'sendmail'
MAIL_DRIVER=smtp

# Mail sender details
MAIL_FROM_NAME = "BookStack"
[email protected]

# SMTP mail options
# These settings can be checked using the "Send a Test Email"
# feature found in the "Settings > Maintenance" area of the system.
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Код из /var/log/nginx/error.log:

2023/04/27 02:59:57 [crit] 20019#20019: *1 connect() to unix:/run/php/php7.4-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.2-fpm.sock:", host: "127.0.0.1"

Но в /run/php/ у меня нет этого файла. У меня тоже нет папки php в /run. Бит, если я удалю

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

из /etc/nginx/sites-avialable.d/bookstack.conf, у меня такая же ошибка, но после обновления страницы загружается некоторый текстовый файл.

Переделываю базу под bookstack, переделываю под нее пользователя и привилегии. Проверьте много решений в Интернете, но ничего не подходило для моего случая. Я ожидаю, по крайней мере, правильное направление в пути, где я могу найти дальше.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ронин, добро пожаловать в StackOverflow и, возможно, в мир инженерии! Позвольте мне попытаться объяснить вам основные концепции того, что вы пытаетесь сделать, чтобы вы могли правильно настроить его в следующий раз самостоятельно.

Во-первых, я никогда не слышал об «AltServer10», из-за которого вам не очень легко следовать общим руководствам по настройке стека приложений с использованием NGINX и PHP-FPM. Но я провел для вас некоторые исследования.

PHP FPM

Во-первых, убедитесь, что вы установили PHP-FPM. Это определение пакета: https://packages.altlinux.org/en/p10/srpms/php8.1-fpm-fcgi/

Я понятия не имею, какой менеджер oackage использует AltServer ... Так что вам следует взглянуть на это.

После установки FPM вам необходимо настроить рабочие пулы PHP FPM.

В Ubuntu, RHEL, CentOS файл конфигурации будет в /etc/php/7.3/fpm/pool.d и назван www.conf. Если вы используете другие пакеты, путь конфигурации может быть другим. Реми укажет на ``

Я всегда меняю свои настройки, чтобы отобразить пользователя запуска NGINX следующим образом. Пожалуйста, это не полный www.conf!

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

; 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 = /var/run/php80-fpm.sock

; Set listen(2) backlog.
; Default Value: 511
;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.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Конфигурация listen важна. Он сообщает FPM, куда поместить сокет (в данном случае), куда мы можем отправить запрос (из NGINX).

Это должно соответствовать вашей конфигурации nginx. Но сначала давайте создадим/запустим сервис FPM. Опять же, понятия не имею, как это сделать на AltServer, но если Alt использует systemd и systemctl, вы можете сделать что-то вроде /bin/systemctl start php8-fpm.service

Я изучил пакет AltServer FPM и, скорее всего, служба будет называться так. Посмотрите здесь: https://packages.altlinux.org/en/p10/srpms/php8.1-fpm-fcgi/specfiles/

Хорошо, теперь у вас должна быть запущена и запущена служба FPM. Пожалуйста, проверьте каталог запуска. У него должен быть sock файл типа /var/run/php80-fpm.sock

Nginx

Мой NGINX PHP выглядит так

location ~ \.php$ {
            fastcgi_pass unix:/var/run/php80-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

Пожалуйста, проверьте, что у вас в fastcgi.conf. Он должен включать некоторые из директив fcgi, перечисленных выше.

Этого будет достаточно, чтобы ваше PHP-приложение заработало. Очень хороший учебник можно найти на DigitalOcean: https://www.digitalocean.com/community/tutorials/php-fpm-nginx

Он охватывает Ubuntu, но вы должны быть в состоянии адаптировать его.

Альтернативой NGINX с PHP-FPM является модуль NGINX.

Также доступно на AltServer: https://packages.altlinux.org/en/p10/srpms/unit/

Убедитесь, что вы устанавливаете Unit + языковой модуль для PHP unit-php. Посмотрите здесь: https://packages.altlinux.org/en/p10/binary/unit-php/x86_64/

Конфигурация будет намного проще, так как единственное, что вам нужно сделать, это создать конфигурацию объекта и применить ее. Описано здесь:

http://unit.nginx.org/configuration/#php

Итак, поскольку это конец моего поста, вам предстоит многое прочитать и понять, чтобы двигаться дальше. Я был на вашем месте 15 лет назад. Сначала больно, но оно того стоит. Не следуйте инструкциям слепо. Почитайте про PHP и что такое PHP-FPM. ПОНЯТЬ ПОЧЕМУ! вам нужно что-то вроде FPM или Unit. Это позволит вам расти, и в следующий раз вы сможете настроить установку NGINX + PHP примерно за 5 минут :)

Приятного обучения!

Прежде всего хочу сказать вам "Спасибо" за то, что вы находите время и желаете помочь мне.

Ronin 29.04.2023 21:23

Да, у меня не установлен php8.2-fpm. Это была моя первая ошибка. Далее я шаг за шагом двигался, проверял или редактировал файлы. Самое сложное было просто найти похожий conf.file в моей версии linux, хотя она основана на debian os. Теперь у меня слепая страница, когда я пытаюсь загрузить книжную стопку, мой журнал ошибок nginx показывает мне ошибку о laravel, но я попытаюсь добраться до финиша.

Ronin 29.04.2023 21:43

Другие вопросы по теме