本文示意了在WSL中的Ubuntu系统中配置PHP+nginx的开发环境为例。

一、安装

1) 更新Ubuntu

sudo apt update
sudo apt upgrade -y

2) 安装nginx

sudo apt install nginx -y

3) 安装PHP 8.1

sudo apt install php8.1 php8.1-fpm php8.1-mbstring -y

这里只安装了PHP8.1最必要的一些包。如果需要其他包,请查阅相关资料后安装。

二、配置nginx

1) 修改配置

在终端中发出下列命令,打开default文件进行编辑。

cd /etc/nginx/sites-available
sudo cp default default.bak
sudo vim default

配置要点

  1. 修改root指令参数,使其指向你的网站根目录
  2. 添加charset指令,指定字符集为utf-8
  3. 修改fastcgi_pass指令参数,设置监听端口为你选定的值,例如9527。默认值是9000

以下是我的配置文件default,作为参考示例。

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

        root /mnt/e/demosite; # or the root of your website

        index index.php index.html index.htm index.nginx-debian.html;

        server_name localhost;

        charset 'utf-8';

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

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass 127.0.0.1:9527;
        }
}

原来的配置文件有很多#开头的注释。可以在vim中按dd删掉它们:按dd删掉一行,按8dd可以一次删掉8行。

2) 测试配置

sudo nginx -t

如果提示信息说是成功了,那么就OK了。否则,可根据提示信息修改default

三、配置PHP

1) 配置fastcgi

  1. 修改配置
     cd /etc/php/8.1/fpm/pool.d
     sudo cp www.conf www.conf.bak
     sudo vim www.conf
    

    找到listen关键字(在第37行左右),用;注释掉原来的,添加一个新行:

     ;listen = /run/php/php8.1-fpm.sock
     listen = 9527
    

    在vim中,先按ESC键,然后按:键,输入set number,回车后可以显示行号。

  2. 测试配置
     sudo php-fpm8.1 -t
    

    如果提示信息说是成功了,那么就OK了。否则,可根据提示信息修改www.conf

2) 配置php.ini

打开/etc/php/8.1/fpm/php.ini,将其中的一些参数修改为你的设定。

四、启动服务

1) nginx

  1. 启动
     sudo service nginx start
    
  2. 停止
     sudo service nginx stop
    
  3. 重启
     sudo service nginx restart
    

2) 启动PHP Fastcgi

  1. 启动
     sudo service php8.1-fpm start
    

    如果系统提示:不能创建/run/php/php8.1-fpm.pid,原因可能是/run目录下没有php子目录。这么做:

     cd /run
     sudo mkdir php
    

    再次启动php-fpm8.1服务应该能解决问题。

  2. 停止
     sudo service php8.1-fpm stop
    

五、测试网站

以下测试可以在Windows中进行。

1) 测试HTML

  1. 编写一个index.html,存放在/mnt/e/demosite下:
     <div>hello!</div>
    
  2. 打开浏览器,输入:http://localhost

    如果不成功,则看看是否是配置有问题。

2) 测试PHP

  1. 编写一个pi.php,存放在/mnt/e/demosite下:
     <?php
         phpinfo();
     ?>
    
  2. 打开浏览器,输入:http://localhost/pi.php

    如果不成功,则看看是否是配置有问题。

    请注意观察信息中的 Loaded Configuration File 这个设置。设置值为PHP Fastcgi使用的 php.ini。你可能需要修改这个配置文件。

    强烈建议测试成功后,删除这个pi.php。因为它会展示系统信息!