shipfe 1.1.1 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/bin/shipfe +0 -0
  2. package/package.json +5 -1
  3. package/.github/workflows/deploy.yml +0 -46
  4. package/.github/workflows/release.yml +0 -51
  5. package/.vscode/settings.json +0 -5
  6. package/README_CN.md +0 -41
  7. package/docs/.vitepress/cache/deps/@theme_index.js +0 -275
  8. package/docs/.vitepress/cache/deps/@theme_index.js.map +0 -7
  9. package/docs/.vitepress/cache/deps/_metadata.json +0 -40
  10. package/docs/.vitepress/cache/deps/chunk-BRNHR3LR.js +0 -9719
  11. package/docs/.vitepress/cache/deps/chunk-BRNHR3LR.js.map +0 -7
  12. package/docs/.vitepress/cache/deps/chunk-H6MPEGKE.js +0 -12877
  13. package/docs/.vitepress/cache/deps/chunk-H6MPEGKE.js.map +0 -7
  14. package/docs/.vitepress/cache/deps/package.json +0 -3
  15. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4505
  16. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  17. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -583
  18. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  19. package/docs/.vitepress/cache/deps/vue.js +0 -347
  20. package/docs/.vitepress/cache/deps/vue.js.map +0 -7
  21. package/docs/.vitepress/config.ts +0 -120
  22. package/docs/.vitepress/dist/404.html +0 -22
  23. package/docs/.vitepress/dist/assets/app.DZUgfPE2.js +0 -1
  24. package/docs/.vitepress/dist/assets/chunks/framework.BeaujayP.js +0 -19
  25. package/docs/.vitepress/dist/assets/chunks/theme.CNyaCki0.js +0 -1
  26. package/docs/.vitepress/dist/assets/commands_deploy.md.cybIRa1n.js +0 -17
  27. package/docs/.vitepress/dist/assets/commands_deploy.md.cybIRa1n.lean.js +0 -1
  28. package/docs/.vitepress/dist/assets/commands_init.md.Da652so5.js +0 -2
  29. package/docs/.vitepress/dist/assets/commands_init.md.Da652so5.lean.js +0 -1
  30. package/docs/.vitepress/dist/assets/commands_rollback.md.C0zKmFtz.js +0 -7
  31. package/docs/.vitepress/dist/assets/commands_rollback.md.C0zKmFtz.lean.js +0 -1
  32. package/docs/.vitepress/dist/assets/config_auth.md.hvDhtWY8.js +0 -56
  33. package/docs/.vitepress/dist/assets/config_auth.md.hvDhtWY8.lean.js +0 -1
  34. package/docs/.vitepress/dist/assets/config_overview.md.DAQclMJL.js +0 -34
  35. package/docs/.vitepress/dist/assets/config_overview.md.DAQclMJL.lean.js +0 -1
  36. package/docs/.vitepress/dist/assets/config_schema.md.Bv5TuD6E.js +0 -1
  37. package/docs/.vitepress/dist/assets/config_schema.md.Bv5TuD6E.lean.js +0 -1
  38. package/docs/.vitepress/dist/assets/config_sub-env.md.DSUt0Nyq.js +0 -26
  39. package/docs/.vitepress/dist/assets/config_sub-env.md.DSUt0Nyq.lean.js +0 -1
  40. package/docs/.vitepress/dist/assets/features_atomic.md.Cszqfb8O.js +0 -22
  41. package/docs/.vitepress/dist/assets/features_atomic.md.Cszqfb8O.lean.js +0 -1
  42. package/docs/.vitepress/dist/assets/features_cleanup.md.D1j3LEm1.js +0 -20
  43. package/docs/.vitepress/dist/assets/features_cleanup.md.D1j3LEm1.lean.js +0 -1
  44. package/docs/.vitepress/dist/assets/features_shared-assets.md.ChpQD81r.js +0 -26
  45. package/docs/.vitepress/dist/assets/features_shared-assets.md.ChpQD81r.lean.js +0 -1
  46. package/docs/.vitepress/dist/assets/features_snapshot.md.Bddk9nNL.js +0 -24
  47. package/docs/.vitepress/dist/assets/features_snapshot.md.Bddk9nNL.lean.js +0 -1
  48. package/docs/.vitepress/dist/assets/index.md.DqmDY2QI.js +0 -1
  49. package/docs/.vitepress/dist/assets/index.md.DqmDY2QI.lean.js +0 -1
  50. package/docs/.vitepress/dist/assets/install.md.CblrJsha.js +0 -1
  51. package/docs/.vitepress/dist/assets/install.md.CblrJsha.lean.js +0 -1
  52. package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
  53. package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
  54. package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
  55. package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
  56. package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
  57. package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
  58. package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
  59. package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
  60. package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
  61. package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
  62. package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
  63. package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
  64. package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
  65. package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
  66. package/docs/.vitepress/dist/assets/license.md.hVRT8__d.js +0 -1
  67. package/docs/.vitepress/dist/assets/license.md.hVRT8__d.lean.js +0 -1
  68. package/docs/.vitepress/dist/assets/quick-start.md.C06xD920.js +0 -23
  69. package/docs/.vitepress/dist/assets/quick-start.md.C06xD920.lean.js +0 -1
  70. package/docs/.vitepress/dist/assets/style.DES0mfMn.css +0 -1
  71. package/docs/.vitepress/dist/assets/troubleshooting.md.DLP5r-7N.js +0 -1
  72. package/docs/.vitepress/dist/assets/troubleshooting.md.DLP5r-7N.lean.js +0 -1
  73. package/docs/.vitepress/dist/assets/zh_commands_deploy.md.BbKuBIij.js +0 -9
  74. package/docs/.vitepress/dist/assets/zh_commands_deploy.md.BbKuBIij.lean.js +0 -1
  75. package/docs/.vitepress/dist/assets/zh_commands_init.md.Dc_WYD8D.js +0 -18
  76. package/docs/.vitepress/dist/assets/zh_commands_init.md.Dc_WYD8D.lean.js +0 -1
  77. package/docs/.vitepress/dist/assets/zh_commands_rollback.md.Cdvwk1lB.js +0 -6
  78. package/docs/.vitepress/dist/assets/zh_commands_rollback.md.Cdvwk1lB.lean.js +0 -1
  79. package/docs/.vitepress/dist/assets/zh_config_auth.md.BytNcdS4.js +0 -44
  80. package/docs/.vitepress/dist/assets/zh_config_auth.md.BytNcdS4.lean.js +0 -1
  81. package/docs/.vitepress/dist/assets/zh_config_overview.md.CvAKxlb5.js +0 -45
  82. package/docs/.vitepress/dist/assets/zh_config_overview.md.CvAKxlb5.lean.js +0 -1
  83. package/docs/.vitepress/dist/assets/zh_config_schema.md.CTCn0g9X.js +0 -67
  84. package/docs/.vitepress/dist/assets/zh_config_schema.md.CTCn0g9X.lean.js +0 -1
  85. package/docs/.vitepress/dist/assets/zh_config_sub-env.md.Ce3xOEsi.js +0 -167
  86. package/docs/.vitepress/dist/assets/zh_config_sub-env.md.Ce3xOEsi.lean.js +0 -1
  87. package/docs/.vitepress/dist/assets/zh_features_atomic.md.DUhJ_qq0.js +0 -42
  88. package/docs/.vitepress/dist/assets/zh_features_atomic.md.DUhJ_qq0.lean.js +0 -1
  89. package/docs/.vitepress/dist/assets/zh_features_cleanup.md.CEgw587m.js +0 -50
  90. package/docs/.vitepress/dist/assets/zh_features_cleanup.md.CEgw587m.lean.js +0 -1
  91. package/docs/.vitepress/dist/assets/zh_features_shared-assets.md.DZhvWCTp.js +0 -26
  92. package/docs/.vitepress/dist/assets/zh_features_shared-assets.md.DZhvWCTp.lean.js +0 -1
  93. package/docs/.vitepress/dist/assets/zh_features_snapshot.md.Bkqgn7lu.js +0 -39
  94. package/docs/.vitepress/dist/assets/zh_features_snapshot.md.Bkqgn7lu.lean.js +0 -1
  95. package/docs/.vitepress/dist/assets/zh_index.md.DKRf1R-g.js +0 -1
  96. package/docs/.vitepress/dist/assets/zh_index.md.DKRf1R-g.lean.js +0 -1
  97. package/docs/.vitepress/dist/assets/zh_install.md.0LCLPI3L.js +0 -41
  98. package/docs/.vitepress/dist/assets/zh_install.md.0LCLPI3L.lean.js +0 -1
  99. package/docs/.vitepress/dist/assets/zh_license.md.BUZ74dvK.js +0 -1
  100. package/docs/.vitepress/dist/assets/zh_license.md.BUZ74dvK.lean.js +0 -1
  101. package/docs/.vitepress/dist/assets/zh_quick-start.md.Bl-Larcu.js +0 -19
  102. package/docs/.vitepress/dist/assets/zh_quick-start.md.Bl-Larcu.lean.js +0 -1
  103. package/docs/.vitepress/dist/assets/zh_troubleshooting.md.DHyCAfy2.js +0 -1
  104. package/docs/.vitepress/dist/assets/zh_troubleshooting.md.DHyCAfy2.lean.js +0 -1
  105. package/docs/.vitepress/dist/commands/deploy.html +0 -41
  106. package/docs/.vitepress/dist/commands/init.html +0 -26
  107. package/docs/.vitepress/dist/commands/rollback.html +0 -31
  108. package/docs/.vitepress/dist/config/auth.html +0 -80
  109. package/docs/.vitepress/dist/config/overview.html +0 -58
  110. package/docs/.vitepress/dist/config/schema.html +0 -25
  111. package/docs/.vitepress/dist/config/sub-env.html +0 -50
  112. package/docs/.vitepress/dist/features/atomic.html +0 -46
  113. package/docs/.vitepress/dist/features/cleanup.html +0 -44
  114. package/docs/.vitepress/dist/features/shared-assets.html +0 -50
  115. package/docs/.vitepress/dist/features/snapshot.html +0 -48
  116. package/docs/.vitepress/dist/hashmap.json +0 -1
  117. package/docs/.vitepress/dist/index.html +0 -25
  118. package/docs/.vitepress/dist/install.html +0 -25
  119. package/docs/.vitepress/dist/license.html +0 -25
  120. package/docs/.vitepress/dist/quick-start.html +0 -47
  121. package/docs/.vitepress/dist/troubleshooting.html +0 -25
  122. package/docs/.vitepress/dist/vp-icons.css +0 -0
  123. package/docs/.vitepress/dist/zh/commands/deploy.html +0 -33
  124. package/docs/.vitepress/dist/zh/commands/init.html +0 -42
  125. package/docs/.vitepress/dist/zh/commands/rollback.html +0 -30
  126. package/docs/.vitepress/dist/zh/config/auth.html +0 -68
  127. package/docs/.vitepress/dist/zh/config/overview.html +0 -69
  128. package/docs/.vitepress/dist/zh/config/schema.html +0 -91
  129. package/docs/.vitepress/dist/zh/config/sub-env.html +0 -191
  130. package/docs/.vitepress/dist/zh/features/atomic.html +0 -66
  131. package/docs/.vitepress/dist/zh/features/cleanup.html +0 -74
  132. package/docs/.vitepress/dist/zh/features/shared-assets.html +0 -50
  133. package/docs/.vitepress/dist/zh/features/snapshot.html +0 -63
  134. package/docs/.vitepress/dist/zh/index.html +0 -25
  135. package/docs/.vitepress/dist/zh/install.html +0 -65
  136. package/docs/.vitepress/dist/zh/license.html +0 -25
  137. package/docs/.vitepress/dist/zh/quick-start.html +0 -43
  138. package/docs/.vitepress/dist/zh/troubleshooting.html +0 -25
  139. package/docs/commands/deploy.md +0 -46
  140. package/docs/commands/init.md +0 -27
  141. package/docs/commands/rollback.md +0 -45
  142. package/docs/config/auth.md +0 -112
  143. package/docs/config/overview.md +0 -63
  144. package/docs/config/schema.md +0 -52
  145. package/docs/config/sub-env.md +0 -62
  146. package/docs/features/atomic.md +0 -67
  147. package/docs/features/cleanup.md +0 -80
  148. package/docs/features/shared-assets.md +0 -72
  149. package/docs/features/snapshot.md +0 -58
  150. package/docs/index.md +0 -48
  151. package/docs/install.md +0 -21
  152. package/docs/license.md +0 -23
  153. package/docs/quick-start.md +0 -98
  154. package/docs/troubleshooting.md +0 -88
  155. package/docs/zh/commands/deploy.md +0 -127
  156. package/docs/zh/commands/init.md +0 -76
  157. package/docs/zh/commands/rollback.md +0 -115
  158. package/docs/zh/config/auth.md +0 -195
  159. package/docs/zh/config/overview.md +0 -153
  160. package/docs/zh/config/schema.md +0 -253
  161. package/docs/zh/config/sub-env.md +0 -293
  162. package/docs/zh/features/atomic.md +0 -249
  163. package/docs/zh/features/cleanup.md +0 -241
  164. package/docs/zh/features/shared-assets.md +0 -72
  165. package/docs/zh/features/snapshot.md +0 -186
  166. package/docs/zh/index.md +0 -65
  167. package/docs/zh/install.md +0 -160
  168. package/docs/zh/license.md +0 -23
  169. package/docs/zh/quick-start.md +0 -109
  170. package/docs/zh/troubleshooting.md +0 -88
