本教程基于这篇Nginx文章,如果不解之处可前往查阅

安装PHP

1
2
3
sudo apt-get update     # 更新软件源
sudo apt-get install php # 安装php
php -v # 查看php版本

安装PHP-fpm

  1. 先确定php版本php -v
    1
    2
    3
    4
    PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.11, Copyright (c), by Zend Technologies
    可以看到我这里php版本是8.1(目前默认安装的最新版)
  2. 安装对应版本的PHP-fpmsudo apt-get install php-fpm
  3. 查看php-fpm的状态sudo systemctl status php8.1-fpm
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    root@HoronLeeFirstEcs:~# systemctl status php8.1-fpm
    ● php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
    Loaded: loaded (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled)
    Active: active (running) since Thu 2023-04-20 20:10:43 CST; 17h ago
    Docs: man:php-fpm8.1(8)
    Process: 259478 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81 (code=exited, status=0/SUCCESS)
    Main PID: 259475 (php-fpm8.1)
    Status: "Processes active: 0, idle: 2, Requests: 4, slow: 0, Traffic: 0req/sec"
    Tasks: 3 (limit: 1929)
    Memory: 8.9M
    CPU: 2.739s
    CGroup: /system.slice/php8.1-fpm.service
    ├─259475 "php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)

配置Nginx和PHP-FPM

使用Nginx发布PHP网页,就需要这两个程序之间有沟通,这个时候就需要对其进行相应配置

  1. 配置Nginxsudo vim /etc/nginx/sites-available/default
  2. 在其中自带的server字段中找到# pass PHP scripts to FastCGI server下的关于php的被注释的子字段(大约第56行),将其改为(或者直接添加):

注意PHP版本号!

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

如果你找不到位置,我这里提供其他部分的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
在这里👉location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}👈在这里
# pass PHP scripts to FastCGI server
#
#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
  1. 配置php-fpmvim /etc/php/8.1/fpm/pool.d/www.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ; 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/php8.1-fpm.sock
    一般来说自带的配置文件不用改,我没有做任何更改
  2. 重启一下nginx和php-fpm:sudo systemctl restart nginx&sudo systemctl restart php8.1-fpm

测试PHP站点

  1. 进入默认站点目录cd /var/www/html
  2. 新建php文件sudo vim test.php
  3. 写入测试内容<?php phpinfo();?>
  4. 保存退出
  5. 访问http://$IP/test.php,可以显示PHP系统信息即表示PHP站点搭建完成!
    PHPInfo