这一阶段,开始配置php、nginx、mysql的参数。想让他们在你的wsl上运行得更好,那就得让它们之间相互协作。
1.修改你的php.ini文件,让php处理更好
sudo vim /etc/php/8.0/fpm/php.ini
- 更新如下内容的值,你可能需要一行行的找,有两个被注释了。
upload_max_filesize = 32M # 限制PHP处理上传文件的最大值,此值必须小于post_max_size值post_max_size = 48M # 限制通过POST方法可以接受的信息最大量memory_limit = 256M #设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存max_execution_time = 600 #最长执行时间max_input_vars = 3000 #大表单提交限制max_input_time = 1000 #对通过POST、GET以及PUT方式接收数据时间进行限制
- 测试你的php-fpm,看看你更改的内容是否有错误
sudo php-fpm8.0 -t #测试sudo service php8.0-fpm restart #重启服务
2.配置Nginx
在开始配置nginx之前,还需要做一件事情,那就是删除apache,因为在安装php过程中,它会顺带把apache给装上,所以要做的就是卸载apache,否则你在本机浏览器输入127.0.0.1出现的不是nginx的欢迎页面,而是apache的欢迎页面,如下图:

- 罗列出与apache相关的包
dpkg --get-selections|grep apache
- 根据列出的包名,依次进行卸载
sudo apt-get --purge remove apache2sudo apt-get --purge remove apache2-binsudo apt-get --purge remove apache2-datasudo apt-get --purge remove apache2-utilssudo 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
卸载工作到这里就结束了,这时再访问127.0.0.1出现的会是熟悉的nginx 欢迎界面<br />开始进行我们的nginx配置阶段:<br />关于nginx如何与php进行协同工作的原理就不多赘述了,这个只是理论。这里只提供Nginx配置文件```shellserver {listen 80;server_name blog.test;root /mnt/d/Code/laravel/public;add_header X-Frame-Options "SAMEORIGIN";add_header X-XSS-Protection "1; mode=block";add_header X-Content-Type-Options "nosniff";index index.html index.htm index.php;charset utf-8;location / {try_files $uri $uri/ /index.php?$query_string;}location = /favicon.ico { access_log off; log_not_found off; }location = /robots.txt { access_log off; log_not_found off; }error_page 404 /index.php;location ~ \.php$ {fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_pass unix:/run/php/php8.0-fpm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}location ~ /\.(?!well-known).* {deny all;}}
- 第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文件。 - 以上为讲解这三个重点地方的功能,下面把这个配置代码复制下来。
上面的命令会在sudo vim /etc/nginx/conf.d/laravel.conf
/etc/nginx/conf.d/目录下创建一个larave.conf文件,并进行编辑状态,粘贴代码到conf文件中。根据你的需求来进行更改。之后运行nginx的检测配置命令,看你参数是否有错误:
如果成功,没有出错误,那么平滑重启你的nginx,(wsl不支持systemctl)sudo nginx -t
当然,做完这些很有可能是无法访问的。原因是ip问题。下一阶段会讲怎么每次开机动态获取wsl的ip地址,并添加到hosts文件中。sudo service nginx reload
写在最后:
最后,我们需要将php.ini和nginx.conf配置文件中的用户和组,wsl子系统的用户名,一般为你安装ubuntu时它提示你输入的username
修改后
user df;
- 修改php.ini```shellsudo vim /etc/php/8.0/fpm/pool.d/www.conf
修改如下内容:
这是修改后的内容,未修改之前值全部为www-data
user = dfgroup = df#在第n行listen.owner = dflisten.group = df
