<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>工具效率 on 文艺技术笔记</title>
        <link>https://wenyiblog.top/categories/%E5%B7%A5%E5%85%B7%E6%95%88%E7%8E%87/</link>
        <description>Recent content in 工具效率 on 文艺技术笔记</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <copyright>文艺技术笔记 | 软件工程师文艺</copyright>
        <lastBuildDate>Fri, 05 Jun 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://wenyiblog.top/categories/%E5%B7%A5%E5%85%B7%E6%95%88%E7%8E%87/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>开发环境搭建与 10 个常见避坑指南</title>
        <link>https://wenyiblog.top/2026/06/tc-10-env-setup-pitfalls/</link>
        <pubDate>Fri, 05 Jun 2026 10:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/06/tc-10-env-setup-pitfalls/</guid>
        <description>&lt;p&gt;Teamcenter 开发环境搭建涉及多个组件，配置繁琐且容易出错。本文总结环境搭建步骤与 10 个常见坑。&lt;/p&gt;
&lt;h2 id=&#34;开发环境组件清单&#34;&gt;&lt;a href=&#34;#%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e7%bb%84%e4%bb%b6%e6%b8%85%e5%8d%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;开发环境组件清单
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;组件&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;th&gt;版本建议&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Teamcenter Server&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;核心服务&lt;/td&gt;
&lt;td&gt;与企业生产环境保持一致&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BMIDE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;业务建模&lt;/td&gt;
&lt;td&gt;随 TC 安装包自带&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Visual Studio&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ITK C/C++ 编译&lt;/td&gt;
&lt;td&gt;VS2019/2022（企业版）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Eclipse&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;RAC 插件开发&lt;/td&gt;
&lt;td&gt;与 TC 版本匹配的 Eclipse 版本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;JDK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Java/SOA 开发&lt;/td&gt;
&lt;td&gt;JDK 11 或 17（根据 TC 版本）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Oracle/SQL Server&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;数据库&lt;/td&gt;
&lt;td&gt;企业生产环境镜像&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;环境搭建步骤&#34;&gt;&lt;a href=&#34;#%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;环境搭建步骤
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;安装 Teamcenter Server 并配置站点&lt;/li&gt;
&lt;li&gt;安装 BMIDE 并连接测试环境&lt;/li&gt;
&lt;li&gt;配置 Visual Studio 编译环境（设置 MSDEV_HOME）&lt;/li&gt;
&lt;li&gt;安装 Eclipse 并导入 TC RAC 插件项目&lt;/li&gt;
&lt;li&gt;配置 JDK 环境变量和 Teamcenter Java 库路径&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;-10-个常见避坑指南&#34;&gt;&lt;a href=&#34;#-10-%e4%b8%aa%e5%b8%b8%e8%a7%81%e9%81%bf%e5%9d%91%e6%8c%87%e5%8d%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;🔥 10 个常见避坑指南
&lt;/h2&gt;&lt;h3 id=&#34;1-编译时找不到头文件&#34;&gt;&lt;a href=&#34;#1-%e7%bc%96%e8%af%91%e6%97%b6%e6%89%be%e4%b8%8d%e5%88%b0%e5%a4%b4%e6%96%87%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;1. 编译时找不到头文件
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：&lt;code&gt;%TC_ROOT%\include&lt;/code&gt; 未加入编译器 Include 路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：在 VS 项目属性中添加 &lt;code&gt;$(TC_ROOT)\include&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-链接时找不到库文件&#34;&gt;&lt;a href=&#34;#2-%e9%93%be%e6%8e%a5%e6%97%b6%e6%89%be%e4%b8%8d%e5%88%b0%e5%ba%93%e6%96%87%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;2. 链接时找不到库文件
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：未链接正确的 ITK 静态库&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：使用 &lt;code&gt;linkitk&lt;/code&gt; 命令而非直接调用 link&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-部署后新属性不显示&#34;&gt;&lt;a href=&#34;#3-%e9%83%a8%e7%bd%b2%e5%90%8e%e6%96%b0%e5%b1%9e%e6%80%a7%e4%b8%8d%e6%98%be%e7%a4%ba&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3. 部署后新属性不显示
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：未更新 XML Rendering Stylesheet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：在 BMIDE 中更新样式表并重新部署&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;4-internal-itk-导致服务崩溃&#34;&gt;&lt;a href=&#34;#4-internal-itk-%e5%af%bc%e8%87%b4%e6%9c%8d%e5%8a%a1%e5%b4%a9%e6%ba%83&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4. Internal ITK 导致服务崩溃
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：回调函数中发生未捕获异常&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：所有 ITK 函数必须返回 ITK_ok 或具体错误码，不能抛出异常&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;5-soa-连接被拒绝&#34;&gt;&lt;a href=&#34;#5-soa-%e8%bf%9e%e6%8e%a5%e8%a2%ab%e6%8b%92%e7%bb%9d&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5. SOA 连接被拒绝
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：J2EE 服务未启动或端口被防火墙拦截&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：检查 &lt;code&gt;tcserver&lt;/code&gt; 进程状态，确认 7001 端口可访问&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;6-cico-签出后无法签入&#34;&gt;&lt;a href=&#34;#6-cico-%e7%ad%be%e5%87%ba%e5%90%8e%e6%97%a0%e6%b3%95%e7%ad%be%e5%85%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;6. CICO 签出后无法签入
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：文件被其他进程占用或网络中断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：关闭所有占用文件的程序，使用&amp;quot;强制签入&amp;quot;（需管理员权限）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;7-bmide-部署卡住&#34;&gt;&lt;a href=&#34;#7-bmide-%e9%83%a8%e7%bd%b2%e5%8d%a1%e4%bd%8f&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;7. BMIDE 部署卡住
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：数据库连接池耗尽或 TAO 服务异常&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：重启 BMIDE，检查数据库连接数&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;8-查询返回空结果&#34;&gt;&lt;a href=&#34;#8-%e6%9f%a5%e8%af%a2%e8%bf%94%e5%9b%9e%e7%a9%ba%e7%bb%93%e6%9e%9c&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;8. 查询返回空结果
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：查询条件错误或用户权限不足&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：先用 infodba 账号测试查询，确认数据存在且权限正确&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;9-rac-插件不加载&#34;&gt;&lt;a href=&#34;#9-rac-%e6%8f%92%e4%bb%b6%e4%b8%8d%e5%8a%a0%e8%bd%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;9. RAC 插件不加载
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：plugin.xml 配置错误或 Bundle 版本冲突&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：检查 Eclipse Error Log，确认 plugin.xml 中的 extension 点正确&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;10-生产环境与测试环境不一致&#34;&gt;&lt;a href=&#34;#10-%e7%94%9f%e4%ba%a7%e7%8e%af%e5%a2%83%e4%b8%8e%e6%b5%8b%e8%af%95%e7%8e%af%e5%a2%83%e4%b8%8d%e4%b8%80%e8%87%b4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;10. 生产环境与测试环境不一致
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原因&lt;/strong&gt;：BMIDE 扩展未同步部署到生产环境&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;解决&lt;/strong&gt;：建立严格的变更管理流程，测试通过后再部署&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 建议：开发环境与生产环境尽量保持版本和配置一致，避免&amp;quot;在我机器上能跑&amp;quot;的问题。&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>用户界面与日常操作：签入签出与 3D 可视化</title>
        <link>https://wenyiblog.top/2026/06/tc-4-user-operations/</link>
        <pubDate>Fri, 05 Jun 2026 10:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/06/tc-4-user-operations/</guid>
        <description>&lt;p&gt;掌握 Teamcenter 的日常操作是高效使用 PLM 系统的基础。本文详解&amp;quot;我的 Teamcenter&amp;quot;界面、签入签出机制及 3D 可视化功能。&lt;/p&gt;
