Ubuntu 22.04 LAMP Server 是什麼?
LAMP 是 Linux、Apache、MySQL 與 PHP 組成的網站伺服器架構,其中 Linux 負責作業系統環境,Apache 負責處理 HTTP/HTTPS 網站請求,MySQL 負責資料儲存,PHP 則負責動態網頁與後端程式邏輯。
在 22.04 上部署 LAMP Server,是建立 PHP 網站、WordPress、Laravel、CMS 後台、RESTful API 與企業內部系統最常見的基礎做法。本文會從系統更新、Apache 安裝、PHP 模組安裝、MySQL 安裝、安全設定、測試方式、服務管理到故障排除,完整說明如何建立一套可實際使用的 LAMP 環境。
本文適合誰閱讀?
- 想在 Ubuntu 22.04 上架設 PHP 網站的使用者
- 準備安裝 WordPress、Laravel 或自製 PHP CMS 的工程師
- 需要建立 Apache + PHP + MySQL 測試環境的人
- 想學習 Linux Web Server 基礎維運的新手
- 需要將網站部署到 VPS、雲端主機或內部伺服器的管理者
安裝前準備
在開始安裝之前,請先確認你已經具備一台 Ubuntu 22.04 Server,並且可以使用具有 sudo 權限的帳號登入系統。如果是雲端主機,也要確認防火牆或安全群組已允許 80 與 443 連線。
- 作業系統:Ubuntu 22.04 LTS
- 帳號權限:具備 sudo 權限
- 網路需求:可連線到 Ubuntu 套件庫
- 建議開放 Port:80 HTTP、443 HTTPS、22 SSH
- 建議記憶體:至少 1GB RAM,正式環境建議 2GB 以上
Step 1:更新 Ubuntu 22.04 系統套件
安裝 Apache、PHP 與 MySQL 之前,建議先更新套件索引與既有套件,避免因為套件版本過舊造成相依性錯誤。
sudo apt update
sudo apt upgrade -y
更新完成後,如果系統核心或重要套件有更新,建議重新開機一次。
sudo reboot
Step 2:安裝 Apache Web Server
Apache 是 LAMP 架構中的 Web Server,負責接收瀏覽器請求並回傳網站內容。Ubuntu 22.04 可以直接透過 apt 安裝 Apache。
sudo apt install apache2 -y
安裝完成後,啟動 Apache 並設定開機自動啟動。
sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl status apache2
如果狀態顯示 active running,代表 Apache 已正常啟動。接著可以在瀏覽器輸入伺服器 IP,例如 http://你的伺服器IP,如果看到 Apache 預設頁面,表示 Web Server 已成功安裝。
Step 3:設定 UFW 防火牆允許 HTTP 與 HTTPS
如果 Ubuntu 啟用了 UFW 防火牆,需要允許 Apache 的 HTTP 與 HTTPS 連線,否則外部瀏覽器可能無法連進網站。
sudo ufw allow 'Apache Full'
sudo ufw status
Apache Full 會同時允許 80 與 443 Port,適合後續設定 HTTPS 的網站。如果目前只想開放 HTTP,也可以使用 Apache 設定檔。
sudo ufw allow 'Apache'
Step 4:安裝 PHP 與常用模組
PHP 是動態網站的後端程式語言。除了基本 PHP 套件外,建議同時安裝常見模組,例如 MySQL 連線、字串處理、XML、ZIP、GD 圖片處理與 cURL。這些模組對 WordPress、Laravel、CMS 與 API 系統都很常用。
sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
安裝完成後,可以檢查 PHP 版本。
php -v
Step 5:測試 Apache 是否能執行 PHP
PHP 安裝完成後,需要確認 Apache 是否能正確解析 PHP 檔案。可以建立一個 info.php 測試檔。
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
接著在瀏覽器開啟以下網址:
http://你的伺服器IP/info.php
如果看到 PHP 資訊頁面,代表 Apache 已經成功載入 PHP 模組。測試完成後,請務必刪除 info.php,因為 phpinfo 會顯示伺服器環境資訊,不適合留在正式網站中。
sudo rm /var/www/html/info.php
Step 6:設定 Apache 優先讀取 index.php
如果網站主要使用 PHP,建議讓 Apache 優先讀取 index.php。這樣當使用者開啟網站根目錄時,Apache 會優先執行 PHP 首頁。
sudo nano /etc/apache2/mods-enabled/dir.conf
將 DirectoryIndex 調整為以下順序:
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
修改完成後重新啟動 Apache。
sudo systemctl restart apache2
Step 7:安裝 MySQL Server
MySQL 是 LAMP 架構中的資料庫服務,負責儲存網站會員、文章、設定、訂單、留言與其他動態資料。Ubuntu 22.04 可以直接透過 apt 安裝 MySQL Server。
sudo apt install mysql-server -y
安裝完成後,啟動 MySQL 並設定開機自動啟動。
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql
Step 8:執行 MySQL 安全設定
MySQL 安裝完成後,建議執行 mysql_secure_installation 進行基本安全強化,例如移除匿名使用者、禁止 root 遠端登入、移除測試資料庫與重新載入權限。
sudo mysql_secure_installation
- 建議啟用密碼強度檢查
- 移除匿名使用者
- 禁止 root 遠端登入
- 移除 test database
- 重新載入權限表
Step 9:建立網站用 MySQL 資料庫與帳號
正式網站不建議直接使用 root 帳號連線。比較安全的做法是為每個網站建立獨立資料庫與專用帳號。以下範例會建立一個 webtest 資料庫與 webuser 使用者。
sudo mysql
CREATE DATABASE webtest CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON webtest.* TO 'webuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
這裡使用 utf8mb4 是因為它可以完整支援中文、Emoji 與多語系內容,較適合現代網站與 CMS 系統。
Step 10:測試 PHP 連線 MySQL
LAMP Server 是否真正可用,不能只看 Apache 與 PHP 是否啟動,還要測試 PHP 是否可以成功連線 MySQL。以下建立一個 dbtest.php 測試檔。
sudo nano /var/www/html/dbtest.php
<?php
$mysqli = new mysqli('localhost', 'webuser', 'StrongPassword123!', 'webtest');
if ($mysqli->connect_error) {
die('MySQL 連線失敗:' . $mysqli->connect_error);
}
echo 'PHP 連接 MySQL 成功';
?>
接著在瀏覽器開啟:
http://你的伺服器IP/dbtest.php
如果畫面顯示 PHP 連接 MySQL 成功,代表 Apache、PHP 與 MySQL 已經可以正常整合。測試完成後,建議刪除測試檔,避免資料庫帳密暴露。
sudo rm /var/www/html/dbtest.php
Apache、PHP、MySQL 服務管理指令
網站上線後,日常維運會經常需要啟動、停止、重新啟動或查看服務狀態。以下是 LAMP Server 常用的 systemctl 指令。
Apache 服務管理
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
sudo systemctl status apache2
MySQL 服務管理
sudo systemctl start mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
sudo systemctl status mysql
確認服務是否開機自動啟動
systemctl is-enabled apache2
systemctl is-enabled mysql
網站目錄與權限設定
Apache 在 Ubuntu 22.04 的預設網站目錄是 /var/www/html。如果你要放置 PHP 網站,可以將檔案放在這個目錄,或另外建立 VirtualHost 指向不同網站目錄。
ls -ld /var/www/html
若需要將網站檔案交由目前使用者管理,可以調整目錄擁有者。以下範例將 /var/www/html 指定給目前登入使用者。
sudo chown -R $USER:www-data /var/www/html
sudo chmod -R 755 /var/www/html
正式環境中,權限不要一律設定成 777。這是很多新手常犯的錯誤,雖然短時間內看似解決權限問題,但會大幅增加網站被入侵的風險。
常見故障排除
問題 1:瀏覽器無法開啟 Apache 預設頁面
如果瀏覽器無法連線,通常要先檢查 Apache 是否啟動、防火牆是否開放,以及伺服器 IP 是否正確。
sudo systemctl status apache2
sudo ufw status
ip addr
問題 2:PHP 原始碼被直接顯示在網頁上
如果瀏覽器顯示 PHP 原始碼,而不是執行結果,代表 Apache 沒有正確載入 PHP 模組。可以重新安裝 libapache2-mod-php 並重啟 Apache。
sudo apt install libapache2-mod-php -y
sudo systemctl restart apache2
問題 3:PHP 無法連線 MySQL
如果 PHP 出現 mysqli 或 PDO MySQL 相關錯誤,通常是 php-mysql 模組尚未安裝,或資料庫帳號、密碼、資料庫名稱設定錯誤。
sudo apt install php-mysql -y
sudo systemctl restart apache2
問題 4:Apache 設定修改後無法啟動
修改設定檔後,建議先執行語法檢查,確認沒有錯誤再重新啟動服務。
sudo apache2ctl configtest
sudo systemctl restart apache2
問題 5:MySQL 無法啟動
MySQL 無法啟動時,可以先查看 systemctl 狀態與系統日誌,判斷是否為設定檔錯誤、磁碟空間不足或權限問題。
sudo systemctl status mysql
sudo journalctl -xeu mysql
LAMP Server 安全強化建議
完成基本安裝後,還不能直接視為正式環境。正式對外服務之前,至少應該完成防火牆、HTTPS、資料庫帳號分權、測試檔移除與系統更新。
- 只開放必要 Port,例如 22、80、443
- 移除 info.php、dbtest.php 等測試檔
- MySQL 不使用 root 作為網站連線帳號
- 資料庫帳號只授權需要的資料庫
- 網站正式上線前設定 HTTPS 憑證
- 定期執行 apt update 與 apt upgrade
- 安裝 Fail2ban 防止 SSH 暴力破解
- 設定網站目錄正確權限,避免使用 777
- 定期備份網站檔案與 MySQL 資料庫
進階延伸:下一步可以做什麼?
當 LAMP Server 基礎環境完成後,可以進一步部署 CMS、API 或企業網站,也可以開始加強效能、安全與維運能力。
- 設定 Apache VirtualHost,讓同一台主機支援多個網站
- 安裝 Let’s Encrypt SSL 憑證,啟用 HTTPS
- 部署 WordPress、Laravel 或自製 PHP CMS
- 設定 MySQL 自動備份與還原流程
- 整合 Fail2ban、UFW 與系統安全監控
- 啟用 Apache rewrite,支援 SEO-Friendly URL
- 設定 OPcache 提升 PHP 執行效能
- 使用 phpMyAdmin 或 Adminer 管理 MySQL
Q&A 常見問題
Q1:Ubuntu 22.04 適合架設 LAMP Server 嗎?
適合。Ubuntu 22.04 是 LTS 長期支援版本,套件穩定、文件資源多,很適合用來架設 Apache、PHP 與 MySQL 網站環境。
Q2:Apache 和 Nginx 應該選哪一個?
如果你是新手或主要部署傳統 PHP 網站、WordPress、CMS,Apache 較容易入門。如果你需要高併發、反向代理或靜態檔案效能優化,Nginx 也是很好的選擇。本文以 Apache 為主,因為它與 LAMP 架構整合最直覺。
Q3:網站可以直接使用 MySQL root 帳號嗎?
不建議。正式網站應該建立專用資料庫帳號,並只授權該網站需要的資料庫。這樣即使網站程式發生漏洞,也能降低資料庫被全面破壞的風險。
Q4:為什麼測試完成後要刪除 info.php?
phpinfo 會顯示 PHP 版本、模組、路徑、環境變數等資訊。這些資訊對攻擊者有利用價值,所以正式環境不應該保留 info.php。
Q5:LAMP Server 安裝完成後可以直接放網站嗎?
可以放測試網站,但正式上線前建議完成 HTTPS、防火牆、資料庫帳號分權、備份機制與基本安全強化。只完成安裝不代表已經具備正式營運等級的安全性。
總結
Ubuntu 22.04 搭配 Apache、PHP 與 MySQL 可以快速建立穩定的 LAMP Server,適合部署 WordPress、Laravel、PHP CMS、RESTful API 與各種中小型網站系統。
本文從系統更新、Apache 安裝、PHP 模組安裝、MySQL 安裝、安全設定、PHP 連線 MySQL 測試、服務管理、故障排除到進階維運建議,完整建立一篇可以實際操作,也適合 SEO 與 AI 搜尋理解的技術文章。
如果你正在建立自己的 we-blog CMS,這種區塊化文章結構會比單純一大段 HTML 更適合後續做 AI SEO、JSON-LD、目錄、自動摘要、FAQ Schema、Related Posts 與全文搜尋。