@@ -1,30 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN" dir="ltr">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <title>rollback 命令 | Shipfe</title>
7
- <meta name="description" content="一个强大的、免费的、基于 Rust 的 Web 应用部署工具">
8
- <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/shipfe-rust/assets/style.DES0mfMn.css" as="style">
10
- <link rel="preload stylesheet" href="/shipfe-rust/vp-icons.css" as="style">
11
-
12
- <script type="module" src="/shipfe-rust/assets/app.DZUgfPE2.js"></script>
13
- <link rel="preload" href="/shipfe-rust/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/shipfe-rust/assets/chunks/theme.CNyaCki0.js">
15
- <link rel="modulepreload" href="/shipfe-rust/assets/chunks/framework.BeaujayP.js">
16
- <link rel="modulepreload" href="/shipfe-rust/assets/zh_commands_rollback.md.Cdvwk1lB.lean.js">
17
- <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
18
- <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
- </head>
20
- <body>
21
- <div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/shipfe-rust/zh/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Shipfe</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/zh/quick-start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>快速入门</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/zh/config/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>配置</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Master-Jian/shipfe-rust" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>中文</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/commands/rollback.html" data-v-35975db6><!--[--><span data-v-35975db6>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>中文</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/commands/rollback.html" data-v-35975db6><!--[--><span data-v-35975db6>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>开始</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>简介</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/quick-start.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>快速入门</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/install.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>安装</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>命令</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/init.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>init</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/deploy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/rollback.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>rollback</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>配置</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/overview.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>配置概览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/schema.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>配置项详解</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/auth.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>认证</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/sub-env.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>子环境</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>功能</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/atomic.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>原子部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/shared-assets.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>共享资源管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/snapshot.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>资源快照</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/cleanup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>自动清理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>运维</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>故障排除</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _shipfe-rust_zh_commands_rollback" data-v-39a288b8><div><h1 id="rollback-命令" tabindex="-1">rollback 命令 <a class="header-anchor" href="#rollback-命令" aria-label="Permalink to &quot;rollback 命令&quot;">​</a></h1><p>回滚到之前的部署版本。</p><h2 id="语法" tabindex="-1">语法 <a class="header-anchor" href="#语法" aria-label="Permalink to &quot;语法&quot;">​</a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rollback</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> [options] [version]</span></span></code></pre></div><h2 id="描述" tabindex="-1">描述 <a class="header-anchor" href="#描述" aria-label="Permalink to &quot;描述&quot;">​</a></h2><p><code>rollback</code> 命令将应用回滚到指定的历史版本。如果不指定版本,则回滚到上一个版本。</p><h2 id="选项" tabindex="-1">选项 <a class="header-anchor" href="#选项" aria-label="Permalink to &quot;选项&quot;">​</a></h2><table tabindex="0"><thead><tr><th>选项</th><th>描述</th></tr></thead><tbody><tr><td><code>-c, --config &lt;file&gt;</code></td><td>指定配置文件路径</td></tr><tr><td><code>-d, --debug</code></td><td>启用调试模式</td></tr><tr><td><code>--dry-run</code></td><td>预览模式,不实际执行回滚</td></tr><tr><td><code>-h, --help</code></td><td>显示帮助信息</td></tr></tbody></table><h2 id="参数" tabindex="-1">参数 <a class="header-anchor" href="#参数" aria-label="Permalink to &quot;参数&quot;">​</a></h2><ul><li><code>version</code>: 可选,要回滚到的版本号(时间戳格式,如 <code>20260304_120000</code>)</li></ul><h2 id="示例" tabindex="-1">示例 <a class="header-anchor" href="#示例" aria-label="Permalink to &quot;示例&quot;">​</a></h2><h3 id="回滚到上一版本" tabindex="-1">回滚到上一版本 <a class="header-anchor" href="#回滚到上一版本" aria-label="Permalink to &quot;回滚到上一版本&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rollback</span></span></code></pre></div><p>自动回滚到最近的稳定版本。</p><h3 id="回滚到指定版本" tabindex="-1">回滚到指定版本 <a class="header-anchor" href="#回滚到指定版本" aria-label="Permalink to &quot;回滚到指定版本&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rollback</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 20260304_120000</span></span></code></pre></div><p>回滚到特定的历史版本。</p><h3 id="预览回滚" tabindex="-1">预览回滚 <a class="header-anchor" href="#预览回滚" aria-label="Permalink to &quot;预览回滚&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rollback</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --dry-run</span></span></code></pre></div><p>显示将要回滚到的版本,但不实际执行。</p><h2 id="回滚流程" tabindex="-1">回滚流程 <a class="header-anchor" href="#回滚流程" aria-label="Permalink to &quot;回滚流程&quot;">​</a></h2><h3 id="_1-版本选择" tabindex="-1">1. 版本选择 <a class="header-anchor" href="#_1-版本选择" aria-label="Permalink to &quot;1. 版本选择&quot;">​</a></h3><ul><li>如果指定了版本,直接使用</li><li>如果未指定,自动选择最新的可用版本(非当前版本)</li></ul><h3 id="_2-验证检查" tabindex="-1">2. 验证检查 <a class="header-anchor" href="#_2-验证检查" aria-label="Permalink to &quot;2. 验证检查&quot;">​</a></h3><ul><li>检查目标版本是否存在</li><li>验证快照文件的完整性</li><li>确保版本文件未损坏</li></ul><h3 id="_3-原子切换" tabindex="-1">3. 原子切换 <a class="header-anchor" href="#_3-原子切换" aria-label="Permalink to &quot;3. 原子切换&quot;">​</a></h3><ul><li>切换 <code>current</code> 符号链接到目标版本</li><li>确保切换的原子性</li></ul><h3 id="_4-状态验证" tabindex="-1">4. 状态验证 <a class="header-anchor" href="#_4-状态验证" aria-label="Permalink to &quot;4. 状态验证&quot;">​</a></h3><ul><li>验证切换后的符号链接正确</li><li>检查应用是否正常运行</li></ul><h2 id="查看可用版本" tabindex="-1">查看可用版本 <a class="header-anchor" href="#查看可用版本" aria-label="Permalink to &quot;查看可用版本&quot;">​</a></h2><p>要查看可回滚的版本:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># SSH到服务器查看</span></span>
22
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user@server</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;ls -la /var/www/myapp/releases/&quot;</span></span>
23
- <span class="line"></span>
24
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 或使用shipfe日志</span></span>
25
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">tail</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> shipfe.log</span></span></code></pre></div><h2 id="回滚历史" tabindex="-1">回滚历史 <a class="header-anchor" href="#回滚历史" aria-label="Permalink to &quot;回滚历史&quot;">​</a></h2><p>每次回滚都会记录在日志中:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>2026-03-04 12:01:00 INFO Starting rollback to version 20260304_110000</span></span>
26
- <span class="line"><span>2026-03-04 12:01:01 INFO Successfully rolled back to version 20260304_110000</span></span></code></pre></div><h2 id="注意事项" tabindex="-1">注意事项 <a class="header-anchor" href="#注意事项" aria-label="Permalink to &quot;注意事项&quot;">​</a></h2><ul><li>回滚不会删除任何版本,只改变当前链接</li><li>可以多次回滚到不同版本</li><li>回滚操作是可逆的,可以再次部署新版本</li></ul><h2 id="错误处理" tabindex="-1">错误处理 <a class="header-anchor" href="#错误处理" aria-label="Permalink to &quot;错误处理&quot;">​</a></h2><p>如果回滚失败:</p><ul><li>当前版本保持不变</li><li>详细错误信息输出</li><li>不会影响应用的可用性</li></ul><h2 id="相关命令" tabindex="-1">相关命令 <a class="header-anchor" href="#相关命令" aria-label="Permalink to &quot;相关命令&quot;">​</a></h2><ul><li><a href="/shipfe-rust/zh/commands/deploy.html"><code>deploy</code></a> - 执行新部署</li><li><a href="/shipfe-rust/zh/commands/init.html"><code>init</code></a> - 初始化配置</li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/shipfe-rust/zh/commands/deploy.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>deploy</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/shipfe-rust/zh/config/overview.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>配置概览</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
27
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"commands_deploy.md\":\"cybIRa1n\",\"commands_init.md\":\"Da652so5\",\"commands_rollback.md\":\"C0zKmFtz\",\"config_auth.md\":\"hvDhtWY8\",\"config_overview.md\":\"DAQclMJL\",\"config_schema.md\":\"Bv5TuD6E\",\"config_sub-env.md\":\"DSUt0Nyq\",\"features_atomic.md\":\"Cszqfb8O\",\"features_cleanup.md\":\"D1j3LEm1\",\"features_shared-assets.md\":\"ChpQD81r\",\"features_snapshot.md\":\"Bddk9nNL\",\"index.md\":\"DqmDY2QI\",\"install.md\":\"CblrJsha\",\"license.md\":\"hVRT8__d\",\"quick-start.md\":\"C06xD920\",\"troubleshooting.md\":\"DLP5r-7N\",\"zh_commands_deploy.md\":\"BbKuBIij\",\"zh_commands_init.md\":\"Dc_WYD8D\",\"zh_commands_rollback.md\":\"Cdvwk1lB\",\"zh_config_auth.md\":\"BytNcdS4\",\"zh_config_overview.md\":\"CvAKxlb5\",\"zh_config_schema.md\":\"CTCn0g9X\",\"zh_config_sub-env.md\":\"Ce3xOEsi\",\"zh_features_atomic.md\":\"DUhJ_qq0\",\"zh_features_cleanup.md\":\"CEgw587m\",\"zh_features_shared-assets.md\":\"DZhvWCTp\",\"zh_features_snapshot.md\":\"Bkqgn7lu\",\"zh_index.md\":\"DKRf1R-g\",\"zh_install.md\":\"0LCLPI3L\",\"zh_license.md\":\"BUZ74dvK\",\"zh_quick-start.md\":\"Bl-Larcu\",\"zh_troubleshooting.md\":\"DHyCAfy2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Shipfe\",\"description\":\"A VitePress site\",\"base\":\"/shipfe-rust/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\",\"title\":\"Shipfe\",\"description\":\"A powerful, free, Rust-based web app deployment tool\",\"themeConfig\":{\"nav\":[{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Config\",\"link\":\"/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Installation\",\"link\":\"/install\"}]},{\"text\":\"Commands\",\"items\":[{\"text\":\"init\",\"link\":\"/commands/init\"},{\"text\":\"deploy\",\"link\":\"/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/commands/rollback\"}]},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Config Overview\",\"link\":\"/config/overview\"},{\"text\":\"Config Schema\",\"link\":\"/config/schema\"},{\"text\":\"Authentication\",\"link\":\"/config/auth\"},{\"text\":\"Sub-environments\",\"link\":\"/config/sub-env\"}]},{\"text\":\"Features\",\"items\":[{\"text\":\"Atomic Deployment\",\"link\":\"/features/atomic\"},{\"text\":\"Shared Assets\",\"link\":\"/features/shared-assets\"},{\"text\":\"Snapshots\",\"link\":\"/features/snapshot\"},{\"text\":\"Cleanup\",\"link\":\"/features/cleanup\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]}]}},\"zh\":{\"label\":\"中文\",\"lang\":\"zh-CN\",\"title\":\"Shipfe\",\"description\":\"一个强大的、免费的、基于 Rust 的 Web 应用部署工具\",\"themeConfig\":{\"nav\":[{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"配置\",\"link\":\"/zh/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"开始\",\"items\":[{\"text\":\"简介\",\"link\":\"/zh/\"},{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"安装\",\"link\":\"/zh/install\"}]},{\"text\":\"命令\",\"items\":[{\"text\":\"init\",\"link\":\"/zh/commands/init\"},{\"text\":\"deploy\",\"link\":\"/zh/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/zh/commands/rollback\"}]},{\"text\":\"配置\",\"items\":[{\"text\":\"配置概览\",\"link\":\"/zh/config/overview\"},{\"text\":\"配置项详解\",\"link\":\"/zh/config/schema\"},{\"text\":\"认证\",\"link\":\"/zh/config/auth\"},{\"text\":\"子环境\",\"link\":\"/zh/config/sub-env\"}]},{\"text\":\"功能\",\"items\":[{\"text\":\"原子部署\",\"link\":\"/zh/features/atomic\"},{\"text\":\"共享资源管理\",\"link\":\"/zh/features/shared-assets\"},{\"text\":\"资源快照\",\"link\":\"/zh/features/snapshot\"},{\"text\":\"自动清理\",\"link\":\"/zh/features/cleanup\"}]},{\"text\":\"运维\",\"items\":[{\"text\":\"故障排除\",\"link\":\"/zh/troubleshooting\"}]}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
28
-
29
- </body>
30
- </html>
@@ -1,68 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN" dir="ltr">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <title>认证配置 | Shipfe</title>
7
- <meta name="description" content="一个强大的、免费的、基于 Rust 的 Web 应用部署工具">
8
- <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/shipfe-rust/assets/style.DES0mfMn.css" as="style">
10
- <link rel="preload stylesheet" href="/shipfe-rust/vp-icons.css" as="style">
11
-
12
- <script type="module" src="/shipfe-rust/assets/app.DZUgfPE2.js"></script>
13
- <link rel="preload" href="/shipfe-rust/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/shipfe-rust/assets/chunks/theme.CNyaCki0.js">
15
- <link rel="modulepreload" href="/shipfe-rust/assets/chunks/framework.BeaujayP.js">
16
- <link rel="modulepreload" href="/shipfe-rust/assets/zh_config_auth.md.BytNcdS4.lean.js">
17
- <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
18
- <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
- </head>
20
- <body>
21
- <div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/shipfe-rust/zh/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Shipfe</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/zh/quick-start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>快速入门</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/zh/config/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>配置</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Master-Jian/shipfe-rust" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>中文</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/config/auth.html" data-v-35975db6><!--[--><span data-v-35975db6>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>中文</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/config/auth.html" data-v-35975db6><!--[--><span data-v-35975db6>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>开始</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>简介</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/quick-start.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>快速入门</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/install.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>安装</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>命令</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/init.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>init</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/deploy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/rollback.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>rollback</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>配置</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/overview.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>配置概览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/schema.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>配置项详解</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/auth.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>认证</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/sub-env.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>子环境</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>功能</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/atomic.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>原子部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/shared-assets.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>共享资源管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/snapshot.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>资源快照</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/cleanup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>自动清理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>运维</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>故障排除</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _shipfe-rust_zh_config_auth" data-v-39a288b8><div><h1 id="认证配置" tabindex="-1">认证配置 <a class="header-anchor" href="#认证配置" aria-label="Permalink to &quot;认证配置&quot;">​</a></h1><p>配置SSH认证以安全连接到远程服务器。</p><h2 id="ssh密钥认证-推荐" tabindex="-1">SSH密钥认证(推荐) <a class="header-anchor" href="#ssh密钥认证-推荐" aria-label="Permalink to &quot;SSH密钥认证(推荐)&quot;">​</a></h2><p>Shipfe 使用SSH密钥认证,这是最安全和最方便的方式。</p><h3 id="生成ssh密钥" tabindex="-1">生成SSH密钥 <a class="header-anchor" href="#生成ssh密钥" aria-label="Permalink to &quot;生成SSH密钥&quot;">​</a></h3><p>如果还没有SSH密钥:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 生成RSA密钥(推荐)</span></span>
22
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-keygen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> rsa</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -b</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 4096</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -C</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;your-email@example.com&quot;</span></span>
23
- <span class="line"></span>
24
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 或生成Ed25519密钥(更现代)</span></span>
25
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-keygen</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ed25519</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -C</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;your-email@example.com&quot;</span></span></code></pre></div><h3 id="配置密钥路径" tabindex="-1">配置密钥路径 <a class="header-anchor" href="#配置密钥路径" aria-label="Permalink to &quot;配置密钥路径&quot;">​</a></h3><p>在 <code>shipfe.config.json</code> 中指定私钥路径:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
26
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;ssh_key_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;~/.ssh/id_rsa&quot;</span></span>
27
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>默认路径是 <code>~/.ssh/id_rsa</code>。</p><h3 id="添加公钥到服务器" tabindex="-1">添加公钥到服务器 <a class="header-anchor" href="#添加公钥到服务器" aria-label="Permalink to &quot;添加公钥到服务器&quot;">​</a></h3><p>将公钥添加到服务器的 <code>authorized_keys</code>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 自动添加(推荐)</span></span>
28
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-copy-id</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user@your-server.com</span></span>
29
- <span class="line"></span>
30
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 或手动添加</span></span>
31
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">cat</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa.pub</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ssh</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user@server</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;mkdir -p ~/.ssh &amp;&amp; cat &gt;&gt; ~/.ssh/authorized_keys&quot;</span></span></code></pre></div><h3 id="验证ssh连接" tabindex="-1">验证SSH连接 <a class="header-anchor" href="#验证ssh连接" aria-label="Permalink to &quot;验证SSH连接&quot;">​</a></h3><p>测试SSH连接是否正常:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user@your-server.com</span></span></code></pre></div><h2 id="ssh端口配置" tabindex="-1">SSH端口配置 <a class="header-anchor" href="#ssh端口配置" aria-label="Permalink to &quot;SSH端口配置&quot;">​</a></h2><p>如果SSH服务使用非标准端口:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
32
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;ssh_port&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2222</span></span>
33
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="密钥权限" tabindex="-1">密钥权限 <a class="header-anchor" href="#密钥权限" aria-label="Permalink to &quot;密钥权限&quot;">​</a></h2><p>确保SSH密钥文件权限正确:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 私钥权限</span></span>
34
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 600</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa</span></span>
35
- <span class="line"></span>
36
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 公钥权限</span></span>
37
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 644</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa.pub</span></span>
38
- <span class="line"></span>
39
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># .ssh目录权限</span></span>
40
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 700</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh</span></span></code></pre></div><h2 id="使用不同的密钥" tabindex="-1">使用不同的密钥 <a class="header-anchor" href="#使用不同的密钥" aria-label="Permalink to &quot;使用不同的密钥&quot;">​</a></h2><p>为不同项目或环境使用不同的SSH密钥:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
41
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;ssh_key_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;~/.ssh/project_deploy_key&quot;</span></span>
42
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="ssh代理转发" tabindex="-1">SSH代理转发 <a class="header-anchor" href="#ssh代理转发" aria-label="Permalink to &quot;SSH代理转发&quot;">​</a></h2><p>如果使用SSH代理,可以配置代理转发:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 在本地启用代理</span></span>
43
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">eval</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;$(</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-agent</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -s</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">)&quot;</span></span>
44
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa</span></span>
45
- <span class="line"></span>
46
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 配置转发(在shipfe配置中不需要特殊设置)</span></span></code></pre></div><h2 id="密码认证-不推荐" tabindex="-1">密码认证(不推荐) <a class="header-anchor" href="#密码认证-不推荐" aria-label="Permalink to &quot;密码认证(不推荐)&quot;">​</a></h2><p>虽然不推荐,但也可以使用密码认证:</p><p><strong>注意</strong>:密码认证不够安全,建议使用SSH密钥。</p><p>如果必须使用密码,Shipfe会提示输入密码。</p><h2 id="多服务器部署" tabindex="-1">多服务器部署 <a class="header-anchor" href="#多服务器部署" aria-label="Permalink to &quot;多服务器部署&quot;">​</a></h2><p>为多个服务器配置不同的认证:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// staging.json</span></span>
47
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
48
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_host&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;staging.example.com&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
49
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_user&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;deploy&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
50
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;ssh_key_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;~/.ssh/staging_key&quot;</span></span>
51
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
52
- <span class="line"></span>
53
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// production.json</span></span>
54
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
55
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_host&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;production.example.com&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
56
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_user&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;deploy&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
57
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;ssh_key_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;~/.ssh/production_key&quot;</span></span>
58
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="故障排除" tabindex="-1">故障排除 <a class="header-anchor" href="#故障排除" aria-label="Permalink to &quot;故障排除&quot;">​</a></h2><h3 id="权限拒绝错误" tabindex="-1">权限拒绝错误 <a class="header-anchor" href="#权限拒绝错误" aria-label="Permalink to &quot;权限拒绝错误&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Permission denied (publickey)</span></span></code></pre></div><p><strong>解决方案</strong>:</p><ol><li>检查私钥路径是否正确</li><li>验证公钥是否已添加到服务器</li><li>检查密钥文件权限</li><li>测试直接SSH连接</li></ol><h3 id="主机密钥验证失败" tabindex="-1">主机密钥验证失败 <a class="header-anchor" href="#主机密钥验证失败" aria-label="Permalink to &quot;主机密钥验证失败&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Host key verification failed</span></span></code></pre></div><p><strong>解决方案</strong>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 添加主机密钥到known_hosts</span></span>
59
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh-keyscan</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> your-server.com</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> &gt;&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/known_hosts</span></span>
60
- <span class="line"></span>
61
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 或禁用严格检查(不推荐)</span></span>
62
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 在~/.ssh/config中添加:</span></span>
63
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># Host your-server.com</span></span>
64
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># StrictHostKeyChecking no</span></span></code></pre></div><h3 id="ssh连接超时" tabindex="-1">SSH连接超时 <a class="header-anchor" href="#ssh连接超时" aria-label="Permalink to &quot;SSH连接超时&quot;">​</a></h3><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>Connection timed out</span></span></code></pre></div><p><strong>解决方案</strong>:</p><ol><li>检查服务器是否可达</li><li>验证防火墙设置</li><li>确认SSH服务正在运行</li><li>检查网络连接</li></ol><h3 id="调试ssh连接" tabindex="-1">调试SSH连接 <a class="header-anchor" href="#调试ssh连接" aria-label="Permalink to &quot;调试SSH连接&quot;">​</a></h3><p>启用详细SSH调试:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">ssh</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -v</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -i</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ~/.ssh/id_rsa</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> user@your-server.com</span></span></code></pre></div><p>或在Shipfe中使用调试模式:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --debug</span></span></code></pre></div><h2 id="安全最佳实践" tabindex="-1">安全最佳实践 <a class="header-anchor" href="#安全最佳实践" aria-label="Permalink to &quot;安全最佳实践&quot;">​</a></h2><ol><li><strong>使用强密钥</strong>:使用4096位RSA或Ed25519密钥</li><li><strong>定期轮换密钥</strong>:定期更换SSH密钥</li><li><strong>限制密钥使用</strong>:为特定服务器限制密钥使用</li><li><strong>禁用密码认证</strong>:在服务器上禁用SSH密码认证</li><li><strong>使用SSH代理</strong>:使用ssh-agent管理密钥</li><li><strong>监控访问</strong>:监控SSH登录日志</li></ol></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/shipfe-rust/zh/config/schema.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>配置项详解</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/shipfe-rust/zh/config/sub-env.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>子环境</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
65
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"commands_deploy.md\":\"cybIRa1n\",\"commands_init.md\":\"Da652so5\",\"commands_rollback.md\":\"C0zKmFtz\",\"config_auth.md\":\"hvDhtWY8\",\"config_overview.md\":\"DAQclMJL\",\"config_schema.md\":\"Bv5TuD6E\",\"config_sub-env.md\":\"DSUt0Nyq\",\"features_atomic.md\":\"Cszqfb8O\",\"features_cleanup.md\":\"D1j3LEm1\",\"features_shared-assets.md\":\"ChpQD81r\",\"features_snapshot.md\":\"Bddk9nNL\",\"index.md\":\"DqmDY2QI\",\"install.md\":\"CblrJsha\",\"license.md\":\"hVRT8__d\",\"quick-start.md\":\"C06xD920\",\"troubleshooting.md\":\"DLP5r-7N\",\"zh_commands_deploy.md\":\"BbKuBIij\",\"zh_commands_init.md\":\"Dc_WYD8D\",\"zh_commands_rollback.md\":\"Cdvwk1lB\",\"zh_config_auth.md\":\"BytNcdS4\",\"zh_config_overview.md\":\"CvAKxlb5\",\"zh_config_schema.md\":\"CTCn0g9X\",\"zh_config_sub-env.md\":\"Ce3xOEsi\",\"zh_features_atomic.md\":\"DUhJ_qq0\",\"zh_features_cleanup.md\":\"CEgw587m\",\"zh_features_shared-assets.md\":\"DZhvWCTp\",\"zh_features_snapshot.md\":\"Bkqgn7lu\",\"zh_index.md\":\"DKRf1R-g\",\"zh_install.md\":\"0LCLPI3L\",\"zh_license.md\":\"BUZ74dvK\",\"zh_quick-start.md\":\"Bl-Larcu\",\"zh_troubleshooting.md\":\"DHyCAfy2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Shipfe\",\"description\":\"A VitePress site\",\"base\":\"/shipfe-rust/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\",\"title\":\"Shipfe\",\"description\":\"A powerful, free, Rust-based web app deployment tool\",\"themeConfig\":{\"nav\":[{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Config\",\"link\":\"/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Installation\",\"link\":\"/install\"}]},{\"text\":\"Commands\",\"items\":[{\"text\":\"init\",\"link\":\"/commands/init\"},{\"text\":\"deploy\",\"link\":\"/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/commands/rollback\"}]},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Config Overview\",\"link\":\"/config/overview\"},{\"text\":\"Config Schema\",\"link\":\"/config/schema\"},{\"text\":\"Authentication\",\"link\":\"/config/auth\"},{\"text\":\"Sub-environments\",\"link\":\"/config/sub-env\"}]},{\"text\":\"Features\",\"items\":[{\"text\":\"Atomic Deployment\",\"link\":\"/features/atomic\"},{\"text\":\"Shared Assets\",\"link\":\"/features/shared-assets\"},{\"text\":\"Snapshots\",\"link\":\"/features/snapshot\"},{\"text\":\"Cleanup\",\"link\":\"/features/cleanup\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]}]}},\"zh\":{\"label\":\"中文\",\"lang\":\"zh-CN\",\"title\":\"Shipfe\",\"description\":\"一个强大的、免费的、基于 Rust 的 Web 应用部署工具\",\"themeConfig\":{\"nav\":[{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"配置\",\"link\":\"/zh/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"开始\",\"items\":[{\"text\":\"简介\",\"link\":\"/zh/\"},{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"安装\",\"link\":\"/zh/install\"}]},{\"text\":\"命令\",\"items\":[{\"text\":\"init\",\"link\":\"/zh/commands/init\"},{\"text\":\"deploy\",\"link\":\"/zh/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/zh/commands/rollback\"}]},{\"text\":\"配置\",\"items\":[{\"text\":\"配置概览\",\"link\":\"/zh/config/overview\"},{\"text\":\"配置项详解\",\"link\":\"/zh/config/schema\"},{\"text\":\"认证\",\"link\":\"/zh/config/auth\"},{\"text\":\"子环境\",\"link\":\"/zh/config/sub-env\"}]},{\"text\":\"功能\",\"items\":[{\"text\":\"原子部署\",\"link\":\"/zh/features/atomic\"},{\"text\":\"共享资源管理\",\"link\":\"/zh/features/shared-assets\"},{\"text\":\"资源快照\",\"link\":\"/zh/features/snapshot\"},{\"text\":\"自动清理\",\"link\":\"/zh/features/cleanup\"}]},{\"text\":\"运维\",\"items\":[{\"text\":\"故障排除\",\"link\":\"/zh/troubleshooting\"}]}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
66
-
67
- </body>
68
- </html>
@@ -1,69 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN" dir="ltr">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <title>配置概览 | Shipfe</title>
7
- <meta name="description" content="一个强大的、免费的、基于 Rust 的 Web 应用部署工具">
8
- <meta name="generator" content="VitePress v1.6.4">
9
- <link rel="preload stylesheet" href="/shipfe-rust/assets/style.DES0mfMn.css" as="style">
10
- <link rel="preload stylesheet" href="/shipfe-rust/vp-icons.css" as="style">
11
-
12
- <script type="module" src="/shipfe-rust/assets/app.DZUgfPE2.js"></script>
13
- <link rel="preload" href="/shipfe-rust/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/shipfe-rust/assets/chunks/theme.CNyaCki0.js">
15
- <link rel="modulepreload" href="/shipfe-rust/assets/chunks/framework.BeaujayP.js">
16
- <link rel="modulepreload" href="/shipfe-rust/assets/zh_config_overview.md.CvAKxlb5.lean.js">
17
- <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
18
- <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
19
- </head>
20
- <body>
21
- <div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/shipfe-rust/zh/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>Shipfe</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/shipfe-rust/zh/quick-start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>快速入门</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/shipfe-rust/zh/config/overview.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>配置</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/Master-Jian/shipfe-rust" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>GitHub</span><!--]--></a><!--]--><!--]--></nav><div class="VPFlyout VPNavBarTranslations translations" data-v-6aa21345 data-v-88af2de4 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="Change language" data-v-cf11d7a2><span class="text" data-v-cf11d7a2><span class="vpi-languages option-icon" data-v-cf11d7a2></span><!----><span class="vpi-chevron-down text-icon" data-v-cf11d7a2></span></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="items" data-v-88af2de4><p class="title" data-v-88af2de4>中文</p><!--[--><div class="VPMenuLink" data-v-88af2de4 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/config/overview.html" data-v-35975db6><!--[--><span data-v-35975db6>English</span><!--]--></a></div><!--]--></div><!--]--><!--]--></div></div></div><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><!----><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><div class="group translations" data-v-bb2aa2f0><p class="trans-title" data-v-bb2aa2f0>中文</p><!--[--><div class="VPMenuLink" data-v-bb2aa2f0 data-v-35975db6><a class="VPLink link" href="/shipfe-rust/config/overview.html" data-v-35975db6><!--[--><span data-v-35975db6>English</span><!--]--></a></div><!--]--></div><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>Appearance</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><!----><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>开始</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>简介</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/quick-start.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>快速入门</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/install.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>安装</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>命令</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/init.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>init</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/deploy.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>deploy</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/commands/rollback.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>rollback</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>配置</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/overview.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>配置概览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/schema.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>配置项详解</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/auth.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>认证</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/config/sub-env.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>子环境</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>功能</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/atomic.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>原子部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/shared-assets.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>共享资源管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/snapshot.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>资源快照</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/features/cleanup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>自动清理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>运维</h2><!----></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/shipfe-rust/zh/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>故障排除</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _shipfe-rust_zh_config_overview" data-v-39a288b8><div><h1 id="配置概览" tabindex="-1">配置概览 <a class="header-anchor" href="#配置概览" aria-label="Permalink to &quot;配置概览&quot;">​</a></h1><p>Shipfe 使用 JSON 格式的配置文件来定义部署行为。</p><h2 id="配置文件位置" tabindex="-1">配置文件位置 <a class="header-anchor" href="#配置文件位置" aria-label="Permalink to &quot;配置文件位置&quot;">​</a></h2><p>默认情况下,Shipfe 在项目根目录查找 <code>shipfe.config.json</code> 文件。</p><p>您也可以使用 <code>-c</code> 或 <code>--config</code> 参数指定自定义配置文件:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> production.json</span></span></code></pre></div><h2 id="基本配置" tabindex="-1">基本配置 <a class="header-anchor" href="#基本配置" aria-label="Permalink to &quot;基本配置&quot;">​</a></h2><p>最小的配置文件包含服务器连接信息:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
22
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_host&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;your-server.com&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
23
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_user&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;deploy&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
24
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;/var/www/myapp&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
25
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;local_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;./dist&quot;</span></span>
26
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="完整配置示例" tabindex="-1">完整配置示例 <a class="header-anchor" href="#完整配置示例" aria-label="Permalink to &quot;完整配置示例&quot;">​</a></h2><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
27
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_host&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;your-server.com&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
28
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_user&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;deploy&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
29
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;/var/www/myapp&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
30
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;local_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;./dist&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
31
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;build_command&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;npm run build&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
32
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;keep_releases&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
33
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;delete_old&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
34
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;enable_shared&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
35
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;hashed_asset_patterns&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
36
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.js&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
37
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.css&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
38
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.png&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
39
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.jpg&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
40
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.svg&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
41
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.woff2&quot;</span></span>
42
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
43
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;exclude_patterns&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
44
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.map&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
45
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;**/*.log&quot;</span></span>
46
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
47
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;ssh_key_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;~/.ssh/id_rsa&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
48
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;ssh_port&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">22</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
49
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;pre_deploy_commands&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
50
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;sudo systemctl stop nginx&quot;</span></span>
51
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
52
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;post_deploy_commands&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
53
- <span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &quot;sudo systemctl start nginx&quot;</span></span>
54
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
55
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="配置分类" tabindex="-1">配置分类 <a class="header-anchor" href="#配置分类" aria-label="Permalink to &quot;配置分类&quot;">​</a></h2><h3 id="连接配置" tabindex="-1">连接配置 <a class="header-anchor" href="#连接配置" aria-label="Permalink to &quot;连接配置&quot;">​</a></h3><ul><li><a href="/shipfe-rust/zh/config/auth.html"><code>remote_host</code></a> - 服务器地址</li><li><a href="/shipfe-rust/zh/config/auth.html"><code>remote_user</code></a> - SSH用户名</li><li><a href="/shipfe-rust/zh/config/auth.html"><code>ssh_key_path</code></a> - SSH密钥路径</li><li><a href="/shipfe-rust/zh/config/auth.html"><code>ssh_port</code></a> - SSH端口</li></ul><h3 id="路径配置" tabindex="-1">路径配置 <a class="header-anchor" href="#路径配置" aria-label="Permalink to &quot;路径配置&quot;">​</a></h3><ul><li><code>remote_path</code> - 服务器部署根目录</li><li><code>local_path</code> - 本地构建输出目录</li></ul><h3 id="构建配置" tabindex="-1">构建配置 <a class="header-anchor" href="#构建配置" aria-label="Permalink to &quot;构建配置&quot;">​</a></h3><ul><li><code>build_command</code> - 构建命令</li><li><code>exclude_patterns</code> - 排除的文件模式</li></ul><h3 id="部署策略" tabindex="-1">部署策略 <a class="header-anchor" href="#部署策略" aria-label="Permalink to &quot;部署策略&quot;">​</a></h3><ul><li><code>keep_releases</code> - 保留的发布数量</li><li><code>delete_old</code> - 是否只保留最新版本</li></ul><h3 id="高级功能" tabindex="-1">高级功能 <a class="header-anchor" href="#高级功能" aria-label="Permalink to &quot;高级功能&quot;">​</a></h3><ul><li><a href="/shipfe-rust/zh/features/shared-assets.html"><code>enable_shared</code></a> - 启用共享资源</li><li><code>hashed_asset_patterns</code> - 共享资源文件模式</li><li><code>pre_deploy_commands</code> - 部署前命令</li><li><code>post_deploy_commands</code> - 部署后命令</li></ul><h2 id="环境特定配置" tabindex="-1">环境特定配置 <a class="header-anchor" href="#环境特定配置" aria-label="Permalink to &quot;环境特定配置&quot;">​</a></h2><p>对于不同的部署环境,可以创建多个配置文件:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 生产环境</span></span>
56
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> production.json</span></span>
57
- <span class="line"></span>
58
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 预发布环境</span></span>
59
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> staging.json</span></span>
60
- <span class="line"></span>
61
- <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 测试环境</span></span>
62
- <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> test.json</span></span></code></pre></div><h2 id="配置验证" tabindex="-1">配置验证 <a class="header-anchor" href="#配置验证" aria-label="Permalink to &quot;配置验证&quot;">​</a></h2><p>Shipfe 在部署前会验证配置的正确性:</p><ul><li>检查必需字段</li><li>验证服务器连接</li><li>检查路径权限</li><li>验证构建命令</li></ul><h2 id="最佳实践" tabindex="-1">最佳实践 <a class="header-anchor" href="#最佳实践" aria-label="Permalink to &quot;最佳实践&quot;">​</a></h2><ol><li><strong>使用版本控制</strong>:将配置文件纳入版本控制</li><li><strong>环境分离</strong>:为不同环境使用不同配置</li><li><strong>敏感信息</strong>:不要在配置文件中存储密码</li><li><strong>权限控制</strong>:确保配置文件权限正确(600)</li><li><strong>备份配置</strong>:定期备份重要的配置文件</li></ol><h2 id="故障排除" tabindex="-1">故障排除 <a class="header-anchor" href="#故障排除" aria-label="Permalink to &quot;故障排除&quot;">​</a></h2><h3 id="配置无效" tabindex="-1">配置无效 <a class="header-anchor" href="#配置无效" aria-label="Permalink to &quot;配置无效&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">shipfe</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> deploy</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --debug</span></span></code></pre></div><p>启用调试模式查看详细的配置验证信息。</p><h3 id="权限问题" tabindex="-1">权限问题 <a class="header-anchor" href="#权限问题" aria-label="Permalink to &quot;权限问题&quot;">​</a></h3><p>确保配置文件权限正确:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">chmod</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 600</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> shipfe.config.json</span></span></code></pre></div><h3 id="路径问题" tabindex="-1">路径问题 <a class="header-anchor" href="#路径问题" aria-label="Permalink to &quot;路径问题&quot;">​</a></h3><p>使用绝对路径避免歧义:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
63
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;local_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;/full/path/to/dist&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
64
- <span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> &quot;remote_path&quot;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&quot;/var/www/myapp&quot;</span></span>
65
- <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/shipfe-rust/zh/commands/rollback.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>rollback</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/shipfe-rust/zh/config/schema.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>配置项详解</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
66
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"commands_deploy.md\":\"cybIRa1n\",\"commands_init.md\":\"Da652so5\",\"commands_rollback.md\":\"C0zKmFtz\",\"config_auth.md\":\"hvDhtWY8\",\"config_overview.md\":\"DAQclMJL\",\"config_schema.md\":\"Bv5TuD6E\",\"config_sub-env.md\":\"DSUt0Nyq\",\"features_atomic.md\":\"Cszqfb8O\",\"features_cleanup.md\":\"D1j3LEm1\",\"features_shared-assets.md\":\"ChpQD81r\",\"features_snapshot.md\":\"Bddk9nNL\",\"index.md\":\"DqmDY2QI\",\"install.md\":\"CblrJsha\",\"license.md\":\"hVRT8__d\",\"quick-start.md\":\"C06xD920\",\"troubleshooting.md\":\"DLP5r-7N\",\"zh_commands_deploy.md\":\"BbKuBIij\",\"zh_commands_init.md\":\"Dc_WYD8D\",\"zh_commands_rollback.md\":\"Cdvwk1lB\",\"zh_config_auth.md\":\"BytNcdS4\",\"zh_config_overview.md\":\"CvAKxlb5\",\"zh_config_schema.md\":\"CTCn0g9X\",\"zh_config_sub-env.md\":\"Ce3xOEsi\",\"zh_features_atomic.md\":\"DUhJ_qq0\",\"zh_features_cleanup.md\":\"CEgw587m\",\"zh_features_shared-assets.md\":\"DZhvWCTp\",\"zh_features_snapshot.md\":\"Bkqgn7lu\",\"zh_index.md\":\"DKRf1R-g\",\"zh_install.md\":\"0LCLPI3L\",\"zh_license.md\":\"BUZ74dvK\",\"zh_quick-start.md\":\"Bl-Larcu\",\"zh_troubleshooting.md\":\"DHyCAfy2\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Shipfe\",\"description\":\"A VitePress site\",\"base\":\"/shipfe-rust/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\",\"title\":\"Shipfe\",\"description\":\"A powerful, free, Rust-based web app deployment tool\",\"themeConfig\":{\"nav\":[{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Config\",\"link\":\"/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"items\":[{\"text\":\"Introduction\",\"link\":\"/\"},{\"text\":\"Quick Start\",\"link\":\"/quick-start\"},{\"text\":\"Installation\",\"link\":\"/install\"}]},{\"text\":\"Commands\",\"items\":[{\"text\":\"init\",\"link\":\"/commands/init\"},{\"text\":\"deploy\",\"link\":\"/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/commands/rollback\"}]},{\"text\":\"Configuration\",\"items\":[{\"text\":\"Config Overview\",\"link\":\"/config/overview\"},{\"text\":\"Config Schema\",\"link\":\"/config/schema\"},{\"text\":\"Authentication\",\"link\":\"/config/auth\"},{\"text\":\"Sub-environments\",\"link\":\"/config/sub-env\"}]},{\"text\":\"Features\",\"items\":[{\"text\":\"Atomic Deployment\",\"link\":\"/features/atomic\"},{\"text\":\"Shared Assets\",\"link\":\"/features/shared-assets\"},{\"text\":\"Snapshots\",\"link\":\"/features/snapshot\"},{\"text\":\"Cleanup\",\"link\":\"/features/cleanup\"}]},{\"text\":\"Operations\",\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]}]}},\"zh\":{\"label\":\"中文\",\"lang\":\"zh-CN\",\"title\":\"Shipfe\",\"description\":\"一个强大的、免费的、基于 Rust 的 Web 应用部署工具\",\"themeConfig\":{\"nav\":[{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"配置\",\"link\":\"/zh/config/overview\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/Master-Jian/shipfe-rust\"}],\"sidebar\":[{\"text\":\"开始\",\"items\":[{\"text\":\"简介\",\"link\":\"/zh/\"},{\"text\":\"快速入门\",\"link\":\"/zh/quick-start\"},{\"text\":\"安装\",\"link\":\"/zh/install\"}]},{\"text\":\"命令\",\"items\":[{\"text\":\"init\",\"link\":\"/zh/commands/init\"},{\"text\":\"deploy\",\"link\":\"/zh/commands/deploy\"},{\"text\":\"rollback\",\"link\":\"/zh/commands/rollback\"}]},{\"text\":\"配置\",\"items\":[{\"text\":\"配置概览\",\"link\":\"/zh/config/overview\"},{\"text\":\"配置项详解\",\"link\":\"/zh/config/schema\"},{\"text\":\"认证\",\"link\":\"/zh/config/auth\"},{\"text\":\"子环境\",\"link\":\"/zh/config/sub-env\"}]},{\"text\":\"功能\",\"items\":[{\"text\":\"原子部署\",\"link\":\"/zh/features/atomic\"},{\"text\":\"共享资源管理\",\"link\":\"/zh/features/shared-assets\"},{\"text\":\"资源快照\",\"link\":\"/zh/features/snapshot\"},{\"text\":\"自动清理\",\"link\":\"/zh/features/cleanup\"}]},{\"text\":\"运维\",\"items\":[{\"text\":\"故障排除\",\"link\":\"/zh/troubleshooting\"}]}]}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
67
-
68
- </body>
69
- </html>