从零搭建一个网站-云服务器Linux版——3:PHP安装+与Nginx的链接+报错

目录

使用需要的东西:

一:进行PHP的安装配置

1:查看PHP是否安装

2: 安装 EPEL 和 Remi 仓库

3: 启用 Remi 仓库

4: 安装 PHP

5: 启动和启用 PHP-FPM

二:进行PHP与Nginx的链接配置

(一):Nginx的默认的指定网站根目录。

(二):Nginx 的配置文件

        1:常见的 Nginx 配置文件

 2:进行Nginx配置PHP

          3:测试和重新加载配置

        出现报错1:​编辑

        先排查Nginx配置问题

        通过观察Nginx主配置文件,可以发现

        检查 Nginx 的日志文件

(三):PHP的配置文件

       1: PHP 的配置文件

2:PHP-FPM 错误日志

3:先确保PHP-fpm已安装且运行。

4. 配置 PHP-FPM

4.1使用 sed 命令替换

4.2. 使用 echo 命令添加配置

4.3:确保以下配置正确:

4.4启动并启用 PHP-FPM:

(四):PHP的配置文件检查防火墙设置

1. 检查当前防火墙状态

2. 查看当前规则

3. 开放端口 9000

到现在为止,我们已搭建完LEMP(Linux, Nginx, MySQL, PHP)堆栈,一个基本的网站服务器搭建完成。

使用需要的东西:

        软件:Xshell。

        自费购买:一台云服务器,一个域名。

        系统环境:Windows 11 专业版 23H2。

        Linux版本:CentOS 9

前景提要:在前文已进行了服务器购买,系统搭设,Xshell访问服务器,域名购买,域名解析,Nginx软件搭建运行,做好了域名直接访问。同时安装好MySQL。

提示:仅在CentOs 9 版本上进行过安装PHP,未验证其他版本是否安装会报错!从零搭建一个网站-云服务器Linux版——教程【带域名】————1:配置服务器环境,安装Nginx-CSDN博客

从零搭建一个网站-云服务器Linux版——2:安装服务器MySQL+报错-CSDN博客         

        提示:CentOs7使用yum,CentOs8可用dnf包管理。

一:进行PHP的安装配置

1:查看PHP是否安装

    查询未安装,安装php需确保安装epel库,在前景中以安装,此次不再安装

2: 安装 EPEL 和 Remi 仓库

        为了获取最新的 PHP 版本,建议安装 Remi 仓库。

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

3: 启用 Remi 仓库

        查看可用的 PHP 模块,并启用所需版本的 Remi 仓库:

sudo dnf module list php

        根据需要选择 PHP 版本,然后启用对应的模块。例如,如果你想安装 PHP 8.1,可以执行:

sudo dnf module enable php:remi-8.1

4: 安装 PHP

        启用所需版本的模块后,可以安装 PHP 及常用扩展。例如,要安装 PHP 和常用扩展:

sudo dnf install php php-cli php-fpm php-mysqlnd php-pgsql php-xml php-mbstring php-curl -y

        安装完验证一下

5: 启动和启用 PHP-FPM

        如果你需要 PHP-FPM(FastCGI 进程管理器),可以启动并设置其开机自启:

sudo systemctl start php-fpm

        启动后验证一下,然后添加到开机自启。

sudo systemctl enable php-fpm

二:进行PHP与Nginx的链接配置

        首先,安装完Nginx是有一个默认html页面,但我们需要PHP后端处理访问,所以现在需要配置PHP和Nginx的链接。

        配置完成后,可打开http://your_server_ip/info.php

(一):Nginx的默认的指定网站根目录。

       安装完Nginx是有一个默认html页面的,在未进行更新配置前我们访问网址或者是公网ip是可以直接看到一个Nginx的欢迎页面, 介绍了你安装的Nginx的版本,但是我们可能需要更改默认目录和进行相关的配置,所以需要知道默认目录和配置文件所在。 Nginx 的默认网站目录通常位于 /usr/share/nginx/html

