文章:Drupal 開發環境搭建(在 Windows 中通過 WSL 配置 Ubuntu+Apache+PHP+MariaDB+Drupal+Drush開發環境)
1. 補充知識
1.1 在 Windows11 中通過 WSL 配置 Ubuntu 系統的好處
最初我是直接在Windows系統中搭建的Apache+PHP+Drupal開發環境,但出現了一個問題:操作Drupal後台很卡、很慢。之所以會出現這個問題,是因為Drupal系統運行時會調用大量的文件,Windows系統操作大量文件的速度太慢,速度明顯低於Linux系統。因此,從事Drupal開發,必須要在Linux環境中進行。
通過Windows系統提供的WSL(全稱:Windows Subsystem for Linux)工具,在Windows中搭建Linux開發環境,既可以使用Linux進行軟件開發從而大大提高項目運行速度,又可以使用Windows系統,我覺得這是最佳的開發環境。
因此,我選擇的Drupal開發環境是:在Windows11中通過WSL配置Ubuntu,在Ubuntu中安裝Apache、PHP、MariaDB、Drupal。
1.2 WSL2簡介
2019年推出,使用了一個Hyper-V輕量級虛擬機,虛擬機中運行着一個定製版的Linux內核。
2. 開發環境搭建步驟
2.1 第一步:在 Windows11 中安裝 WSL2、Ubuntu
- 在Windows操作系統中啓用WSL2支持:在控制面板→"啓用或關閉Windows功能"窗口中,勾選以下兩個選項:適用於 Linux 的 Windows 子系統 (Windows Subsystem for Linux)、Virtual Machine Platform (虛擬機平台),重啓計算機。
- 安裝WSL2,同時安裝一個Ubuntu系統實例:打開Windows PowerShell,在命令行輸入:wsl --install,過程中讓輸入一個賬號(zhouyiben)和密碼(000000)。默認安裝的Ubuntu的版本是:Ubuntu 24.04.3 LTS。
2.2 第二步:安裝並配置 Apache
2.2.1 安裝 Apache
- 第一步:先更新軟件倉庫、升級軟件模塊。打開 Ubuntu 終端,更新軟件源並升級現有包,確保系統處於最新狀態:sudo apt update && sudo apt upgrade -y
- 第二步:安裝Apache服務器:sudo apt install apache2 -y
- 第三步:查看安裝的Apache的版本:apache2 -v
- 第四步:啓動Apache服務:sudo service apache2 start(或sudo systemctl start apache2)
- 設置Apache開機自啓動(在WSL 中重啓 Ubuntu 後,Apache自動啓動):sudo systemctl enable apache2
- 驗證 Apache 是否安裝成功:
- 方法一:在Windows瀏覽器中訪問http://localhost,應該看到 Apache2 Ubuntu Default Page。
- 方法二:通過檢查Apache狀態:sudo systemctl status apache2【若顯示 active (running)】
2.2.2 配置 Apache
2.2.2.1 WSL中的Ubuntu系統中,Apache經常出現連接延遲和超時問題
在Ubuntu中輸入命令:sudo nano /etc/apache2/apache2.conf,文件中添加如下參數:
AcceptFilter https none
AcceptFilter http none
2.2.2.2 啓用Ubuntu中Apache的URL重寫模塊(這個是Drupal必需的)
- 在Ubuntu系統命令行輸入apache2ctl -M或apachectl -M,查看Apache當前已經加載的模塊,看是否有rewrite_module模塊。如果沒有,必需執行下面的步驟,讓Apache包含此模塊。
- 啓用mod_rewrite模塊:sudo a2enmod rewrite
- 激活新的配置:sudo systemctl restart apache2
- 檢查Apache配置是否有誤:sudo apache2ctl configtest(語法正確的話會返回Syntax OK)
- 給Apache啓用簡潔鏈接功能:在Ubuntu系統中,修改Ubuntu/etc/apache2/apache2.conf文件(使用命令:sudo nano /etc/apache2/apache2.conf),把其中的 AllowOverride None改為 AllowOverride All,如圖:
- 重啓Apache使配置生效:sudo systemctl restart apache2
2.3 第三步:安裝PHP
- 查看當前系統默認支持的 PHP 版本範圍:apt list php* 或 apt-cache search php-
- 安裝PHP和常用擴展:sudo apt install php libapache2-mod-php php-cli php-mysql php-curl php-json php-gd php-mbstring php-xml php-zip -y
- 補充知識:執行完上述操作後,發現少安裝了一個庫,可以執行如下操作:sudo apt install 庫名(例如:sudo apt install php-opcache)
- 查看安裝的PHP版本:php -v【注意:此處如果查看失敗,會提示讓安裝PHP命令行工具,這個版本的PHP的命令是: sudo apt install php8.3-cli】
- 重啓 Apache 使 PHP 生效:sudo systemctl restart apache2
- 驗證 PHP 是否安裝成功:
- Apache 的默認網站根目錄為 /var/www/html,在該目錄下創建 info.php:sudo nano /var/www/html/info.php
- 輸入以下內容,按 Ctrl+O 保存,然後按回車輸入文件名,最後按Ctrl+X 退出:
- 在Windows瀏覽器中輸入http://localhost/info.php,應該能看到詳細的PHP信息頁面。
完成以上步驟後,您的WSL2 Ubuntu環境中就已經成功安裝了Apache和PHP,並且可以通過瀏覽器訪問測試頁面了。
2.4 第四步:安裝 MariaDB 數據庫
- 更新軟件包列表:在Ubuntu終端中運行以下命令,確保獲取最新的軟件源信息:sudo apt update
- 安裝MariaDB服務器(安裝過程中會自動創建數據庫服務和相關依賴):sudo apt install mariadb-server【默認安裝的版本 10.11.13-MariaDB-0ubuntu0.24.04.1】
- 啓動MariaDB服務:sudo systemctl start mariadb
- 設置開機自動啓動(WSL2 重啓後會自動生效):sudo systemctl enable mariadb
- 安裝完成後,MariaDB服務通常會自動啓動。可通過以下命令檢查服務狀態,確認是否正常運行:sudo systemctl status mariadb。如果看到狀態顯示為 active (running),説明服務已成功啓動。【注意:此時會進入分頁查看模式,按q或Ctrl+C即可返回命令】
- 進行安全配置:MariaDB 安裝後默認安全性較低,運行MariaDB自帶的安全安裝腳本進行配置(設置 root 密碼、禁用匿名用户等),以提高數據庫的安全性:
- 操作:輸入命令:sudo mysql_secure_installation
- 設置root用户密碼:root
- 移除匿名用户:Y
- 禁止root用户遠程登錄:Y
- 移除測試數據庫:Y
- 重新加載權限表使設置生效:Y
- 驗證登錄:使用以下命令以root用户身份登錄到MariaDB服務器控制枱:sudo mysql -u root -p,輸入之前設置的root密碼即可進入MariaDB的命令行界面。【注意:按Ctrl+D或輸入exit;或quit;即可退出並回到Ubuntu的終端】
2.4.1 MariaDB 服務相關的命令:
- 啓動服務:sudo systemctl start mariadb
- 停止服務:sudo systemctl stop mariadb
- 重啓服務:sudo systemctl restart mariadb
- 設置開機自啓:sudo systemctl enable mariadb
- 檢查MariaDB服務狀態,確認是否正常運行:sudo systemctl status mariadb。如果看到狀態顯示為 active (running),説明服務已成功啓動。【注意:此時會進入分頁查看模式,按q或Ctrl+C即可返回命令】
2.5 第五步:在 Ubuntu 中給 PHP 安裝 Composer:
- 操作地址:https://pkg.xyz/#how-to-install-composer【安裝的版本:version 2.8.12】
- 安裝完成後,輸入composer -v驗證Composer是否正確安裝。
2.6 第六步:安裝 Drupal
1、給Ubuntu系統安裝解壓工具:unzip(註釋,是給Ubuntu系統安裝,不是給PHP解釋器安裝),命令:
- sudo apt update
- sudo apt install unzip
解釋:Composer 在下載Drupal依賴包(如 Drupal 的核心文件、第三方庫)時,會直接調用系統的 unzip 或 7zip 工具來解壓壓縮包,而不是依賴 PHP 的 zip 擴展。因此,需要先給Ubuntu系統安裝unzip或7zip。而PHP Zip 擴展的功能是:為 PHP 腳本 提供通過代碼(如 ZipArchive 類)直接讀寫 ZIP 文件的能力。
2、在Ubuntu終端進入 Apache 項目根目錄:cd /var/www/html
3、通過composer下載Drupal:composer create-project drupal/recommended-project drupal【就是Drupal官網上的那條命令:https://new.drupal.org/download】
4、在開始安裝 Drupal 項目前,需要先做以下工作
- 為安裝過程中安裝翻譯做準備:在Drupal項目的web/sites/default/files文件夾中建立translations文件夾,這個文件夾用於存放安裝過程中下載下來的翻譯文件。
- 安裝過程中會提示web/sites/default/目錄下settings.php文件不存在,因此需要先做以下工作:複製web/sites/default/default.settings.php,名稱改為settings.php。
- 修改translations目錄和settings.php文件的權限:默認情況下,translations目錄和settings.php文件都不可寫,因此需要重新給html目錄及其子目錄和文件設置用户、用户組和權限,也就是執行如下命令:
- sudo chown -R zhouyiben:www-data /var/www/html
- sudo chmod -R 775 /var/www/html
- Drupal 安裝過程中需要輸入數據庫名,因此打開DataGrip,創建一個新數據庫。
5、在瀏覽器中輸入localhost,進入 Drupal 項目的安裝。
2.7 第七步:給 Drupal 安裝 drush 工具
2.7.1 什麼是 drush?
Drush 是 Drupal Shell 的縮寫,是 Drupal 的命令行工具。它允許你通過命令行執行各種 Drupal 管理任務,比通過網頁界面操作更高效。
2.7.2 安裝drush
2.7.2.1 全局安裝 drush
安裝方法:在Windows上的任意目錄下的cmd中執行命令composer global require drush/drush,drush會被安裝到C:/Users/Jean/AppData/Roaming/Composer
説明:當電腦上安裝了多個 Drupal 項目時,全局安裝 drush容易導致問題。因此,不推薦對 drush 進行全局安裝,應該為每個項目單獨安裝 drush。
2.7.2.2 為某個項目安裝 drush
在某個具體項目上安裝:在項目目錄中執行composer require drush/drush
這裏以為“myblog”項目安裝 drush 為例進行介紹:
- 第一步:為每個項目單獨添加 Drush 依賴。對於項目myblog(例如 /var/www/html/myblog):
cd /var/www/html/myblog
composer require drush/drush
- 第二步:設置目錄所有者、用户組和權限
- 設置所有者和組:所有者設置為zhouyiben,所屬組設置為www-data(這是Apache使用的用户和組):sudo chown -R zhouyiben:www-data /var/www/html
- 設置權限:所有者全權限,組用户全權限,其他用户只讀和執行:sudo chmod -R 775 /var/www/html
- 第三步:直接調用。每次使用 drush 時需要切換到對應項目根目錄:cd /var/www/html
- myblog/vendor/bin/drush cr # 清除緩存【調用方式二:進入 cd /var/www/html/myblog/vendor/bin,然後使用命令:./drush cr,這會明確告訴 shell:“執行當前目錄下的 drush”。注意:在 Linux/Unix 中,當前目錄(.)默認不在 $PATH 中,這是出於安全考慮(防止惡意腳本偽裝成系統命令)。】
- vendor/bin/drush status # 查看狀態
2.7.3 drush 常用命令
2.7.3.1 緩存管理命令
# 清除所有緩存(最常用)
drush cache-rebuild
# 或者簡寫
drush cr
# 清除特定緩存
drush cache-clear css-js
drush cache-clear menu
drush cache-clear theme-registry
2.7.3.2 站點管理命令
# 查看站點狀態
drush status
# 啓用模塊
drush pm-enable module_name
# 禁用模塊
drush pm-disable module_name
# 更新數據庫
drush updatedb
# 執行 Cron
drush cron
2.7.3.3 配置管理命令
# 導出配置
drush config-export
# 導入配置
drush config-import
# 查看配置
drush config-get system.site
2.7.3.4 用户管理命令
# 創建用户
drush user-create username --mail="user@example.com" --password="password"
# 重置管理員密碼
drush user-password admin --password="newpassword"
# 登錄為用户(獲取一次性登錄鏈接)
drush user-login
3. Drupal 開發環境搭建過程中的疑難問題解決
3.1 安裝翻譯過程中出現AJAX錯誤
解決:網絡問題,按F5多刷新幾次。