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
下的內容。
如果你還想加入更多的本地域名,只需要重複以上步驟即可。