(二):Nginx 的配置文件

        1:常见的 Nginx 配置文件

        主配置文件:通常位于 /etc/nginx/nginx.conf

        这是 Nginx 的主配置文件,其中包含全局配置和一些通用设置。

        调整 server 块中的 root 指令。设置网站的根目录,配置网站访问权限等。

        站点配置文件:通常位于 /etc/nginx/conf.d/ 目录

        或 /etc/nginx/sites-available//etc/nginx/sites-enabled/(根据不同的 Linux 发行版和 Nginx 的安装方式可能有所不同)。这些文件用于配置特定的虚拟主机或网站。你可以在这些文件中设置每个网站的具体行为,比如根目录、日志路径和处理请求的方法。

        然后打开主配置查看

        可以看到默认网站根目录位于 /usr/share/nginx/html

        这段配置是一个 Nginx 服务器块的示例,处理所有 HTTP 请求,指定了网站根目录和错误页面。它还包括了额外的配置文件和处理特定错误页面的方式。

Nginx 配置文件的结构通常包括以下部分:

        全局设置:定义全局范围的设置,如工作进程数量和日志文件位置。

        http 块:包含与 HTTP 相关的设置和配置,例如默认的 MIME 类型、日志格式和服务器块。

        server 块:定义虚拟主机的配置,例如监听的端口、域名、根目录和日志路径。

        location 块:定义如何处理特定路径的请求,例如静态文件、反向代理或 PHP 处理。

 2:进行Nginx配置PHP

        Nginx 中处理 PHP 文件需要配置 FastCGI,以便 Nginx 能够将 PHP 请求转发给 PHP-FPM(FastCGI Process Manager),添加以下配置来处理 PHP 文件,你可以在配置文件中添加 location 块。

