更新的 Ubuntu 网络服务器不工作

更新的 Ubuntu 网络服务器不工作

我刚刚使用 将 Ubuntu 16.04 服务器更新到 18.04。Nginxsudo do-release-upgrade是 Web 服务器。网站报告 404。在安装过程中,我选择保留当前安装的版本。

$ ps aux | grep nginx
root      1477  0.0  0.0 141120  1568 ?        Ss   06:36   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data  1478  0.0  0.2 143752  6160 ?        S    06:36   0:00 nginx: worker process
www-data  1479  0.0  0.2 143752  6160 ?        S    06:36   0:00 nginx: worker process

Nginx 正在运行该文件,/etc/nginx/sites-available/default其配置与原先一样。

PHP 也正在运行:

$ ps aux | grep php
root      1319  0.0  0.5 290448 17208 ?        Ss   06:36   0:00 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
www-data  1486  0.0  0.2 292744  7464 ?        S    06:36   0:00 php-fpm: pool www
www-data  1487  0.0  0.2 292744  7464 ?        S    06:36   0:00 php-fpm: pool www

当我使用完整的 URL 导航到网页内容(例如文本、pdf 或图像)时,会显示内容。但当我键入脚本名称或网页名称时,会出现 404。

查看错误日志:

$ sudo tail -n 20 /var/log/nginx/error.log
2020/03/22 06:37:21 [crit] 1478#1478: *2 connect() to unix:/run/php/php7.0-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 141.114.192.156, server: DomainName, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "192.168.1.104"

(更改了 IP,并在 DomainName 部分写入)也许服务器正在寻找错误的 php 版本?

$ php --version
PHP 7.2.24-0ubuntu0.18.04.3 (cli) (built: Feb 11 2020 15:55:52) ( NTS )
Copyright (c) 1997-2018 The PHP Group

所以我意识到该文件/etc/nginx/sites-available/default 指向了错误的 php 版本。好吧,我将其从 php7.0 更改为 php7.2。现在我收到网页“拒绝访问”的提示。这是我的“默认”设置:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /home/user/public_html;
    index index.php index.html index.htm;

    server_name server.name.omited.org;

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

    error_page 404 /404.html;
    error_page 500 502 503 504 /404.html;
    location = /50x.html {
        root /home/user/public_html;
    }

   location ~ \.php$|\.html|\.htm {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
       # fastcgi_pass unix:/var/run/php5-fpm.sock;
       # fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

好的,我取得了一点进展,意识到 php7 是错误的版本,然后我意识到我还必须在服务器上启用 php7.2。

sudo systemctl enable php7.2-fpm

对于所有 html 网页,我仍然无法访问,但是,直接访问 php 网页时,将显示正确的内容。

我修改security.limit_extensions = .php .html/etc/php/7.0/fpm/pool.d/www.conf 正如这里建议的那样:现在出现了索引页,html 和 php 脚本都可以正常工作。到其他页面的链接均不起作用,所有链接仍然显示“拒绝访问”,
然后我意识到有 .htm 页面。

答案1

好的,我明白了。松了一口气!

当我更新(运行sudo do-release-upgrade)时,我保留了已安装的 NGINX 版本,我以为我会得到类似的保留或升级 php7.0 的提议。但事实并非如此。升级完成后,php7.0 发生了一些事情,导致其无法使用。

我必须修改一些文件才能使服务器再次运行。我编辑的文件是: /etc/nginx/sites-available/default /etc/php/7.2/fpm/pool.d/www.conf

我运行sudo apt install php7.2 php7.2-fpm php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache更新 php7.2。它确实升级到了 php7.2。在执行此步骤之前,服务器报告了一个 php7.2 版本,但它不起作用,所以我还是升级了它。

然后我修改了我的/etc/nginx/sites-available/default文件以包含该行: fastcgi_pass unix:/run/php/php7.2-fpm.sock; 这将 nginx 指向我现在安装的 php 版本。

然后,我运行 sudo systemctl enable php7.2-fpm sudo systemctl start php7.2-fpm 以启用 php7.2,并启动它。

Php 脚本现在可以运行,但只有在直接访问时才能运行。嵌入 php 的 html 和 htm 页面在此步骤仍无法工作。

我使用以下命令测试了我的 nginx 配置文件: sudo nginx -t sudo systemctl reload nginx nginx 配置文件没有错误。但在此步骤中,htm 和 html 页面仍然显示“拒绝访问”。

接下来我修改了第 389 行/etc/php/7.2/fpm/pool.d/www.conf 以包含以下行:security.limit_extensions = .php .html .htm

然后我重新启动了php7.2: sudo systemctl restart php7.2-fpm.service

此时,服务器的行为与我预期的一样:php 脚本渲染 html 页面组件、htm 和 html 文件正确渲染。
此后,我的服务器正常运行

答案2

您能否创建一个 phpinfo 文件来查看 php 是否被正确解析?

<?php // Show all information, defaults to INFO_ALL phpinfo();

您是否重新启动/重新加载了 php-fpm?

相关内容