iT邦幫忙

2026 iThome 鐵人賽

DAY 25
0

在前面的章節中,測試時是透過 PHP 內建的開發伺服器(php -S)來執行網站。到了部署階段,改用 Apache HTTP Server,並透過 libapache2-mod-php 模組讓 Apache 執行圖書管理系統。

一、 安裝與啟動 Apache 伺服器

步驟 1:更新套件清單並安裝 Apache

開啟 WSL2 終端機,執行以下指令:

sudo apt update
sudo apt install apache2 php libapache2-mod-php -y
  • apache2:Apache 網頁伺服器主程式。
  • libapache2-mod-php:讓 Apache 能夠解析 .php 檔案的核心模組。

步驟 2:啟動 Apache 服務

sudo service apache2 start

驗證 Apache 是否正常運行:

sudo service apache2 status

二、 設定 Apache 網頁根目錄

預設情況下,Apache 會去讀取 /var/www/html 目錄下的網頁檔案。為了讓 Apache 直接讀取我們放在家目錄下的專案(/home/user/library-system),有兩種常見的做法:

  1. 建立軟連結(Symbolic Link):將專案目錄連結至 /var/www/html(最快速直覺)。
  2. 修改 Apache 設定檔:自訂 VirtualHost(虛擬主機)的 DocumentRoot。

這裡採用自訂 VirtualHost 設定檔方式。

步驟 1:建立專案的 Apache 設定檔

在 /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>
  • Require all granted:允許外接請求存取此目錄。
  • AllowOverride All:允許專案使用 .htaccess 檔進行路由或重寫設定。

步驟 2:啟用新設定檔並停用預設網站

# 停用預設的 000-default 網站
sudo a2dissite 000-default.conf

# 啟用我們剛寫好的圖書系統設定檔
sudo a2ensite library-system.conf

三、 設定語法檢查與連線驗證

1. 測試 Apache 設定檔語法(configtest)

在重啟服務前,先檢查剛寫好的 .conf 設定檔是否有語法錯誤:

sudo apache2ctl configtest

終端機顯示 Syntax OK,就代表設定檔語法正確無誤。

2. 重啟 Apache 服務

正式重啟 Apache:

sudo service apache2 restart

四、 排除 WSL2 與 Apache 權限問題(403 Forbidden)

重啟服務後,開啟 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 伺服器環境下運行。


上一篇
Day 24 備份與還原
系列文
從零打造圖書管理系統:WSL2 × MySQL × Claude Code 的整合實作 共 25 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言