AltServer上的PHP-FPM和NGINX:502错误网关

x33g5p2x  于 2023-05-06  发布在  Nginx
关注(0)|答案(1)|浏览(159)

/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"
MAIL_FROM=bookstack@example.com

# 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,我有同样的错误,但一些txt文件下载后刷新页面.
我为书库重新创建了数据库,为她重新创建了用户和权限。在网上查了很多解决方案,但没有一个适合我的情况。我期待至少正确的方向,在那里我可以找到更远的路。

wr98u20j

wr98u20j1#

Ronin,欢迎来到StackOverflow,也许是工程学的世界!让我试着解释一下你正在尝试做什么的核心概念,这样你就可以在下次自己正确配置它。
首先,我从来没有听说过“AltServer 10”,这使得你不太容易遵循如何使用NGINX和PHP-FPM设置应用程序堆栈的一般教程。但我为你做了一些研究。

PHP FPM

第一,确保您安装了PHP-FPM。这是软件包的定义:https://packages.altlinux.org/en/p10/srpms/php8.1-fpm-fcgi/
我不知道什么oackage管理器AltServer正在使用...所以你应该看看这个。
安装FPM后,您必须配置FPMs PHP工作池。
在Ubuntu、RHEL、CentOS上,配置文件将在/etc/php/7.3/fpm/pool.d中,并命名为www.conf。如果您使用的是其他软件包,配置路径可能会有所不同。雷米会指着“
我总是改变我的设置来MapNGINX的运行用户,像这样。请不要这不是完整的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使用systemdsystemctl,您可以执行类似/bin/systemctl start php8-fpm.service的操作
我已经研究了AltServer FPM包,很可能该服务将这样命名。标签:https://packages.altlinux.org/en/p10/srpms/php8.1-fpm-fcgi/specfiles/
好了,现在您应该已经启动并运行了一个FPM服务。请检查运行目录。它应该有一个类似/var/run/php80-fpm.socksock文件

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 Unit。
在AltServer上也可用:https://packages.altlinux.org/en/p10/srpms/unit/
确保安装的是Unit +语言模块for 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这样的东西。这将让你成长,下次你可以在5分钟内设置NGINX + PHP设置:)
快乐学习!

相关问题