[{"data":1,"prerenderedAt":530},["ShallowReactive",2],{"content:\u002F2026\u002Fserver-deploy-guide":3,"surround:\u002F2026\u002Fserver-deploy-guide":518},{"id":4,"title":5,"body":6,"categories":492,"date":494,"description":495,"draft":496,"extension":497,"image":498,"meta":499,"navigation":501,"path":502,"permalink":498,"published":498,"readingTime":503,"recommend":498,"references":498,"seo":508,"sitemap":509,"stem":510,"tags":511,"type":516,"updated":494,"__hash__":517},"content\u002Fposts\u002F2026\u002FServer-Deploy-Guide.md","雨云 + 1Panel 服务器部署实战",{"type":7,"value":8,"toc":477},"minimark",[9,13,17,32,43,47,53,75,78,82,91,111,114,125,140,144,147,153,164,171,175,178,188,202,219,237,245,248,254,262,266,269,275,282,290,294,297,302,308,316,322,325,331,334,338,345,368,371,376,383,388,399,404,418,423,426,430,459,462,465,468,471],[10,11,5],"h1",{"id":12},"雨云-1panel-服务器部署实战",[14,15,16],"h2",{"id":16},"前言",[18,19,20,21,25,26,31],"p",{},"除了这个博客，我还有一个基于 Halo 的主站。两台机器都是同样的搭配 ——",[22,23,24],"strong",{},"雨云 VPS + 1Panel 面板","—— 价格适中、国产面板上手快、社区活跃。这篇文章记一下从买机器到部署上线的完整流程。想了解这个 Nuxt 博客是怎么从 Fork 到上线的，可以看",[27,28,30],"a",{"href":29},"\u002F2026\u002Fblog-build-record","《个人博客搭建全记录》","。",[33,34,36],"alert",{"type":35},"info",[18,37,38,39,42],{},"本文以 ",[22,40,41],{},"Debian 12"," 为例。雨云默认提供的就是 Debian，如果你用 Ubuntu 或其他发行版，命令基本通用。",[14,44,46],{"id":45},"为什么选雨云-1panel","为什么选雨云 + 1Panel",[18,48,49,50,31],{},"简单说：",[22,51,52],{},"够用、便宜、不折腾",[54,55,56,63,69],"ul",{},[57,58,59,62],"li",{},[22,60,61],{},"价格","：入门配置几十块一个月，跑个人博客 + 几个小服务绰绰有余",[57,64,65,68],{},[22,66,67],{},"1Panel","：国产开源面板，和应用商店一键安装、文件管理、HTTPS 证书自动续期都做得不错。相比于手敲 nginx 配置和 Let's Encrypt 命令，省了不少时间",[57,70,71,74],{},[22,72,73],{},"社区","：官方论坛活跃、QQ 群有人解答、生态在快速成长",[18,76,77],{},"对个人开发者来说，这套组合比阿里云 + 宝塔的性价比高不少，也比纯命令行多了个可视化管理界面，不至于改个配置还要现查 nginx 语法。",[14,79,81],{"id":80},"第一步买机器-初始设置","第一步：买机器 + 初始设置",[18,83,84,90],{},[27,85,89],{"href":86,"rel":87},"https:\u002F\u002Fwww.rainyun.com",[88],"nofollow","雨云官网"," 直接选 VPS。建议：",[54,92,93,99,105],{},[57,94,95,98],{},[22,96,97],{},"系统","：Debian 12（稳定性好、包新）",[57,100,101,104],{},[22,102,103],{},"配置","：1 核 2G 起，跑博客 + Nginx ✅，如果想跑数据库或 Docker 建议上 2 核 4G",[57,106,107,110],{},[22,108,109],{},"带宽","：按流量计费，个人博客通常够用",[18,112,113],{},"购买后登录 SSH：",[115,116,122],"pre",{"className":117,"code":119,"language":120,"meta":121},[118],"language-bash","ssh root@你的服务器IP\n","bash","",[123,124,119],"code",{"__ignoreMap":121},[33,126,128,134],{"type":127},"warning",[18,129,130,133],{},[22,131,132],{},"第一件事","—— 改密码和更新系统：",[115,135,138],{"className":136,"code":137,"language":120,"meta":121},[118],"passwd\napt update && apt upgrade -y\n",[123,139,137],{"__ignoreMap":121},[14,141,143],{"id":142},"第二步安装-1panel","第二步：安装 1Panel",[18,145,146],{},"一行命令完成安装：",[115,148,151],{"className":149,"code":150,"language":120,"meta":121},[118],"curl -sSL https:\u002F\u002Fresource.fit2cloud.com\u002F1panel\u002Fpackage\u002Fquick_start.sh -o quick_start.sh && bash quick_start.sh\n",[123,152,150],{"__ignoreMap":121},[18,154,155,156,159,160,163],{},"安装过程会提示设置",[22,157,158],{},"面板端口","和",[22,161,162],{},"管理员密码","。记好，别丢了。",[18,165,166,167,170],{},"安装完成后浏览器打开 ",[123,168,169],{"code":169},"http:\u002F\u002F你的IP:面板端口","，输入刚才设的账号密码，就看到 1Panel 主界面了。",[14,172,174],{"id":173},"第三步创建网站","第三步：创建网站",[18,176,177],{},"这是最核心的操作，也是 1Panel 比命令行方便的地方。",[18,179,180,183,184,187],{},[22,181,182],{},"3.1 新建站点","：左侧「网站」→ 右上角「创建网站」→ 类型选",[22,185,186],{},"静态网站","，填你的域名，端口默认 80。",[18,189,190,193,194,197,198,201],{},[22,191,192],{},"3.2 上传文件","：1Panel 自带文件管理器，可以把你的网站文件上传到站点根目录。如果你是用 ",[123,195,196],{"code":196},"pnpm generate"," 构建的静态站，产物的 ",[123,199,200],{"code":200},".output\u002Fpublic\u002F"," 整个文件夹扔进去就行。",[33,203,205],{"type":204},"tip",[18,206,207,210,211,214,215,218],{},[22,208,209],{},"小技巧","：与其每次手动上传，不如在服务器上 pull Git 仓库、在服务器构建、用软链接或拷贝指向 1Panel 的站点目录。我现在的部署流程就是一条命令 —— 本地 ",[123,212,213],{"code":213},"git push","，服务器 ",[123,216,217],{"code":217},"bash deploy.sh"," 自动拉代码 + 构建 + 拷贝。详见我的博客搭建记录。",[18,220,221,224,225,228,229,232,233,236],{},[22,222,223],{},"3.3 伪静态","：静态网站关键一步。文章页（如 ",[123,226,227],{"code":227},"\u002F2026\u002Fsome-article","）在 Nginx 下直接访问会 404，因为 Nginx 不知道 ",[123,230,231],{"code":231},"some-article"," 对应的是 ",[123,234,235],{"code":235},"some-article\u002Findex.html","。在站点「配置文件」里加上这段：",[115,238,243],{"className":239,"code":241,"language":242,"meta":121},[240],"language-nginx","location \u002F {\n    try_files $uri $uri.html $uri\u002F \u002F404.html;\n}\n","nginx",[123,244,241],{"__ignoreMap":121},[18,246,247],{},"保存后 1Panel 自动 reload，文章页就能正常访问了。",[18,249,250,253],{},[22,251,252],{},"3.4 HTTPS","：站点 → HTTPS → 申请 Let's Encrypt 证书（选 acme 账户）→ 一键申请。然后打开「强制 HTTPS」。",[33,255,256],{"type":127},[18,257,258,261],{},[22,259,260],{},"注意","：Let's Encrypt 要求域名 DNS 已解析到你的服务器 IP。如果 DNS 还没配好就去申请证书会失败 —— 先配好 DNS 解析、等几分钟生效后再操作。",[14,263,265],{"id":264},"第四步安装运行时环境","第四步：安装运行时环境",[18,267,268],{},"如果你的项目需要 Node，1Panel 的应用商店可以直接装。或者在命令行安装：",[115,270,273],{"className":271,"code":272,"language":120,"meta":121},[118],"curl -fsSL https:\u002F\u002Fdeb.nodesource.com\u002Fsetup_24.x | sudo -E bash -\nsudo apt install -y nodejs\nsudo corepack enable\ncorepack prepare pnpm@11.8.0 --activate\n",[123,274,272],{"__ignoreMap":121},[18,276,277,278,281],{},"上面的命令会装 Node 24 + 启用 pnpm（",[123,279,280],{"code":280},"package.json"," 锁定的版本是 11.8.0）。",[33,283,284],{"type":204},[18,285,286,289],{},[22,287,288],{},"为什么不用 Docker","：对于个人博客这种小项目，Docker 的镜像和管理开销比直接跑 Node 更大。静态站甚至不需要 Node 进程 —— 构建完就是一堆 HTML，Nginx 直出。如果项目复杂、环境依赖多，再考虑 Docker 也不迟。",[14,291,293],{"id":292},"第五步配置-git-自动化部署","第五步：配置 Git 自动化部署",[18,295,296],{},"手动上传太累，用 Git 做自动化部署才是最舒服的。流程分两步：",[18,298,299],{},[22,300,301],{},"5.1 服务器上 Clone 仓库",[115,303,306],{"className":304,"code":305,"language":120,"meta":121},[118],"cd \u002Fopt\ngit clone https:\u002F\u002Fgithub.com\u002F你的用户名\u002F你的仓库.git my-site\ncd my-site\npnpm install\n",[123,307,305],{"__ignoreMap":121},[18,309,310],{},[22,311,312,313],{},"5.2 写一个部署脚本 ",[123,314,315],{"code":315},"deploy.sh",[115,317,320],{"className":318,"code":319,"language":120,"meta":121},[118],"#!\u002Fusr\u002Fbin\u002Fenv bash\nset -euo pipefail\ncd \u002Fopt\u002Fmy-site\ngit pull\npnpm install --frozen-lockfile\nnpx nuxi generate\nrm -rf \u002Fopt\u002F1panel\u002Fwww\u002Fsites\u002F你的域名\u002Findex\u002F*\ncp -r .output\u002Fpublic\u002F. \u002Fopt\u002F1panel\u002Fwww\u002Fsites\u002F你的域名\u002Findex\u002F\necho \"部署完成\"\n",[123,321,319],{"__ignoreMap":121},[18,323,324],{},"以后更新博客只需要：",[115,326,329],{"className":327,"code":328,"language":120,"meta":121},[118],"cd \u002Fopt\u002Fmy-site && bash deploy.sh\n",[123,330,328],{"__ignoreMap":121},[18,332,333],{},"一条命令，拉代码 → 构建 → 拷贝到站点目录，全程自动化。",[14,335,337],{"id":336},"第六步监控和维护","第六步：监控和维护",[18,339,340,341,344],{},"1Panel 面板自带",[22,342,343],{},"系统监控","（CPU、内存、磁盘、网络），日常看一眼就行。另外几个好习惯：",[54,346,347,356,362],{},[57,348,349,355],{},[22,350,351,352],{},"定期 ",[123,353,354],{"code":354},"apt update","：系统安全补丁",[57,357,358,361],{},[22,359,360],{},"看 nginx 日志","：1Panel 站点详情里能看到访问日志和错误日志",[57,363,364,367],{},[22,365,366],{},"备份","：1Panel 有定时备份功能，可以把站点文件和数据库（如果有）定期备份到远程",[14,369,370],{"id":370},"常见问题",[18,372,373],{},[22,374,375],{},"Q：域名解析后访问还是默认页？",[18,377,378,379,382],{},"检查 1Panel 站点根目录下是否真的替换成了你的文件。1Panel 创建站点时会自动生成一个 ",[123,380,381],{"code":381},"index.html","（「恭喜，站点创建成功」），必须删掉或覆盖它。",[18,384,385],{},[22,386,387],{},"Q：Let's Encrypt 证书申请失败？",[18,389,390,391,394,395,398],{},"最常见的原因：域名 DNS 还没指向服务器。",[123,392,393],{"code":393},"ping 你的域名"," 确认 IP 是否正确。另外 ",[123,396,397],{"code":397},".env"," 等敏感文件不要放在网站根目录可公开访问的位置。",[18,400,401],{},[22,402,403],{},"Q：静态站文章页刷新 404？",[18,405,406,407,410,411,413,414,417],{},"就是你忘了配那个 ",[123,408,409],{"code":409},"try_files $uri $uri.html $uri\u002F \u002F404.html","。每篇静态文章都是一个文件夹（里面有 ",[123,412,381],{"code":381},"），Nginx 不知道自动去找，必须靠 ",[123,415,416],{"code":416},"try_files"," 兜底。",[18,419,420],{},[22,421,422],{},"Q：服务器内存不够？",[18,424,425],{},"1 核 2G 跑 Nginx + 几个静态站完全够。如果装了很多服务，关掉不用的 Docker 容器、减少不必要的进程。1Panel 面板本身开销很小。",[14,427,429],{"id":428},"成本参考月均","成本参考（月均）",[431,432,433],"card-list",{},[54,434,435,441,447,453],{},[57,436,437,440],{},[22,438,439],{},"雨云 VPS（1 核 2G）","：~¥30 \u002F 月",[57,442,443,446],{},[22,444,445],{},"域名","：~¥30 \u002F 年（≈ ¥2.5 \u002F 月）",[57,448,449,452],{},[22,450,451],{},"DNS + CDN","：Cloudflare 免费计划",[57,454,455,458],{},[22,456,457],{},"总计","：约 ¥33 \u002F 月",[18,460,461],{},"一个月两杯奶茶的钱，换一台完全自主可控的服务器 —— 这笔账怎么算都不亏。",[14,463,464],{"id":464},"写在最后",[18,466,467],{},"从完全不会 Linux 到能自己搭服务器、配 Nginx、写部署脚本，其实并没有想象中那么难。1Panel 这个工具大大降低了上手门槛，面板操作 + 命令行互补是很好的组合。",[18,469,470],{},"如果你也在考虑把自己的项目从 Vercel\u002FNetlify 搬到自己的服务器上，希望这篇能帮你快速上手。",[472,473,474],"quote",{},[18,475,476],{},"拥有一台自己的服务器，就像在互联网上有了自己的房子。你可以决定上面跑什么、怎么跑、什么时候搬走 —— 完全的自由。",{"title":121,"searchDepth":478,"depth":478,"links":479},4,[480,482,483,484,485,486,487,488,489,490,491],{"id":16,"depth":481,"text":16},2,{"id":45,"depth":481,"text":46},{"id":80,"depth":481,"text":81},{"id":142,"depth":481,"text":143},{"id":173,"depth":481,"text":174},{"id":264,"depth":481,"text":265},{"id":292,"depth":481,"text":293},{"id":336,"depth":481,"text":337},{"id":370,"depth":481,"text":370},{"id":428,"depth":481,"text":429},{"id":464,"depth":481,"text":464},[493],"技术","2026-07-10 14:00:00","从购买服务器、安装 1Panel 面板，到创建网站、配置 HTTPS、设置 Git 自动部署——一台 Debian 服务器的完整上手记录。",false,"md",null,{"slots":500},{},true,"\u002F2026\u002Fserver-deploy-guide",{"text":504,"minutes":505,"time":506,"words":507},"9 min read",8.41,504600,1682,{"title":5,"description":495},{"loc":502},"posts\u002F2026\u002FServer-Deploy-Guide",[512,67,513,514,515],"服务器","雨云","部署","Linux","tech","QAWYItzWf9jAemVd3JuZYxMecfEjJJFyNtyOCS9VhrI",[519,525],{"title":520,"path":521,"stem":522,"date":523,"type":524,"children":-1},"【短篇】树人","\u002F2026\u002Fshuren","posts\u002F2026\u002Fshuren","2026-05-28 00:00:00","story",{"title":526,"path":527,"stem":528,"date":529,"type":516,"children":-1},"译制字幕指南","\u002F2026\u002Fthings-about-translations","posts\u002F2026\u002FThings-About-Translations","2026-07-10 22:20:07",1784029689163]