&lt;h2 id=&#34;我的-teamcenter-界面&#34;&gt;&lt;a href=&#34;#%e6%88%91%e7%9a%84-teamcenter-%e7%95%8c%e9%9d%a2&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;&amp;ldquo;我的 Teamcenter&amp;rdquo; 界面
&lt;/h2&gt;&lt;p&gt;&amp;ldquo;我的 Teamcenter&amp;rdquo; 是用户最频繁使用的界面，用于组织个人的产品数据、创建对象、签入/签出数据、执行任务等。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;区域&lt;/th&gt;
&lt;th&gt;描述&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;菜单栏&lt;/td&gt;
&lt;td&gt;包含窗口工作区域中正在运行的应用程序的下拉菜单&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;工具栏&lt;/td&gt;
&lt;td&gt;提供对常用菜单命令的快速访问（软终止、剪切、复制、粘贴等）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;应用程序标题&lt;/td&gt;
&lt;td&gt;显示用户 ID、指定的组、角色和所连接的数据库&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;工作空间&lt;/td&gt;
&lt;td&gt;用于存放用户经常访问的数据&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;状态显示区&lt;/td&gt;
&lt;td&gt;在&amp;quot;我的导航器&amp;quot;窗口左下角显示与状态相关的图标和信息&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;创建-item-与数据集&#34;&gt;&lt;a href=&#34;#%e5%88%9b%e5%bb%ba-item-%e4%b8%8e%e6%95%b0%e6%8d%ae%e9%9b%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;创建 Item 与数据集
&lt;/h2&gt;&lt;h3 id=&#34;创建-item-步骤&#34;&gt;&lt;a href=&#34;#%e5%88%9b%e5%bb%ba-item-%e6%ad%a5%e9%aa%a4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;创建 Item 步骤
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;选中要存放的文件夹，点击&lt;strong&gt;文件 → 新建 → 零组件&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;选择零组件类型（不同的零组件类型有不同的属性）&lt;/li&gt;
&lt;li&gt;填写必填数据：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Item ID&lt;/strong&gt; — 唯一标识，32 位&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rev&lt;/strong&gt; — 版本号，对于一个 Item 也是唯一的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Name&lt;/strong&gt; — 简单描述，32 位&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Description&lt;/strong&gt; — 详细描述，240 位&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;创建数据集&#34;&gt;&lt;a href=&#34;#%e5%88%9b%e5%bb%ba%e6%95%b0%e6%8d%ae%e9%9b%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;创建数据集
&lt;/h3&gt;&lt;p&gt;点击&lt;strong&gt;文件 → 新建 → 数据集&lt;/strong&gt;。数据集用于管理实际的文件（如 Word 文档、PDF、3D 模型等）。数据集版本自动管理：修改数据文件后版本自动升级，但版本 0 永远表示最新版本。&lt;/p&gt;
&lt;h2 id=&#34;签入签出cico机制&#34;&gt;&lt;a href=&#34;#%e7%ad%be%e5%85%a5%e7%ad%be%e5%87%bacico%e6%9c%ba%e5%88%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;签入签出（CICO）机制
&lt;/h2&gt;&lt;p&gt;签出和签入是为了确保在同一时刻只有一个人可以更新数据库的对象：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方式&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;隐型签出（自动）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;打开数据集修改的时候系统自动执行，退出应用程序时自动签入&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;显型签出（手动）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;防止其他人员修改数据集，只有签出的用户有写权限，其他人只能读&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;可视化功能2d3d&#34;&gt;&lt;a href=&#34;#%e5%8f%af%e8%a7%86%e5%8c%96%e5%8a%9f%e8%83%bd2d3d&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;可视化功能（2D/3D）
&lt;/h2&gt;&lt;p&gt;Teamcenter 使用 &lt;strong&gt;JT（JPEG Triangulation）&lt;/strong&gt; 格式作为轻量化的三维可视化技术：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;功能&lt;/th&gt;
&lt;th&gt;描述&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;测量&lt;/td&gt;
&lt;td&gt;测量零件上的特征，或测量不同零件之间的距离&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3D 剖切&lt;/td&gt;
&lt;td&gt;创建剖面，展示特征和零件内部结构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;间隙分析&lt;/td&gt;
&lt;td&gt;决定零件之间是否达到最小间隙要求&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PMI&lt;/td&gt;
&lt;td&gt;查看焊点、公差、表面粗糙度等产品制造信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3D 批注&lt;/td&gt;
&lt;td&gt;为 3D DirectModel 数据集添加图形/文字注释&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
</description>
        </item>
        <item>
        <title>Hugo &#43; NGINX 自动化部署脚本：一行命令发布博客</title>
        <link>https://wenyiblog.top/2026/06/hugo-auto-deploy-script/</link>
        <pubDate>Wed, 03 Jun 2026 18:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/06/hugo-auto-deploy-script/</guid>
        <description>&lt;h2 id=&#34;痛点&#34;&gt;&lt;a href=&#34;#%e7%97%9b%e7%82%b9&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;痛点
