From 3f96c9c6502243b06efd4bb34a189e72e3a5557c Mon Sep 17 00:00:00 2001
From: yearning <10538594+wangweifeng1999@user.noreply.gitee.com>
Date: 星期一, 28 九月 2026 19:24:55 +0800
Subject: [PATCH] 复制项目

---
 deploy-to-huaweicloud.html |  868 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 868 insertions(+), 0 deletions(-)

diff --git a/deploy-to-huaweicloud.html b/deploy-to-huaweicloud.html
new file mode 100644
index 0000000..79fe681
--- /dev/null
+++ b/deploy-to-huaweicloud.html
@@ -0,0 +1,868 @@
+<!-- Generated by Trae Work -->
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>鑰冭瘯闃呭嵎绯荤粺 - 鍗庝负浜戦儴缃叉柊鎵嬫暀绋�</title>
+<style>
+  * { margin: 0; padding: 0; box-sizing: border-box; }
+  body {
+    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
+    background: #f5f7fa;
+    color: #333;
+    line-height: 1.8;
+  }
+  .container {
+    max-width: 960px;
+    margin: 0 auto;
+    padding: 40px 20px;
+  }
+  h1 {
+    font-size: 32px;
+    color: #1a1a2e;
+    margin-bottom: 10px;
+    text-align: center;
+  }
+  .subtitle {
+    text-align: center;
+    color: #666;
+    margin-bottom: 40px;
+    font-size: 16px;
+  }
+  .toc {
+    background: #fff;
+    border-radius: 12px;
+    padding: 24px 32px;
+    margin-bottom: 32px;
+    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
+  }
+  .toc h2 {
+    font-size: 18px;
+    margin-bottom: 12px;
+    color: #1a1a2e;
+  }
+  .toc ol {
+    padding-left: 24px;
+  }
+  .toc li {
+    margin: 6px 0;
+  }
+  .toc a {
+    color: #0052d9;
+    text-decoration: none;
+  }
+  .toc a:hover {
+    text-decoration: underline;
+  }
+  .section {
+    background: #fff;
+    border-radius: 12px;
+    padding: 32px;
+    margin-bottom: 24px;
+    box-shadow: 0 2px 12px rgba(0,0,0,0.06);
+  }
+  .section h2 {
+    font-size: 24px;
+    color: #1a1a2e;
+    margin-bottom: 16px;
+    padding-bottom: 12px;
+    border-bottom: 2px solid #e8eaed;
+    display: flex;
+    align-items: center;
+    gap: 10px;
+  }
+  .section h2 .step-num {
+    background: linear-gradient(135deg, #0052d9, #36cffb);
+    color: #fff;
+    width: 36px;
+    height: 36px;
+    border-radius: 50%;
+    display: inline-flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 16px;
+    font-weight: bold;
+  }
+  .section h3 {
+    font-size: 18px;
+    color: #1a1a2e;
+    margin: 20px 0 10px;
+  }
+  .section p {
+    margin: 10px 0;
+    color: #444;
+  }
+  .section ul, .section ol {
+    padding-left: 24px;
+    margin: 10px 0;
+  }
+  .section li {
+    margin: 6px 0;
+    color: #444;
+  }
+  .code-block {
+    background: #1e1e2e;
+    color: #cdd6f4;
+    padding: 16px 20px;
+    border-radius: 8px;
+    margin: 12px 0;
+    font-family: "Fira Code", "Consolas", monospace;
+    font-size: 14px;
+    overflow-x: auto;
+    line-height: 1.6;
+  }
+  .code-block .comment { color: #6c7086; }
+  .code-block .cmd { color: #a6e3a1; }
+  .code-block .var { color: #f9e2af; }
+  .tip {
+    background: #ecf5ff;
+    border-left: 4px solid #409eff;
+    padding: 12px 16px;
+    border-radius: 4px;
+    margin: 12px 0;
+    color: #333;
+  }
+  .tip::before {
+    content: "馃挕 鎻愮ず锛�";
+    font-weight: bold;
+    color: #409eff;
+  }
+  .warning {
+    background: #fdf6ec;
+    border-left: 4px solid #e6a23c;
+    padding: 12px 16px;
+    border-radius: 4px;
+    margin: 12px 0;
+    color: #333;
+  }
+  .warning::before {
+    content: "鈿狅笍 娉ㄦ剰锛�";
+    font-weight: bold;
+    color: #e6a23c;
+  }
+  .success {
+    background: #f0f9eb;
+    border-left: 4px solid #67c23a;
+    padding: 12px 16px;
+    border-radius: 4px;
+    margin: 12px 0;
+    color: #333;
+  }
+  .success::before {
+    content: "鉁� 鎴愬姛锛�";
+    font-weight: bold;
+    color: #67c23a;
+  }
+  .table-wrapper {
+    overflow-x: auto;
+    margin: 16px 0;
+  }
+  table {
+    width: 100%;
+    border-collapse: collapse;
+    font-size: 14px;
+  }
+  th, td {
+    border: 1px solid #e8eaed;
+    padding: 10px 14px;
+    text-align: left;
+  }
+  th {
+    background: #f5f7fa;
+    font-weight: 600;
+    color: #1a1a2e;
+  }
+  tr:nth-child(even) {
+    background: #fafbfc;
+  }
+  .highlight {
+    background: #fffbe6;
+    padding: 2px 6px;
+    border-radius: 3px;
+    font-family: monospace;
+    font-size: 13px;
+  }
+  .architecture {
+    background: #f8f9fc;
+    border-radius: 8px;
+    padding: 24px;
+    margin: 16px 0;
+    text-align: center;
+  }
+  .arch-box {
+    display: inline-block;
+    background: #fff;
+    border: 2px solid #0052d9;
+    color: #0052d9;
+    padding: 12px 24px;
+    border-radius: 8px;
+    margin: 8px;
+    font-weight: 600;
+  }
+  .arch-arrow {
+    display: inline-block;
+    color: #999;
+    font-size: 24px;
+    margin: 0 8px;
+    vertical-align: middle;
+  }
+  .faq-item {
+    border: 1px solid #e8eaed;
+    border-radius: 8px;
+    margin: 10px 0;
+    overflow: hidden;
+  }
+  .faq-q {
+    background: #f5f7fa;
+    padding: 12px 16px;
+    font-weight: 600;
+    color: #1a1a2e;
+  }
+  .faq-a {
+    padding: 12px 16px;
+    color: #555;
+  }
+  .footer {
+    text-align: center;
+    color: #999;
+    padding: 20px;
+    font-size: 14px;
+  }
+</style>
+</head>
+<body>
+<div class="container">
+  <h1>馃殌 鑰冭瘯闃呭嵎绯荤粺 - 鍗庝负浜戦儴缃叉柊鎵嬫暀绋�</h1>
+  <p class="subtitle">浠庤喘涔版湇鍔″櫒鍒颁笂绾胯繍琛岋紝涓�姝ユ甯︿綘瀹屾垚閮ㄧ讲</p>
+
+  <div class="toc">
+    <h2>馃搼 鐩綍</h2>
+    <ol>
+      <li><a href="#overview">椤圭洰姒傝涓庨儴缃叉柟妗�</a></li>
+      <li><a href="#step1">绗竴姝ワ細璐拱鍗庝负浜� ECS 鏈嶅姟鍣�</a></li>
+      <li><a href="#step2">绗簩姝ワ細閰嶇疆瀹夊叏缁勶紙寮�鏀剧鍙o級</a></li>
+      <li><a href="#step3">绗笁姝ワ細杩滅▼鐧诲綍鏈嶅姟鍣�</a></li>
+      <li><a href="#step4">绗洓姝ワ細瀹夎杩愯鐜</a></li>
+      <li><a href="#step5">绗簲姝ワ細涓婁紶椤圭洰浠g爜</a></li>
+      <li><a href="#step6">绗叚姝ワ細瀹夎椤圭洰渚濊禆</a></li>
+      <li><a href="#step7">绗竷姝ワ細鍒濆鍖栨暟鎹簱涓庣鐞嗗憳</a></li>
+      <li><a href="#step8">绗叓姝ワ細鍚姩鏈嶅姟骞堕獙璇�</a></li>
+      <li><a href="#step9">绗節姝ワ細閰嶇疆寮�鏈鸿嚜鍚紙systemd锛�</a></li>
+      <li><a href="#step10">绗崄姝ワ細缁戝畾鍩熷悕锛堝彲閫夛級</a></li>
+      <li><a href="#faq">甯歌闂 FAQ</a></li>
+    </ol>
+  </div>
+
+  <!-- 0. 椤圭洰姒傝 -->
+  <div class="section" id="overview">
+    <h2><span class="step-num">馃搶</span> 椤圭洰姒傝涓庨儴缃叉柟妗�</h2>
+    
+    <h3>椤圭洰鎶�鏈爤</h3>
+    <div class="table-wrapper">
+      <table>
+        <tr><th>灞傜骇</th><th>鎶�鏈�</th><th>绔彛</th></tr>
+        <tr><td>鍓嶇</td><td>React + TypeScript + Vite + Ant Design</td><td>5174锛堢敓浜э級</td></tr>
+        <tr><td>鍚庣</td><td>Python FastAPI + SQLAlchemy + Uvicorn</td><td>8010</td></tr>
+        <tr><td>鏁版嵁搴�</td><td>SQLite锛堟枃浠跺瀷锛屾棤闇�鍗曠嫭閮ㄧ讲锛�</td><td>-</td></tr>
+      </table>
+    </div>
+
+    <h3>閮ㄧ讲鏋舵瀯</h3>
+    <div class="architecture">
+      <div class="arch-box">鐢ㄦ埛娴忚鍣�</div>
+      <div class="arch-arrow">鈫�</div>
+      <div class="arch-box">ECS 浜戞湇鍔″櫒</div>
+      <div style="margin-top:12px;">
+        <div class="arch-box" style="border-color:#67c23a;color:#67c23a;">鍓嶇 :5174</div>
+        <div class="arch-arrow">鈫�</div>
+        <div class="arch-box" style="border-color:#e6a23c;color:#e6a23a;">鍚庣 :8010</div>
+        <div class="arch-arrow">鈫�</div>
+        <div class="arch-box" style="border-color:#909399;color:#909399;">SQLite 鏂囦欢</div>
+      </div>
+    </div>
+
+    <h3>涓轰粈涔堥�� ECS锛�</h3>
+    <ul>
+      <li><strong>鏈�绠�鍗�</strong>锛氫竴鍙版湇鍔″櫒鎼炲畾鍏ㄩ儴锛岄�傚悎鏂版墜</li>
+      <li><strong>鎴愭湰浣�</strong>锛歋QLite 涓嶉渶瑕侀澶栦拱鏁版嵁搴�</li>
+      <li><strong>鐏垫椿</strong>锛氬悗缁彲浠ラ殢鏃跺崌绾ч厤缃�</li>
+    </ul>
+
+    <div class="tip">
+      鏈暀绋嬮�夋嫨 <strong>鍗庝负浜戝脊鎬т簯鏈嶅姟鍣� ECS + Ubuntu 22.04</strong> 鎿嶄綔绯荤粺锛岃繖鏄渶閫氱敤銆佹枃妗f渶澶氱殑缁勫悎銆�
+    </div>
+  </div>
+
+  <!-- 绗竴姝ワ細璐拱 ECS -->
+  <div class="section" id="step1">
+    <h2><span class="step-num">1</span> 璐拱鍗庝负浜� ECS 鏈嶅姟鍣�</h2>
+
+    <h3>1.1 娉ㄥ唽鍗庝负浜戣处鍙�</h3>
+    <p>璁块棶 <a href="https://www.huaweicloud.com/" target="_blank">鍗庝负浜戝畼缃�</a>锛岀偣鍑诲彸涓婅銆屾敞鍐屻�嶏紝鎸夌収鎻愮ず瀹屾垚娉ㄥ唽鍜屽疄鍚嶈璇併��</p>
+
+    <h3>1.2 璐拱 ECS</h3>
+    <ol>
+      <li>鐧诲綍鍚庯紝鍦ㄩ《閮ㄦ悳绱㈡杈撳叆銆屽脊鎬т簯鏈嶅姟鍣� ECS銆嶏紝鐐瑰嚮杩涘叆</li>
+      <li>鐐瑰嚮銆岃喘涔板脊鎬т簯鏈嶅姟鍣ㄣ��</li>
+      <li>鎸夌収浠ヤ笅閰嶇疆閫夋嫨锛�</li>
+    </ol>
+
+    <div class="table-wrapper">
+      <table>
+        <tr><th>閰嶇疆椤�</th><th>鎺ㄨ崘閫夋嫨</th><th>璇存槑</th></tr>
+        <tr><td>璁¤垂妯″紡</td><td>鎸夐渶璁¤垂 / 鍖呭勾鍖呮湀</td><td>鏂版墜鍏堢敤鎸夐渶璁¤垂璇曡瘯锛岀ǔ瀹氬悗杞寘鏈堟洿渚垮疁</td></tr>
+        <tr><td>鍖哄煙</td><td>閫夌浣犳渶杩戠殑锛堝锛氬寳浜洓銆佷笂娴蜂竴锛�</td><td>褰卞搷璁块棶閫熷害</td></tr>
+        <tr><td>CPU 鏋舵瀯</td><td>x86 璁$畻</td><td>鍏煎鎬ф渶濂�</td></tr>
+        <tr><td>瑙勬牸</td><td>閫氱敤璁$畻鍨� | s6.large.2锛�2鏍�4G锛�</td><td>馃挕 鏈�浣� 2鏍�2G 涔熻兘璺戯紝浣嗘帹鑽� 2鏍�4G 鏇存祦鐣�</td></tr>
+        <tr><td>闀滃儚</td><td>鍏叡闀滃儚 鈫� Ubuntu 鈫� Ubuntu 22.04 64bit</td><td>鏈暀绋嬪熀浜庢绯荤粺</td></tr>
+        <tr><td>绯荤粺鐩�</td><td>閫氱敤鍨� SSD锛�40GB</td><td>瓒冲鐢ㄤ簡</td></tr>
+        <tr><td>甯﹀</td><td>鎸夋祦閲忚璐癸紝5Mbit/s</td><td>灏忔祦閲忓満鏅渷閽�</td></tr>
+      </table>
+    </div>
+
+    <h3>1.3 璁剧疆鐧诲綍鍑瘉</h3>
+    <p>鍦ㄣ�岄珮绾ч厤缃�嶄腑璁剧疆鐧诲綍鏂瑰紡锛�</p>
+    <ul>
+      <li><strong>瀵嗙爜鏂瑰紡锛堟帹鑽愭柊鎵嬶級</strong>锛氳缃� root 鐢ㄦ埛瀵嗙爜锛岃鐗㈣锛�</li>
+      <li>瀵嗛挜瀵规柟寮忥細鏇村畨鍏紝浣嗛渶瑕佺敓鎴愬瘑閽ュ</li>
+    </ul>
+
+    <div class="warning">
+      璇峰姟蹇呰浣忎綘鐨勬湇鍔″櫒 <strong>鍏綉 IP 鍦板潃</strong> 鍜� <strong>root 瀵嗙爜</strong>锛屽悗闈細鍙嶅鐢ㄥ埌銆�
+    </div>
+
+    <p>纭閰嶇疆鏃犺鍚庯紝鐐瑰嚮銆岀珛鍗宠喘涔般�嶁啋 銆屽幓鏀粯銆嶏紝绛夊緟涓�涓ゅ垎閽熸湇鍔″櫒灏卞垱寤哄ソ浜嗐��</p>
+  </div>
+
+  <!-- 绗簩姝ワ細閰嶇疆瀹夊叏缁� -->
+  <div class="section" id="step2">
+    <h2><span class="step-num">2</span> 閰嶇疆瀹夊叏缁勶紙寮�鏀剧鍙o級</h2>
+
+    <p>鍗庝负浜戦粯璁ゅ彧寮�鏀句簡 22 绔彛锛圫SH 鐧诲綍鐢級锛屾垜浠渶瑕佹墜鍔ㄥ紑鏀鹃」鐩鐢ㄧ殑绔彛銆�</p>
+
+    <h3>2.1 杩涘叆瀹夊叏缁勯厤缃�</h3>
+    <ol>
+      <li>鍦� ECS 鎺у埗鍙帮紝鎵惧埌浣犵殑鏈嶅姟鍣紝鐐瑰嚮鏈嶅姟鍣ㄥ悕绉拌繘鍏ヨ鎯�</li>
+      <li>鎵惧埌銆屽畨鍏ㄧ粍銆嶆爣绛鹃〉</li>
+      <li>鐐瑰嚮瀹夊叏缁勫悕绉帮紙濡� default锛夎繘鍏ラ厤缃�</li>
+    </ol>
+
+    <h3>2.2 娣诲姞鍏ユ柟鍚戣鍒�</h3>
+    <p>鐐瑰嚮銆屾坊鍔犺鍒欍�嶏紝渚濇娣诲姞浠ヤ笅瑙勫垯锛�</p>
+
+    <div class="table-wrapper">
+      <table>
+        <tr><th>浼樺厛绾�</th><th>绛栫暐</th><th>鍗忚绔彛</th><th>绫诲瀷</th><th>婧愬湴鍧�</th><th>璇存槑</th></tr>
+        <tr><td>1</td><td>鍏佽</td><td>TCP:22</td><td>IPv4</td><td>0.0.0.0/0</td><td>SSH 杩滅▼鐧诲綍</td></tr>
+        <tr><td>1</td><td>鍏佽</td><td>TCP:5174</td><td>IPv4</td><td>0.0.0.0/0</td><td>鍓嶇璁块棶绔彛</td></tr>
+        <tr><td>1</td><td>鍏佽</td><td>TCP:8010</td><td>IPv4</td><td>0.0.0.0/0</td><td>鍚庣 API 绔彛</td></tr>
+        <tr><td>1</td><td>鍏佽</td><td>TCP:80</td><td>IPv4</td><td>0.0.0.0/0</td><td>HTTP锛堝悗闈㈢粦鍩熷悕鐢級</td></tr>
+        <tr><td>1</td><td>鍏佽</td><td>TCP:443</td><td>IPv4</td><td>0.0.0.0/0</td><td>HTTPS锛堝悗闈㈢粦鍩熷悕鐢級</td></tr>
+      </table>
+    </div>
+
+    <div class="tip">
+      婧愬湴鍧�濉� <span class="highlight">0.0.0.0/0</span> 琛ㄧず鍏佽鎵�鏈� IP 璁块棶銆傚鏋滃彧鏈変綘鑷繁鐢紝鍙互濉綘鐢佃剳鐨勫叕缃� IP锛屾洿瀹夊叏銆�
+    </div>
+  </div>
+
+  <!-- 绗笁姝ワ細鐧诲綍鏈嶅姟鍣� -->
+  <div class="section" id="step3">
+    <h2><span class="step-num">3</span> 杩滅▼鐧诲綍鏈嶅姟鍣�</h2>
+
+    <h3>Windows 鐢ㄦ埛锛氫娇鐢� PowerShell</h3>
+    <p>鎸変笅 <kbd>Win</kbd> + <kbd>X</kbd>锛岄�夋嫨銆學indows PowerShell銆嶆垨銆岀粓绔�嶏紝杈撳叆锛�</p>
+    <div class="code-block">
+<span class="cmd">ssh</span> root@浣犵殑鏈嶅姟鍣ㄥ叕缃慖P
+<span class="comment"># 渚嬪锛歴sh root@123.45.67.89</span>
+    </div>
+    <p>绗竴娆¤繛鎺ヤ細鎻愮ず銆屾槸鍚︾户缁繛鎺ャ�嶏紝杈撳叆 <span class="highlight">yes</span> 鍥炶溅锛岀劧鍚庤緭鍏ュ瘑鐮侊紙瀵嗙爜涓嶄細鏄剧ず锛岃緭瀹岀洿鎺ュ洖杞︼級銆�</p>
+
+    <h3>Mac 鐢ㄦ埛锛氫娇鐢ㄧ粓绔�</h3>
+    <p>鎵撳紑銆岀粓绔�岮pp锛屽悓鏍疯緭鍏ワ細</p>
+    <div class="code-block"><span class="cmd">ssh</span> root@浣犵殑鏈嶅姟鍣ㄥ叕缃慖P</div>
+
+    <div class="success">
+      鐧诲綍鎴愬姛鍚庯紝浣犱細鐪嬪埌绫讳技 <span class="highlight">root@ecs-xxx:~#</span> 鐨勬彁绀虹锛岃鏄庡凡缁忚繘鍏ユ湇鍔″櫒浜嗭紒
+    </div>
+
+    <div class="tip">
+      涔熷彲浠ヤ娇鐢ㄥ崕涓轰簯鎺у埗鍙扮殑銆岃繙绋嬬櫥褰曘�嶅姛鑳斤紙VNC锛夛紝鍦� ECS 璇︽儏椤电偣鍑汇�岃繙绋嬬櫥褰曘�嶆寜閽嵆鍙��
+    </div>
+  </div>
+
+  <!-- 绗洓姝ワ細瀹夎鐜 -->
+  <div class="section" id="step4">
+    <h2><span class="step-num">4</span> 瀹夎杩愯鐜</h2>
+
+    <p>鐧诲綍鏈嶅姟鍣ㄥ悗锛屼緷娆℃墽琛屼互涓嬪懡浠ゃ�傛瘡杈撳畬涓�琛屾寜鍥炶溅鎵ц锛岀瓑寰呭畬鎴愬啀缁х画銆�</p>
+
+    <h3>4.1 鏇存柊绯荤粺鍖�</h3>
+    <div class="code-block">
+<span class="cmd">apt</span> update && <span class="cmd">apt</span> upgrade -y
+    </div>
+    <p>杩欎竴姝ュ彲鑳介渶瑕佸嚑鍒嗛挓锛岃�愬績绛夊緟銆�</p>
+
+    <h3>4.2 瀹夎 Python 3 鍜� pip</h3>
+    <div class="code-block">
+<span class="cmd">apt</span> install -y python3 python3-venv python3-pip git
+    </div>
+    <p>楠岃瘉瀹夎锛�</p>
+    <div class="code-block">
+<span class="cmd">python3</span> --version
+<span class="comment"># 杈撳嚭绫讳技 Python 3.10.x 灏卞浜�</span>
+    </div>
+
+    <h3>4.3 瀹夎 Node.js</h3>
+    <p>鍓嶇鏋勫缓闇�瑕� Node.js锛屾垜浠畨瑁� LTS 鐗堟湰锛�</p>
+    <div class="code-block">
+<span class="comment"># 涓嬭浇 Node.js 瀹夎鑴氭湰</span>
+<span class="cmd">curl</span> -fsSL https://deb.nodesource.com/setup_20.x | bash -
+
+<span class="comment"># 瀹夎 Node.js</span>
+<span class="cmd">apt</span> install -y nodejs
+
+<span class="comment"># 楠岃瘉瀹夎</span>
+<span class="cmd">node</span> --version
+<span class="cmd">npm</span> --version
+<span class="comment"># 杈撳嚭 v20.x.x 鍜� 10.x.x 灏卞浜�</span>
+    </div>
+
+    <div class="success">
+      鐜瀹夎瀹屾垚锛佺幇鍦ㄦ湁浜� Python銆丯ode.js 鍜� Git锛屽彲浠ラ儴缃查」鐩簡銆�
+    </div>
+  </div>
+
+  <!-- 绗簲姝ワ細涓婁紶浠g爜 -->
+  <div class="section" id="step5">
+    <h2><span class="step-num">5</span> 涓婁紶椤圭洰浠g爜鍒版湇鍔″櫒</h2>
+
+    <p>鏈変袱绉嶆柟寮忎笂浼犱唬鐮侊紝閫夋嫨浣犳柟渚跨殑涓�绉嶏細</p>
+
+    <h3>鏂瑰紡涓�锛欸it 鍏嬮殕锛堟帹鑽愶紝濡傛灉浠g爜鍦� Git 浠撳簱锛�</h3>
+    <p>濡傛灉浣犵殑浠g爜宸茬粡鎺ㄩ�佸埌 Gitee / GitHub / GitLab 绛夊钩鍙帮細</p>
+    <div class="code-block">
+<span class="cmd">cd</span> /opt
+<span class="cmd">git</span> clone 浣犵殑浠撳簱鍦板潃 score-query
+<span class="comment"># 渚嬪锛歡it clone https://gitee.com/浣犵殑鐢ㄦ埛鍚�/score-query.git</span>
+
+<span class="cmd">cd</span> score-query
+<span class="cmd">ls</span>
+<span class="comment"># 搴旇鑳界湅鍒� backend銆乫rontend銆乻cripts 绛夌洰褰�</span>
+    </div>
+
+    <h3>鏂瑰紡浜岋細鏈湴涓婁紶锛堥�傚悎浠g爜鍦ㄦ湰鍦扮數鑴戯級</h3>
+    <p><strong>Windows 鐢ㄦ埛锛�</strong>涓嬭浇 <a href="https://winscp.net/" target="_blank">WinSCP</a> 鎴栦娇鐢� <a href="https://www.putty.org/" target="_blank">PuTTY</a> 鐨� pscp</p>
+    <p><strong>Mac 鐢ㄦ埛锛�</strong>鍦ㄦ湰鍦扮粓绔墽琛岋細</p>
+    <div class="code-block">
+<span class="cmd">scp</span> -r /鏈湴椤圭洰璺緞 root@浣犵殑鏈嶅姟鍣↖P:/opt/score-query
+    </div>
+
+    <div class="tip">
+      濡傛灉浣犵敤鐨勬槸 VS Code锛屽彲浠ュ畨瑁呫�孯emote - SSH銆嶆彃浠讹紝鐩存帴鍦� VS Code 閲岀紪杈戞湇鍔″櫒涓婄殑鏂囦欢锛岄潪甯告柟渚匡紒
+    </div>
+  </div>
+
+  <!-- 绗叚姝ワ細瀹夎渚濊禆 -->
+  <div class="section" id="step6">
+    <h2><span class="step-num">6</span> 瀹夎椤圭洰渚濊禆</h2>
+
+    <p>鍋囪椤圭洰鍦� <span class="highlight">/opt/score-query</span> 鐩綍涓嬶細</p>
+
+    <h3>6.1 瀹夎鍚庣 Python 渚濊禆</h3>
+    <div class="code-block">
+<span class="cmd">cd</span> /opt/score-query/backend
+
+<span class="comment"># 鍒涘缓铏氭嫙鐜锛堟帹鑽愶紝闅旂渚濊禆锛�</span>
+<span class="cmd">python3</span> -m venv .venv
+
+<span class="comment"># 婵�娲昏櫄鎷熺幆澧冨苟瀹夎渚濊禆</span>
+<span class="cmd">source</span> .venv/bin/activate
+<span class="cmd">pip</span> install -r requirements.txt
+
+<span class="comment"># 绛夊緟瀹夎瀹屾垚锛岄獙璇佷竴涓�</span>
+<span class="cmd">python</span> -c "import fastapi; print('FastAPI 鐗堟湰:', fastapi.__version__)"
+    </div>
+
+    <h3>6.2 瀹夎鍓嶇 Node.js 渚濊禆</h3>
+    <div class="code-block">
+<span class="cmd">cd</span> /opt/score-query/frontend
+
+<span class="comment"># 瀹夎渚濊禆锛屽彲鑳介渶瑕佸嚑鍒嗛挓</span>
+<span class="cmd">npm</span> install
+
+<span class="comment"># 楠岃瘉</span>
+<span class="cmd">npm</span> run build
+<span class="comment"># 濡傛灉鑳芥垚鍔熸瀯寤哄嚭 dist 鐩綍灏辫鏄庢病闂</span>
+    </div>
+
+    <div class="warning">
+      濡傛灉 <span class="highlight">npm install</span> 寰堟參锛屽彲浠ュ垏鎹㈠埌鍥藉唴闀滃儚锛�<br>
+      <span class="highlight">npm config set registry https://registry.npmmirror.com</span>
+    </div>
+  </div>
+
+  <!-- 绗竷姝ワ細鍒濆鍖� -->
+  <div class="section" id="step7">
+    <h2><span class="step-num">7</span> 鍒濆鍖栨暟鎹簱涓庣鐞嗗憳</h2>
+
+    <h3>7.1 鍒涘缓鏁版嵁鐩綍</h3>
+    <div class="code-block">
+<span class="cmd">cd</span> /opt/score-query/backend
+<span class="cmd">mkdir</span> -p data uploads
+    </div>
+
+    <h3>7.2 鍒濆鍖栫鐞嗗憳璐﹀彿</h3>
+    <div class="code-block">
+<span class="cmd">cd</span> /opt/score-query/backend
+<span class="cmd">source</span> .venv/bin/activate
+<span class="cmd">python</span> scripts/seed_admin.py
+    </div>
+
+    <div class="success">
+      榛樿璐﹀彿锛�<br>
+      绠$悊鍛橈細<span class="highlight">admin</span> / 瀵嗙爜锛�<span class="highlight">admin123</span><br>
+      闃呭嵎鍛橈細<span class="highlight">grader</span> / 瀵嗙爜锛�<span class="highlight">grader123</span><br>
+      <strong>涓婄嚎鍚庤鍔″繀淇敼榛樿瀵嗙爜锛�</strong>
+    </div>
+  </div>
+
+  <!-- 绗叓姝ワ細鍚姩鏈嶅姟 -->
+  <div class="section" id="step8">
+    <h2><span class="step-num">8</span> 鍚姩鏈嶅姟骞堕獙璇�</h2>
+
+    <h3>8.1 浣跨敤椤圭洰鑷甫鑴氭湰鍚姩</h3>
+    <p>椤圭洰宸茬粡鎻愪緵浜嗘柟渚跨殑鍚姩鑴氭湰锛�</p>
+    <div class="code-block">
+<span class="cmd">cd</span> /opt/score-query
+
+<span class="comment"># 缁欒剼鏈坊鍔犳墽琛屾潈闄愶紙棣栨闇�瑕侊級</span>
+<span class="cmd">chmod</span> +x scripts/*.sh
+
+<span class="comment"># 鍚姩鍏ㄩ儴鏈嶅姟锛堢敓浜фā寮忥級</span>
+./scripts/start.sh
+    </div>
+
+    <p>鍚姩鎴愬姛鍚庯紝浣犱細鐪嬪埌绫讳技杈撳嚭锛�</p>
+    <div class="code-block">
+鍚庣宸插惎鍔� 鈫� http://127.0.0.1:8010
+鍓嶇鐢熶骇 鈫� http://0.0.0.0:5174
+    </div>
+
+    <h3>8.2 楠岃瘉鏈嶅姟鏄惁姝e父</h3>
+    <p>妫�鏌ヨ繘绋嬫槸鍚﹀湪杩愯锛�</p>
+    <div class="code-block">
+./scripts/status.sh
+<span class="comment"># 鎴�</span>
+<span class="cmd">ps</span> aux | grep uvicorn
+<span class="cmd">ps</span> aux | grep vite
+    </div>
+
+    <p>妫�鏌ョ鍙f槸鍚︾洃鍚細</p>
+    <div class="code-block">
+<span class="cmd">ss</span> -tlnp | grep -E '5174|8010'
+    </div>
+
+    <h3>8.3 鍦ㄦ祻瑙堝櫒璁块棶</h3>
+    <p>鎵撳紑娴忚鍣紝璁块棶锛�</p>
+    <div class="code-block">
+http://浣犵殑鏈嶅姟鍣ㄥ叕缃慖P:5174
+    </div>
+
+    <div class="success">
+      濡傛灉鑳界湅鍒扮櫥褰曢〉闈紝杈撳叆 <span class="highlight">admin / admin123</span> 鑳芥垚鍔熺櫥褰曪紝閭d箞鎭枩浣狅紝閮ㄧ讲鎴愬姛浜嗭紒馃帀
+    </div>
+
+    <h3>8.4 甯哥敤鍛戒护</h3>
+    <div class="table-wrapper">
+      <table>
+        <tr><th>鍛戒护</th><th>浣滅敤</th></tr>
+        <tr><td><span class="highlight">./scripts/start.sh</span></td><td>鍚姩鍏ㄩ儴鏈嶅姟锛堢敓浜фā寮忥級</td></tr>
+        <tr><td><span class="highlight">./scripts/stop.sh</span></td><td>鍋滄鍏ㄩ儴鏈嶅姟</td></tr>
+        <tr><td><span class="highlight">./scripts/restart.sh</span></td><td>閲嶅惎鍏ㄩ儴鏈嶅姟</td></tr>
+        <tr><td><span class="highlight">./scripts/status.sh</span></td><td>鏌ョ湅鏈嶅姟鐘舵��</td></tr>
+        <tr><td><span class="highlight">./scripts/build-frontend.sh</span></td><td>閲嶆柊鏋勫缓鍓嶇</td></tr>
+      </table>
+    </div>
+
+    <h3>8.5 鏌ョ湅鏃ュ織</h3>
+    <div class="code-block">
+<span class="comment"># 鍚庣鏃ュ織</span>
+<span class="cmd">tail</span> -f logs/backend.log
+
+<span class="comment"># 鍓嶇鏃ュ織</span>
+<span class="cmd">tail</span> -f logs/frontend.log
+    </div>
+    <p>鎸� <kbd>Ctrl</kbd> + <kbd>C</kbd> 閫�鍑烘棩蹇楁煡鐪嬨��</p>
+  </div>
+
+  <!-- 绗節姝ワ細寮�鏈鸿嚜鍚� -->
+  <div class="section" id="step9">
+    <h2><span class="step-num">9</span> 閰嶇疆寮�鏈鸿嚜鍚紙寮虹儓鎺ㄨ崘锛�</h2>
+
+    <p>鍓嶉潰鐨勬柟寮忓惎鍔ㄥ悗锛屽鏋滄湇鍔″櫒閲嶅惎锛屾湇鍔′笉浼氳嚜鍔ㄦ仮澶嶃�傛垜浠厤缃� systemd 鏈嶅姟鏉ュ疄鐜板紑鏈鸿嚜鍚��</p>
+
+    <h3>9.1 鍒涘缓鍚庣鏈嶅姟</h3>
+    <div class="code-block">
+<span class="cmd">cat</span> > /etc/systemd/system/score-backend.service << 'EOF'
+[Unit]
+Description=Score Query Backend (FastAPI)
+After=network.target
+
+[Service]
+Type=simple
+User=root
+WorkingDirectory=/opt/score-query/backend
+ExecStart=/opt/score-query/backend/.venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8010
+Restart=always
+RestartSec=5
+Environment=PYTHONUNBUFFERED=1
+
+[Install]
+WantedBy=multi-user.target
+EOF
+    </div>
+
+    <h3>9.2 鍒涘缓鍓嶇鏈嶅姟</h3>
+    <div class="code-block">
+<span class="cmd">cat</span> > /etc/systemd/system/score-frontend.service << 'EOF'
+[Unit]
+Description=Score Query Frontend (Vite Preview)
+After=network.target
+
+[Service]
+Type=simple
+User=root
+WorkingDirectory=/opt/score-query/frontend
+ExecStart=/usr/bin/npm run preview
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
+EOF
+    </div>
+
+    <h3>9.3 鍚敤骞跺惎鍔ㄦ湇鍔�</h3>
+    <div class="code-block">
+<span class="comment"># 鍏堝仠姝箣鍓嶇殑鑴氭湰鍚姩鐨勬湇鍔�</span>
+<span class="cmd">cd</span> /opt/score-query && ./scripts/stop.sh
+
+<span class="comment"># 閲嶆柊鍔犺浇 systemd 閰嶇疆</span>
+<span class="cmd">systemctl</span> daemon-reload
+
+<span class="comment"># 璁剧疆寮�鏈鸿嚜鍚�</span>
+<span class="cmd">systemctl</span> enable score-backend score-frontend
+
+<span class="comment"># 鍚姩鏈嶅姟</span>
+<span class="cmd">systemctl</span> start score-backend score-frontend
+
+<span class="comment"># 鏌ョ湅鐘舵��</span>
+<span class="cmd">systemctl</span> status score-backend
+<span class="cmd">systemctl</span> status score-frontend
+    </div>
+
+    <div class="success">
+      鐪嬪埌 <span class="highlight">active (running)</span> 灏辫鏄庨厤缃垚鍔熶簡锛佹湇鍔″櫒閲嶅惎鍚庢湇鍔′細鑷姩鍚姩銆�
+    </div>
+
+    <h3>9.4 systemd 甯哥敤鍛戒护</h3>
+    <div class="table-wrapper">
+      <table>
+        <tr><th>鍛戒护</th><th>浣滅敤</th></tr>
+        <tr><td>systemctl start 鏈嶅姟鍚�</td><td>鍚姩鏈嶅姟</td></tr>
+        <tr><td>systemctl stop 鏈嶅姟鍚�</td><td>鍋滄鏈嶅姟</td></tr>
+        <tr><td>systemctl restart 鏈嶅姟鍚�</td><td>閲嶅惎鏈嶅姟</td></tr>
+        <tr><td>systemctl status 鏈嶅姟鍚�</td><td>鏌ョ湅鏈嶅姟鐘舵��</td></tr>
+        <tr><td>journalctl -u 鏈嶅姟鍚� -f</td><td>鏌ョ湅鏈嶅姟鏃ュ織</td></tr>
+      </table>
+    </div>
+  </div>
+
+  <!-- 绗崄姝ワ細缁戝畾鍩熷悕 -->
+  <div class="section" id="step10">
+    <h2><span class="step-num">10</span> 缁戝畾鍩熷悕锛堝彲閫夎繘闃讹級</h2>
+
+    <p>鐢� IP 璁块棶涓嶅お鏂逛究锛屼篃涓嶄笓涓氥�傛垜浠彲浠ョ粦瀹氫竴涓煙鍚嶃��</p>
+
+    <h3>10.1 璐拱鍩熷悕</h3>
+    <p>鍦ㄥ崕涓轰簯銆屽煙鍚嶆敞鍐屻�嶆湇鍔¤喘涔颁竴涓煙鍚嶏紝渚嬪 <span class="highlight">yourdomain.com</span>銆�</p>
+
+    <h3>10.2 閰嶇疆 DNS 瑙f瀽</h3>
+    <ol>
+      <li>杩涘叆銆屼簯瑙f瀽鏈嶅姟 DNS銆�</li>
+      <li>鎵惧埌浣犵殑鍩熷悕锛岀偣鍑汇�岃В鏋愩��</li>
+      <li>娣诲姞璁板綍锛�</li>
+    </ol>
+    <div class="table-wrapper">
+      <table>
+        <tr><th>涓绘満璁板綍</th><th>绫诲瀷</th><th>鍊�</th></tr>
+        <tr><td>grader锛堟垨 www锛�</td><td>A</td><td>浣犵殑鏈嶅姟鍣ㄥ叕缃慖P</td></tr>
+      </table>
+    </div>
+    <p>绛夊緟鍑犲垎閽熻В鏋愮敓鏁堛��</p>
+
+    <h3>10.3 淇敼 CORS 閰嶇疆</h3>
+    <p>鍥犱负椤圭洰鏈� CORS 璺ㄥ煙闄愬埗锛岄渶瑕佹妸浣犵殑鍩熷悕鍔犲埌鍏佽鍒楄〃涓�傚垱寤虹幆澧冨彉閲忛厤缃細</p>
+    <div class="code-block">
+<span class="cmd">cat</span> > /opt/score-query/.env << 'EOF'
+CORS_ORIGINS="http://grader.yourdomain.com,https://grader.yourdomain.com,http://localhost:5174"
+JWT_SECRET="杩欓噷鏀规垚涓�涓殢鏈虹殑闀垮瓧绗︿覆锛屾瘮濡� mashuang123456!@#"
+EOF
+    </div>
+
+    <p>鐒跺悗淇敼 systemd 鏈嶅姟鍔犺浇杩欎釜鐜鍙橀噺锛�</p>
+    <div class="code-block">
+<span class="cmd">sed</span> -i '/ExecStart/i EnvironmentFile=/opt/score-query/.env' /etc/systemd/system/score-backend.service
+<span class="cmd">systemctl</span> daemon-reload
+<span class="cmd">systemctl</span> restart score-backend
+    </div>
+
+    <h3>10.4 淇敼鍓嶇 vite 閰嶇疆涓殑 allowedHosts</h3>
+    <p>缂栬緫 <span class="highlight">/opt/score-query/frontend/vite.config.ts</span>锛屾妸浣犵殑鍩熷悕鍔犲埌 <span class="highlight">allowedHosts</span> 鏁扮粍涓紝鐒跺悗閲嶆柊鏋勫缓锛�</p>
+    <div class="code-block">
+<span class="cmd">cd</span> /opt/score-query/frontend
+<span class="cmd">npm</span> run build
+<span class="cmd">systemctl</span> restart score-frontend
+    </div>
+
+    <h3>10.5 閰嶇疆 Nginx 鍙嶅悜浠g悊锛堟帹鑽愶級</h3>
+    <p>鐢� Nginx 鍋氬弽鍚戜唬鐞嗭紝鍙互鐩存帴鐢� 80 绔彛璁块棶锛屼笉闇�瑕佸姞绔彛鍙凤細</p>
+
+    <div class="code-block">
+<span class="comment"># 瀹夎 Nginx</span>
+<span class="cmd">apt</span> install -y nginx
+
+<span class="comment"># 鍒涘缓閰嶇疆鏂囦欢</span>
+<span class="cmd">cat</span> > /etc/nginx/sites-available/score-query << 'EOF'
+server {
+    listen 80;
+    server_name grader.yourdomain.com;
+
+    # 鍓嶇闈欐�佹枃浠讹紙涔熷彲浠ョ户缁敤 vite preview锛岃繖閲屾紨绀虹洿鎺ョ敱 Nginx 鎵樼锛�
+    location / {
+        proxy_pass http://127.0.0.1:5174;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+    }
+}
+EOF
+
+<span class="comment"># 鍚敤绔欑偣</span>
+<span class="cmd">ln</span> -s /etc/nginx/sites-available/score-query /etc/nginx/sites-enabled/
+<span class="cmd">rm</span> /etc/nginx/sites-enabled/default
+
+<span class="comment"># 娴嬭瘯閰嶇疆</span>
+<span class="cmd">nginx</span> -t
+
+<span class="comment"># 閲嶈浇 Nginx</span>
+<span class="cmd">systemctl</span> reload nginx
+    </div>
+
+    <p>鐜板湪灏卞彲浠ョ敤 <span class="highlight">http://grader.yourdomain.com</span> 鐩存帴璁块棶浜嗭紒</p>
+
+    <div class="tip">
+      濡傛灉闇�瑕� HTTPS锛屽彲浠ョ敤 Let's Encrypt 鍏嶈垂璇佷功锛屽畨瑁� certbot 鍚庢墽琛岋細<br>
+      <span class="highlight">apt install -y certbot python3-certbot-nginx && certbot --nginx</span>
+    </div>
+  </div>
+
+  <!-- FAQ -->
+  <div class="section" id="faq">
+    <h2><span class="step-num">鉂�</span> 甯歌闂 FAQ</h2>
+
+    <div class="faq-item">
+      <div class="faq-q">Q1: 娴忚鍣ㄨ闂笉浜嗘�庝箞鍔烇紵</div>
+      <div class="faq-a">
+        <p>鎸変互涓嬮『搴忔帓鏌ワ細</p>
+        <ol>
+          <li>纭瀹夊叏缁勬槸鍚﹀紑鏀句簡 5174 绔彛</li>
+          <li>纭鏈嶅姟鏄惁鍦ㄨ繍琛岋細<span class="highlight">systemctl status score-backend score-frontend</span></li>
+          <li>鍦ㄦ湇鍔″櫒鏈湴娴嬭瘯锛�<span class="highlight">curl http://127.0.0.1:5174</span>锛岃兘杩斿洖 HTML 璇存槑鏈嶅姟姝e父</li>
+          <li>濡傛灉鏈湴閫氥�佸缃戜笉閫氾紝鍩烘湰鏄畨鍏ㄧ粍鎴栭槻鐏鐨勯棶棰�</li>
+          <li>妫�鏌ョ郴缁熼槻鐏锛�<span class="highlight">ufw status</span>锛屽鏋滃紑浜嗗氨 <span class="highlight">ufw allow 5174</span></li>
+        </ol>
+      </div>
+    </div>
+
+    <div class="faq-item">
+      <div class="faq-q">Q2: 鍓嶇椤甸潰鎵撳紑浜嗭紝浣嗙櫥褰�/鎺ュ彛鎶ラ敊锛�</div>
+      <div class="faq-a">
+        <p>澶ф鐜囨槸鍚庣娌″惎鍔ㄦ垨璺ㄥ煙閰嶇疆闂锛�</p>
+        <ol>
+          <li>纭鍚庣鍦ㄨ繍琛岋細<span class="highlight">systemctl status score-backend</span></li>
+          <li>鏈湴娴嬭瘯鍚庣锛�<span class="highlight">curl http://127.0.0.1:8010/docs</span>锛岃兘鐪嬪埌 Swagger 鏂囨。璇存槑姝e父</li>
+          <li>濡傛灉鏄法鍩熼敊璇紙娴忚鍣� F12 鎺у埗鍙版湁 CORS 瀛楁牱锛夛紝妫�鏌� CORS_ORIGINS 閰嶇疆鏄惁鍖呭惈浣犵殑璁块棶鍦板潃</li>
+        </ol>
+      </div>
+    </div>
+
+    <div class="faq-item">
+      <div class="faq-q">Q3: SQLite 鏁版嵁搴撴枃浠跺湪鍝紵鎬庝箞澶囦唤锛�</div>
+      <div class="faq-a">
+        <p>鏁版嵁搴撴枃浠跺湪 <span class="highlight">/opt/score-query/backend/data/app.db</span>锛岀洿鎺ュ鍒惰繖涓枃浠跺氨鏄浠姐�傚缓璁畾鏈熷浠斤細</p>
+        <div class="code-block"><span class="cmd">cp</span> /opt/score-query/backend/data/app.db /opt/score-query/backend/data/app.db.bak.$(date +%Y%m%d)</div>
+      </div>
+    </div>
+
+    <div class="faq-item">
+      <div class="faq-q">Q4: 淇敼浜嗕唬鐮佹�庝箞鏇存柊锛�</div>
+      <div class="faq-a">
+        <p>鍒嗕袱绉嶆儏鍐碉細</p>
+        <ul>
+          <li><strong>鏀逛簡鍓嶇浠g爜锛�</strong>閲嶆柊鏋勫缓 鈫� 閲嶅惎鍓嶇
+            <div class="code-block"><span class="cmd">cd</span> /opt/score-query/frontend && npm run build && systemctl restart score-frontend</div>
+          </li>
+          <li><strong>鏀逛簡鍚庣浠g爜锛�</strong>鐩存帴閲嶅惎鍚庣
+            <div class="code-block"><span class="cmd">systemctl</span> restart score-backend</div>
+          </li>
+        </ul>
+      </div>
+    </div>
+
+    <div class="faq-item">
+      <div class="faq-q">Q5: 鏈嶅姟鍣ㄥお鍗′簡鎬庝箞鍔烇紵</div>
+      <div class="faq-a">
+        <p>鍙互鍦ㄥ崕涓轰簯鎺у埗鍙般�屽彉鏇磋鏍笺�嶅崌绾ч厤缃�備篃鍙互浼樺寲锛�</p>
+        <ul>
+          <li>鐢� Nginx 鐩存帴鎵樼鍓嶇闈欐�佹枃浠讹紝鍏虫帀 vite preview锛堣妭鐪佸唴瀛橈級</li>
+          <li>寮�鍚� gzip 鍘嬬缉</li>
+          <li>濡傛灉鏁版嵁閲忓ぇ锛屽彲浠ヨ�冭檻鎶� SQLite 鎹㈡垚 MySQL</li>
+        </ul>
+      </div>
+    </div>
+
+    <div class="faq-item">
+      <div class="faq-q">Q6: 蹇樿绠$悊鍛樺瘑鐮佹�庝箞鍔烇紵</div>
+      <div class="faq-a">
+        <p>閲嶆柊杩愯 seed_admin.py 鑴氭湰浼氶噸缃粯璁よ处鍙峰瘑鐮侊細</p>
+        <div class="code-block">
+<span class="cmd">cd</span> /opt/score-query/backend
+<span class="cmd">source</span> .venv/bin/activate
+<span class="cmd">python</span> scripts/seed_admin.py
+        </div>
+      </div>
+    </div>
+
+    <div class="faq-item">
+      <div class="faq-q">Q7: 鐢ㄨ剼鏈惎鍔ㄨ繕鏄� systemd 鍚姩锛�</div>
+      <div class="faq-a">
+        <p>鎺ㄨ崘鐢� <strong>systemd</strong>锛屽洜涓猴細</p>
+        <ul>
+          <li>寮�鏈鸿嚜鍔ㄥ惎鍔紝鏈嶅姟鍣ㄩ噸鍚笉鎬�</li>
+          <li>杩涚▼宕╂簝鑷姩閲嶅惎</li>
+          <li>缁熶竴鐨勬棩蹇楃鐞嗭紙journalctl锛�</li>
+          <li>鏇翠笓涓氥�佹洿绋冲畾</li>
+        </ul>
+        <p>鑴氭湰鏂瑰紡閫傚悎涓存椂璋冭瘯浣跨敤銆�</p>
+      </div>
+    </div>
+  </div>
+
+  <div class="footer">
+    <p>馃摎 鑰冭瘯闃呭嵎绯荤粺鍗庝负浜戦儴缃叉暀绋� | 绁濅綘閮ㄧ讲椤哄埄锛侌煄�</p>
+  </div>
+</div>
+</body>
+</html>

--
Gitblit v1.8.0