跳至主要内容

系統需求與前置準備

本文件說明部署 AppFuse 應用系統所需的軟硬體環境及前置準備工作。

系統架構需求​

應用伺服器需求​

Java 運行環境​

本系統需要 JDK 25 或更高版本。

名稱版本說明
OpenJDK25+推薦使用
Azul Zulu25+企業支援選項
Oracle JDK25+需要授權
Amazon Corretto25+AWS 環境推薦

驗證安裝:

$ java -version
openjdk version "25" 2025-09-16
OpenJDK Runtime Environment (build 25+...)
OpenJDK 64-Bit Server VM (build 25+..., mixed mode, sharing)

Java Application Server​

本系統使用符合 Jakarta Servlet 6.1 標準的技術開發,可在以下 Java Application Server 上運行:

名稱版本Servlet Spec說明
Apache Tomcat11.0+6.1推薦使用,本文件主要說明

注意:Spring Boot 4.0 要求 Jakarta Servlet 6.1(Jakarta EE 11)。JBoss EAP 8.0 僅支援 Jakarta EE 10(Servlet 6.0),尚不相容。待 Red Hat 發布支援 Jakarta EE 11 的版本後方可使用。

Node.js 環境(建構時需要)​

前端應用建構需要 Node.js 22.x。

名稱版本說明
Node.js22.xLTS 版本
npm10.x隨 Node.js 安裝

驗證安裝:

$ node -version
v22.19.0

$ npm -version
10.x.x

提示:建議使用 Volta 或 nvm 管理 Node.js 版本。

Web 伺服器​

名稱版本用途
Nginx1.18+反向代理、靜態檔案服務、SSL 終結

作業系統​

以下作業系統經過測試驗證:

名稱版本說明
Ubuntu Server22.04+ LTS推薦
Rocky Linux8.x+RHEL 相容
Red Hat Enterprise Linux8.x+企業環境
Windows Server2019+Windows 環境
macOS13+開發環境

Ubuntu 版本檢查與升級:

# 檢查版本
cat /etc/os-release

# 更新系統套件
sudo apt update
sudo apt -y upgrade

# 升級至新版 Ubuntu(如需要)
sudo do-release-upgrade

資料庫伺服器需求​

本系統支援多種關聯式資料庫:

名稱版本說明
MySQL8.0+推薦,廣泛使用
PostgreSQL12+開源首選
Microsoft SQL Server2019+企業環境
Oracle Database19c+企業環境
H22.x僅限開發/測試

MySQL 建議配置​

-- 檢查 transaction isolation
SHOW GLOBAL VARIABLES LIKE 'transaction_isolation';
-- 建議值:READ-COMMITTED

-- 檢查封包大小
SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet';
-- 建議值:268435456 (256MB)

-- 檢查最大連線數
SHOW GLOBAL VARIABLES LIKE 'max_connections';
-- 建議值:200+

編碼與排序​

資料庫必須支援 UTF-8 編碼以處理多國語文:

資料庫編碼設定排序設定
MySQLutf8mb4utf8mb4_unicode_ci
PostgreSQLUTF8en_US.UTF-8
SQL Server 2019+UTF-8適用語系且以 _UTF8 結尾的 collation
OracleAL32UTF8依應用排序需求選擇

網路需求​

開放埠號​

埠號服務說明
80HTTPNginx(可選,建議重導向至 HTTPS)
443HTTPSNginx(生產環境必須)
8080APISpring Boot(僅內部存取)
3306MySQL資料庫(僅內部存取)
5432PostgreSQL資料庫(僅內部存取)

網路架構​

硬體需求​

最低需求(開發/測試)​

資源規格
CPU2 核心
記憶體4 GB
硬碟20 GB SSD

建議需求(生產環境)​

資源規格
CPU4+ 核心
記憶體8+ GB
硬碟100+ GB SSD

時區與時間同步​

確認時區設定​

系統時區應設定為本地時區,以確保日誌時間易於閱讀:

$ date
Thu Nov 27 10:30:00 CST 2024

$ timedatectl
Local time: Thu 2024-11-27 10:30:00 CST
Universal time: Thu 2024-11-27 02:30:00 UTC
RTC time: Thu 2024-11-27 02:30:00
Time zone: Asia/Taipei (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

設定時區​

如果時區不正確,執行以下指令設定(以台北時區為例):

sudo timedatectl set-timezone Asia/Taipei

時間同步(NTP)​

確認系統時間與標準時間同步。檢查 System clock synchronized 是否為 yes:

$ timedatectl
System clock synchronized: yes
NTP service: active

如果顯示 NTP service: inactive,啟用時間同步:

sudo timedatectl set-ntp on

安裝 NTP 服務(選用)​

如果系統不支援 timesyncd,可安裝 ntp 套件:

# 停用 timesyncd(避免衝突)
sudo timedatectl set-ntp no

# 安裝 NTP
sudo apt install ntp -y

# 檢查 NTP 同步狀態
ntpq -p

確認同步成功:

$ timedatectl
System clock synchronized: yes
NTP service: n/a

重要:時間不同步可能導致 JWT Token 驗證失敗、日誌時間錯亂等問題。

前置準備清單​

在開始安裝前,請確認已完成以下準備:

帳戶與權限​

  • 應用伺服器的系統帳戶(如 appmgr)
  • 資料庫管理員帳戶
  • 應用程式專用的資料庫帳戶
  • 電子郵件服務帳戶(用於系統通知)

資料庫​

  • 已建立應用程式專用資料庫
  • 已配置正確的編碼與排序
  • 已授權應用程式帳戶存取資料庫

電子郵件服務​

  • 已取得 SMTP 伺服器位址
  • 已取得郵件帳戶與密碼
  • 已確認 SMTP 埠號(通常為 587 或 465)

網路​

  • 已開放必要的埠號
  • 已配置防火牆規則
  • (選用)已取得 SSL 憑證

軟體​

  • 已安裝 JDK 25+
  • 已安裝 Apache Tomcat 11.0+
  • 已安裝 Node.js 22.x(建構用)
  • 已安裝 Nginx

準備工作完成後的資訊​

完成準備工作後,您應該具備以下資訊:

# 應用伺服器
應用伺服器位址: app.example.com
系統帳戶: appmgr
系統密碼: ********

# 資料庫
資料庫伺服器位址: db.example.com
資料庫名稱: appdb
資料庫帳戶: appmgr
資料庫密碼: ********

# 電子郵件服務
SMTP 伺服器: smtp.example.com
SMTP 埠號: 587
SMTP 帳戶: noreply@example.com
SMTP 密碼: ********

# SSL(生產環境)
SSL 憑證檔案: /etc/nginx/ssl/example.com.crt
SSL 私鑰檔案: /etc/nginx/ssl/example.com.key

環境檢查腳本​

建立以下腳本快速檢查環境:

#!/bin/bash
# check-prerequisites.sh

echo "=== 環境檢查 ==="

echo -n "Java: "
java -version 2>&1 | head -1

echo -n "Node.js: "
node --version 2>/dev/null || echo "未安裝"

echo -n "npm: "
npm --version 2>/dev/null || echo "未安裝"

echo -n "Nginx: "
nginx -v 2>&1

echo "=== 檢查完成 ==="

下一步​

環境準備完成後,請參閱 安裝指南 進行系統安裝。