在前面的章節中,測試時是透過 PHP 內建的開發伺服器(php -S)來執行網站。到了部署階段,改用 Apache HTTP Server,並透過 libapache2-mod-php 模組讓 Apache 執行圖書管理系統。
開啟 WSL2 終端機,執行以下指令:
sudo apt update
sudo apt install apache2 php libapache2-mod-php -y
apache2:Apache 網頁伺服器主程式。libapache2-mod-php:讓 Apache 能夠解析 .php 檔案的核心模組。sudo service apache2 start
驗證 Apache 是否正常運行:
sudo service apache2 status
預設情況下,Apache 會去讀取 /var/www/html 目錄下的網頁檔案。為了讓 Apache 直接讀取我們放在家目錄下的專案(/home/user/library-system),有兩種常見的做法:
這裡採用自訂 VirtualHost 設定檔方式。
在 /etc/apache2/sites-available/ 目錄下建立一個新的設定檔 library-system.conf:
sudo nano /etc/apache2/sites-available/library-system.conf
寫入以下內容:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user/library-system
<Directory /home/user/library-system>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/library_system_error.log
CustomLog ${APACHE_LOG_DIR}/library_system_access.log combined
</VirtualHost>
# 停用預設的 000-default 網站
sudo a2dissite 000-default.conf
# 啟用我們剛寫好的圖書系統設定檔
sudo a2ensite library-system.conf
configtest)在重啟服務前,先檢查剛寫好的 .conf 設定檔是否有語法錯誤:
sudo apache2ctl configtest
終端機顯示 Syntax OK,就代表設定檔語法正確無誤。
正式重啟 Apache:
sudo service apache2 restart
重啟服務後,開啟 Windows 上的瀏覽器輸入 http://localhost/,如果頁面顯示 403 Forbidden 權限錯誤,這是非常經典的 Linux 權限問題。
原因:pache 服務預設是以 www-data 使用者身分運行,而我們的專案位在 /home/user/library-system,www-data 預設沒有權限進入與讀取 /home/user/ 這個目錄。
解決方法:授權目錄存取權限
給予 Apache 讀取與進入專案目錄的權限:
# 給予家目錄執行(進入)權限
chmod 755 /home/user
# 調整專案目錄與內部檔案存取權限
chmod -R 755 /home/user/library-system
設定完成後再次重新整理瀏覽器頁面 http://localhost/,就能看到圖書管理系統首頁(書籍列表)了。
今天完成圖書管理系統的正式 Web 伺服器部署,現在圖書管理系統能夠在穩定的 Apache Web 伺服器環境下運行。