跳至主要内容

系統需求與前置準備

本文件說明部署 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

提示:建議使用 Voltanvm 管理 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-Chinese_Taiwan_Stroke_CI_AS

網路需求

開放埠號

埠號服務說明
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 "=== 檢查完成 ==="

下一步

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