Windows 11 下的 WSL 2 为大家提供了方便的 Linux 环境,今天我们就教大家如何于 Windows 11 WSL 2 搭建 Apache 2 及 PHP 7 开发环境,并设置不同的本地域名指向不同的文件夹。
安装 Apache 2 及 PHP 7
首先,我们先需要安装 Apache 2 和 PHP 7。由于默认的 WSL 2 已经是 Ubuntu 20.04(可以使用 lsb_release -a
检查),我们可以直接使用 apt-get
安装 PHP 7:(下文中我们将以安装 PHP 7.4 为例。)
1 2 |
sudo apt-get install apache2 php7.4 libapache2-mod-php7.4 sudo apt-get install php-curl php-gd php-intl php-json php-mbstring php-xml |
在安装完成后,我们可以用 apache2 -v
和 php -v
检查安装的版本:
1 2 3 4 5 6 7 8 |
~ apache2 -v Server version: Apache/2.4.41 (Ubuntu) Server built: 2022-03-16T16:52:53 ~ php -v PHP 7.4.3 (cli) (built: Mar 2 2022 15:36:52) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies |
而我们便应该也可以访问 http://localhost/ 并看到 Apache 的默认页面:
注意在每次重启系统后或修改 Apache 配置文件后,我们都需要通过以下命令重启 Apache:
1 |
sudo service apache2 restart |
设置网站目录
我们可以首先将开发网站的根目录设置在一个更方便的地方,比如下文我们将以 /home/hesyifei/wwwroot/
为例。
打开 /etc/apache2/sites-available/
文件夹,并将 000-default.conf
中的
1 |
DocumentRoot /var/www/html |
改为你想要的目录:
1 |
DocumentRoot /home/hesyifei/wwwroot |
并在最后的 </VirtualHost>
前加入
1 2 3 4 |
<Directory "/home/hesyifei/wwwroot"> AllowOverride All Require all granted </Directory> |
然后我们在使用 sudo service apache2 restart
重启后,刷新 http://localhost/ 后便应该能够看到 /home/hesyifei/wwwroot/
下的内容了。
检查 PHP 版本
为了确保我们成功安装了 PHP,我们可以创建 ~/wwwroot/info.php
文件并加入以下内容:
1 2 |
<?php phpinfo(); |
然后访问 http://localhost/info.php 便应该能够看到 PHP 的相关信息:
配置本地域名
在开发过程中,如果我们只能使用 localhost 一个域名做开发并不是十分方便。下文我们将教大家如何设置多个 .localhost 域名,让你能够比如将 ~/wwwroot/hesyifei/
文件夹绑定到 hesyifei.localhost 域名。
注:一个更理想的方案是将 *.localhost 全部解析到 127.0.0.1 上,但似乎 Windows / WSL 2 下暂时还没有比较好的解决方案(见1、2)。
在 Windows 内打开 C:\Windows\System32\drivers\etc\hosts
文件,并加入例如以下几行
1 2 |
127.0.0.1 yhe.localhost 127.0.0.1 hesyifei.localhost |
上面这两行将 yhe.localhost 和 hesyifei.localhost 这两个域名指向 localhost。
保存这个 hosts 文件后,打开 http://yhe.localhost/ 和 http://hesyifei.localhost/ 便都会看到 ~/wwwroot/
下的内容。但我们想要的效果是 yhe.localhost 指向 ~/wwwroot/yhe/
以及 hesyifei.localhost 指向 ~/wwwroot/hesyifei/
,所以我们还需要修改一些 Apache 的配置。
打开 /etc/apache2/sites-available
文件夹,并复制 000-default.conf
文件为 hesyifei.conf
:
1 |
sudo cp 000-default.conf hesyifei.conf |
打开 hesyifei.conf
文件并将注释的
1 |
#ServerName www.example.com |
改为你想要指向的本地域名
1 |
ServerName hesyifei.localhost |
并把下方的
1 |
DocumentRoot /home/hesyifei/wwwroot |
和
1 |
<Directory "/home/hesyifei/wwwroot"> |
改为你想指向的文件夹:
1 |
DocumentRoot /home/hesyifei/wwwroot/hesyifei |
和
1 |
<Directory "/home/hesyifei/wwwroot/hesyifei"> |
保存之后,我们需要启动这个配置(a2ensite
后面的是我们新复制的文件名(不带 .conf
):
1 |
sudo a2ensite hesyifei |
最后,我们还需要重启 Apache 服务器:
1 |
sudo service apache2 restart |
现在我们访问 http://hesyifei.localhost/ 就应该能看到 /home/hesyifei/wwwroot/hesyifei
下的内容,而访问 http://localhost/ 仍然能看到 /home/hesyifei/wwwroot
下的内容。
如果你还想加入更多的本地域名,只需要重复以上步骤即可。