location ~ \.php$ {
    root           /usr/share/nginx/html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

        或者是全段server更换为下面代码

server {
    listen       80;
    server_name  localhost;

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

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

        其中文件意思是

location ~ \.php$:匹配所有以 .php 结尾的请求。

fastcgi_pass 127.0.0.1:9000:指定 FastCGI 服务器的地址和端口(PHP-FPM 通常运行在这个端口)。

include fastcgi_params:包含 FastCGI 的参数配置文件。

        完成后保存文件

          3:测试和重新加载配置

        在修改 Nginx 配置文件后,在重新加载 Nginx 之前,需要确保配置没有语法错误。使用以下命令测试配置文件,测试配置是否正确:

sudo nginx -t

        如果测试通过,重新加载 Nginx 配置使更改生效:

sudo systemctl reload nginx

         而后进行PHP文件解析

        首先去默认目录/usr/share/nginx/html/下新建php文件

echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php

        如果一切正确,在浏览器中访问 http://your_server_ip/info.php,如果 PHP 安装正确,你将看到 PHP 的信息页面。        

        出现报错1:

        当出现这个报错可能有两个原因,一个是你的Nginx未配置正确,第二个可能是PHP的安装或者是配置问题。需要编辑 PHP-FPM 配置文件以确保它在正确的地址和端口上监听。

        先排查Nginx配置问题

        通过观察Nginx主配置文件,可以发现

server_name 重复server_name 被定义了两次。删除其中一个,确保它只定义一次。

server_name 是用来定义服务器块匹配的域名或 IP 地址的。

root 指令冲突:在 location /location ~ \.php$ 中都设置了 root,可能导致问题。通常在 location ~ \.php$ 中不需要 root 指令。

        现在先进行修改,修改后进行测试和重新加载配置,然后再一次在网址上测试访问。

        在做出任何更改后,确保重新加载或重启 Nginx 以应用新的配置:

sudo systemctl restart nginx
        检查 Nginx 的日志文件

        检查 Nginx 的日志文件可以提供有关配置问题的详细信息:Nginx 错误日志通常在 /var/log/nginx/error.log

       可以根据日志文件判断问题所在 。

        如:这次访问地址打错了就是未找到文件

[error] 701230#701230: *457 open() "/usr/share/nginx/html/infophp" failed (2: No such file or directory), client: 120.235.90.123, server: localhost, request: "GET /infophp HTTP/1.1", host: 

        如:报错信息显示 

[error] 701230#701230: *461 connect() failed (111: Connection refused) while connecting to upstream, client: 220.196.160.117, server: localhost, request: "GET /inof.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: 

        可判断是PHP未正确运行,将排查PHP-FPM 以确保它在正确的地址和端口上监听。

(三):PHP的配置文件

       1: PHP 的配置文件

        php的配置文件通常位于 /etc/php.ini/etc/httpd/conf.d/ 目录下。

          运行以下命令来查看是否存在这些文件:

ls /etc/php.ini
ls /etc/httpd/conf.d/

        PHP-FPM 的配置文件(通常在 /etc/php/8.x/fpm/pool.d/www.conf,其中 7.x 是 PHP 的版本)或者是在/etc/php-fpm.d/www.conf(我的就是在这)

2:PHP-FPM 错误日志

        通常在 /var/log/php8.x-fpm.log

        或者是在/var/log/php-fpm/error.log (我的就是在这)

        配置文件和日志文件的位置看版本,自行寻找

3:先确保PHP-fpm已安装且运行。

        首先确保 PHP 和 PHP-FPM 已安装。你可以使用以下命令安装 PHP 和 PHP-FPM(以 CentOS 为例):

php -v

查看php版本

systemctl status php8.1-fpm
或者是
systemctl status php-fpm
systemctl list-units --type=service | grep php
查看PHP服务

如果都未找到PHP请进行PHP的安装        

sudo yum install php php-fpm php-mysqlnd -y

4. 配置 PHP-FPM

        编辑 PHP-FPM 配置文件以确保它在正确的地址和端口上监听(通常是 /etc/php-fpm.d/www.conf

        确保www.conf文件中的listen = 127.0.0.1:9000

        确保你的 Nginx 配置中的 fastcgi_pass 指令与你的 PHP-FPM 配置一致

        与Nginx配置文件 /etc/nginx/nginx.conf中的fastcgi_pass   127.0.0.1:9000相匹配。

        找到www.conf文件,使用管道将其筛选出www.conf 文件中的 listen 配置

cat /etc/php-fpm.d/www.conf | grep listen

       可以看到,listen=对应的是错误的。

        现可通过vi工具直接替换,也可以通过sed或者是echo命令替换。

4.1使用 sed 命令替换

        如果你希望使用命令行工具直接替换 listen 配置,可以使用 sed 命令

sudo sed -i 's/^listen = .*/listen = 127.0.0.1:9000/' /etc/php/8.1/fpm/pool.d/www.conf

        这条命令会将 www.conf 文件中以 listen = 开头的行替换为 listen = 127.0.0.1:9000。如果原文件中没有 listen = 行,则不会进行替换。

4.2. 使用 echo 命令添加配置

        如果 www.conf 文件中没有 listen 行,可以使用 echo 命令将 listen 配置添加到文件末尾:

echo 'listen = 127.0.0.1:9000' | sudo tee -a /etc/php/8.1/fpm/pool.d/www.conf

        这会将 listen = 127.0.0.1:9000 追加到文件的末尾。

        确保 www.conf 文件中已正确设置 listen 行:

grep 'listen' /etc/php/8.1/fpm/pool.d/www.conf

        修改配置文件后,重新加载 PHP-FPM 服务以应用更改:

sudo systemctl reload php-fpm
4.3:确保以下配置正确:
listen = 127.0.0.1:9000

listen.owner = nobody

listen.group = nobody

listen.mode = 0660
4.4启动并启用 PHP-FPM:
sudo systemctl start php-fpm

sudo systemctl enable php-fpm

(四):PHP的配置文件检查防火墙设置

如果 PHP-FPM 和 Nginx 在不同的容器或虚拟机上,确保防火墙规则允许通过端口 9000 的连接。

1. 检查当前防火墙状态

首先,检查防火墙状态和当前的规则。使用以下命令查看防火墙状态:

sudo firewall-cmd --state

如果防火墙正在运行,你将看到 running 状态。

2. 查看当前规则

查看当前防火墙规则以确定是否允许端口 9000 的连接:

sudo firewall-cmd --list-all

3. 开放端口 9000

        如果端口 9000 未开放,你需要添加相应的规则。以下是如何允许端口 9000 的步骤:

对于 firewalld(CentOS 7、8 和其他支持 firewalld 的系统)

  1. 开放端口 9000

    sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent

    这个命令将永久地在 public 区域中开放端口 9000。

  2. 重新加载防火墙配置

    sudo firewall-cmd --reload
  3. 验证端口是否已开放

    sudo firewall-cmd --list-ports

    到现在为止,我们已搭建完LEMP(Linux, Nginx, MySQL, PHP)堆栈,一个基本的网站服务器搭建完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值