这一阶段,开始配置php、nginx、mysql的参数。想让他们在你的wsl上运行得更好,那就得让它们之间相互协作。

1.修改你的php.ini文件,让php处理更好

  1. sudo vim /etc/php/8.0/fpm/php.ini
  • 更新如下内容的值,你可能需要一行行的找,有两个被注释了。
  1. upload_max_filesize = 32M # 限制PHP处理上传文件的最大值,此值必须小于post_max_size值
  2. post_max_size = 48M # 限制通过POST方法可以接受的信息最大量
  3. memory_limit = 256M #设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存
  4. max_execution_time = 600 #最长执行时间
  5. max_input_vars = 3000 #大表单提交限制
  6. max_input_time = 1000 #对通过POST、GET以及PUT方式接收数据时间进行限制
  • 测试你的php-fpm,看看你更改的内容是否有错误
    1. sudo php-fpm8.0 -t #测试
    2. sudo service php8.0-fpm restart #重启服务

2.配置Nginx

在开始配置nginx之前,还需要做一件事情,那就是删除apache,因为在安装php过程中,它会顺带把apache给装上,所以要做的就是卸载apache,否则你在本机浏览器输入127.0.0.1出现的不是nginx的欢迎页面,而是apache的欢迎页面,如下图:
image.png

  • 罗列出与apache相关的包
  1. dpkg --get-selections|grep apache
  • 根据列出的包名,依次进行卸载
  1. sudo apt-get --purge remove apache2
  2. sudo apt-get --purge remove apache2-bin
  3. sudo apt-get --purge remove apache2-data
  4. sudo apt-get --purge remove apache2-utils
  5. sudo apt-get autoremove #清除不需要的依赖
  • 光卸载是不够的,还需要找出它的目录。否则你现在去访问127.0.0.1依然是apache欢迎界面 ```shell sudo find / -name apache2*

删除你查找出的apache目录,可能你的会跟我不一样

sudo rm -rf /etc/apparmor.d/abstractions/apache2-common sudo rm -rf /etc/apache2

  1. 卸载工作到这里就结束了,这时再访问127.0.0.1出现的会是熟悉的nginx 欢迎界面<br />开始进行我们的nginx配置阶段:<br />关于nginx如何与php进行协同工作的原理就不多赘述了,这个只是理论。这里只提供Nginx配置文件
  2. ```shell
  3. server {
  4. listen 80;
  5. server_name blog.test;
  6. root /mnt/d/Code/laravel/public;
  7. add_header X-Frame-Options "SAMEORIGIN";
  8. add_header X-XSS-Protection "1; mode=block";
  9. add_header X-Content-Type-Options "nosniff";
  10. index index.html index.htm index.php;
  11. charset utf-8;
  12. location / {
  13. try_files $uri $uri/ /index.php?$query_string;
  14. }
  15. location = /favicon.ico { access_log off; log_not_found off; }
  16. location = /robots.txt { access_log off; log_not_found off; }
  17. error_page 404 /index.php;
  18. location ~ \.php$ {
  19. fastcgi_split_path_info ^(.+\.php)(/.+)$;
  20. fastcgi_pass unix:/run/php/php8.0-fpm.sock;
  21. fastcgi_index index.php;
  22. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  23. include fastcgi_params;
  24. }
  25. location ~ /\.(?!well-known).* {
  26. deny all;
  27. }
  28. }
  • 第3行server_name指的是nginx监听的虚拟域名。这个域名到时候会自动映射在windows下的hosts文件中(这个后面会讲),当你在windows下面访问这个项目时,输入这个域名就能访问
  • 第4行root指的是你的项目目录,我为了节省磁盘空间,所以把项目放在windows的D盘里。(这个可以根据你的实际情况进行设定,当我们输入你设定的域名时,nginx会找你这个项目目录下的index.php,就是这个原理!)
  • 第25行,因为nginx无法识别index.php文件,所以php文件一直是由php的cgi来完成的,所以这个.sock文件一定与你安装的php版本相符合。如果你实在不确定的话。可以进入/run/php/目录进行查看,是否存在这个php8.0-fpm.sock文件。
  • 以上为讲解这三个重点地方的功能,下面把这个配置代码复制下来。
    1. sudo vim /etc/nginx/conf.d/laravel.conf
    上面的命令会在/etc/nginx/conf.d/目录下创建一个larave.conf文件,并进行编辑状态,粘贴代码到conf文件中。根据你的需求来进行更改。之后运行nginx的检测配置命令,看你参数是否有错误:
    1. sudo nginx -t
    如果成功,没有出错误,那么平滑重启你的nginx,(wsl不支持systemctl)
    1. sudo service nginx reload
    当然,做完这些很有可能是无法访问的。原因是ip问题。下一阶段会讲怎么每次开机动态获取wsl的ip地址,并添加到hosts文件中。

写在最后:

最后,我们需要将php.ini和nginx.conf配置文件中的用户和组,wsl子系统的用户名,一般为你安装ubuntu时它提示你输入的username

  • 修改nginx.conf
    1. sudo vim /etc/nginx/nginx.conf
    修改第一行: ```bash

    修改前

    user www-data;

修改后

user df;

  1. - 修改php.ini
  2. ```shell
  3. sudo vim /etc/php/8.0/fpm/pool.d/www.conf

修改如下内容:
这是修改后的内容,未修改之前值全部为www-data

  1. user = df
  2. group = df
  3. #在第n行
  4. listen.owner = df
  5. listen.group = df