&lt;/h2&gt;&lt;p&gt;每次写完文章都要手动执行：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;hugo&lt;/code&gt; 构建&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scp -r public/* user@server:/var/www/html/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;清理缓存&lt;/li&gt;
&lt;li&gt;检查线上是否正常&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;太麻烦了，写成脚本一行搞定。&lt;/p&gt;
&lt;h2 id=&#34;部署脚本&#34;&gt;&lt;a href=&#34;#%e9%83%a8%e7%bd%b2%e8%84%9a%e6%9c%ac&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;部署脚本
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🚀 开始部署博客...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 1. 构建&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;📦 构建站点...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo --minify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 2. 同步到服务器（rsync 增量传输，比 scp 快）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;📡 同步到服务器...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rsync -avz --delete public/ ubuntu@server:/var/www/html/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 3. 清理 NGINX 缓存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;🧹 清理缓存...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh ubuntu@server &lt;span class=&#34;s2&#34;&gt;&amp;#34;sudo nginx -s reload&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;✅ 部署完成！访问 https://wenyiblog.top/ 查看&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;效率对比&#34;&gt;&lt;a href=&#34;#%e6%95%88%e7%8e%87%e5%af%b9%e6%af%94&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;效率对比
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;方式&lt;/th&gt;
&lt;th&gt;耗时&lt;/th&gt;
&lt;th&gt;出错率&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;手动&lt;/td&gt;
&lt;td&gt;~2 分钟&lt;/td&gt;
&lt;td&gt;中等&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;脚本&lt;/td&gt;
&lt;td&gt;~15 秒&lt;/td&gt;
&lt;td&gt;几乎为零&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;进阶方案&#34;&gt;&lt;a href=&#34;#%e8%bf%9b%e9%98%b6%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;进阶方案
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;：push 自动部署&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webhook&lt;/strong&gt;：本地写完触发远程构建&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定时监控&lt;/strong&gt;：Cron 每天检查站点可用性&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;💾 脚本已放到 Gitee，可直接 fork 使用。&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
