-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlocal-search.xml
95 lines (45 loc) · 41.5 KB
/
local-search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>test</title>
<link href="/202405/test/"/>
<url>/202405/test/</url>
<content type="html"><![CDATA[<p>test</p>]]></content>
</entry>
<entry>
<title>Hexo博客搭建与个性化定制指南</title>
<link href="/202405/Hexo%E8%B8%A9%E5%9D%91%E7%AC%94%E8%AE%B0/"/>
<url>/202405/Hexo%E8%B8%A9%E5%9D%91%E7%AC%94%E8%AE%B0/</url>
<content type="html"><![CDATA[<h3 id="1-什么是-Hexo?"><a href="#1-什么是-Hexo?" class="headerlink" title="1.什么是 Hexo?"></a>1.什么是 Hexo?</h3><p>Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 <a href="http://daringfireball.net/projects/markdown/">Markdown</a>(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。</p><h3 id="2-为什么使用Hexo?"><a href="#2-为什么使用Hexo?" class="headerlink" title="2.为什么使用Hexo?"></a>2.为什么使用Hexo?</h3><p>完全免费;静态站点,轻量快速;可按需求自由定制改造;托管在 GitHub,安全省心;迁移方便。</p><h3 id="3-部署准备工作"><a href="#3-部署准备工作" class="headerlink" title="3.部署准备工作"></a>3.部署准备工作</h3><h4 id="3-1-安装依赖"><a href="#3-1-安装依赖" class="headerlink" title="3.1.安装依赖"></a>3.1.安装依赖</h4><ul><li><a href="http://nodejs.org/">Node.js</a> (Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本)</li><li><a href="http://git-scm.com/">Git</a></li></ul><p>如果您的电脑中已经安装上述必备程序,那么恭喜您!你可以直接前往下一步骤。</p><p>如果您的电脑中尚未安装所需要的程序,请根据以下安装指示完成安装。</p><h5 id="3-1-1-安装-Git"><a href="#3-1-1-安装-Git" class="headerlink" title="3.1.1.安装 Git"></a>3.1.1.安装 Git</h5><p>前往<a href="https://git-scm.com/download/win">git官网</a>下载并安装。但本人实测了官网下载速度实在太慢,推荐使用镜像下载站下载<a href="https://mirrors.sdu.edu.cn/github-release/git-for-windows_git/">山东大学镜像下载站</a>,感谢山东大学。</p><h5 id="3-1-2-安装-Node-js"><a href="#3-1-2-安装-Node-js" class="headerlink" title="3.1.2.安装 Node.js"></a>3.1.2.安装 Node.js</h5><p>前往<a href="https://nodejs.org/zh-cn/download/">Node.js官网</a>下载并安装。附送<a href="https://npmmirror.com/mirrors/node/">淘宝 Node.js 镜像</a>下载链接。</p><p>另外如果不想因为npm安装让C盘变红最好跟着下面这篇博客设置一下【node_global】和【node_cache】的环境变量。<a href="https://blog.csdn.net/WHF__/article/details/129362462">Node.js下载安装及环境配置教程【超详细】_nodejs下载-CSDN博客</a></p><h4 id="3-2-创建-Github-Pages-仓库"><a href="#3-2-创建-Github-Pages-仓库" class="headerlink" title="3.2.创建 Github Pages 仓库"></a>3.2.创建 Github Pages 仓库</h4><p>连接 Github</p><p>使用邮箱注册 <a href="https://github.com/">GitHub</a> 账户,选择免费账户(Free),并完成邮件验证。</p><p>右键 -> Git Bash Here,<strong>设置用户名和邮箱</strong>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">git config --global user.name <span class="hljs-string">"GitHub 用户名"</span><br>git config --global user.email <span class="hljs-string">"GitHub 邮箱"</span><br></code></pre></td></tr></table></figure><p><strong>创建 SSH 密匙</strong>:</p><p>输入 <code>ssh-keygen -t rsa -C "GitHub 邮箱"</code>,然后一路回车。</p><p><strong>添加密匙:</strong></p><p>进入 [C:\Users\用户名.ssh] 目录(要勾选显示“隐藏的项目”),用记事本打开公钥 id_rsa.pub 文件并复制里面的内容。</p><p>登陆 GitHub ,进入 Settings 页面,选择左边栏的 SSH and GPG keys,点击 New SSH key。</p><p>Title 随便取个名字,粘贴复制的 id_rsa.pub 内容到 Key 中,点击 Add SSH key 完成添加。</p><p><strong>验证连接:</strong></p><p>打开 Git Bash,输入 <code>ssh -T [email protected]</code> ,显示 “Hi xxx! You’ve successfully……” 即连接成功。</p><p>GitHub 主页右上角加号 -> New repository:</p><ul><li>Repository name 中输入 <code>用户名.github.io</code></li><li>勾选 “Initialize this repository with a README”</li><li>Description 选填</li></ul><p>填好后点击 Create repository 创建。</p><h3 id="4-部署-Hexo-到-GitHub-Pages"><a href="#4-部署-Hexo-到-GitHub-Pages" class="headerlink" title="4.部署 Hexo 到 GitHub Pages"></a>4.部署 Hexo 到 GitHub Pages</h3><p>所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">$ npm install -g hexo-cli<br></code></pre></td></tr></table></figure><p>安装以后,可以使用以下两种方式执行 Hexo:</p><ol><li><code>npx hexo <command></code></li><li>Linux 用户可以将 Hexo 所在的目录下的 <code>node_modules</code> 添加到环境变量之中即可直接使用 <code>hexo <command></code>:</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">echo</span> <span class="hljs-string">'PATH="$PATH:./node_modules/.bin"'</span> >> ~/.profile<br></code></pre></td></tr></table></figure><p>新建hexo工作目录<code>MyBlogCode</code>,右击打开git bash,初始化运行Hexo</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cd</span> E:\MyBlogCode<br>hexo init <span class="hljs-comment"># 初始化</span><br>npm install <span class="hljs-comment"># 安装组件</span><br></code></pre></td></tr></table></figure><p>完成后依次输入下面命令,<strong>启动本地服务器进行预览</strong>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">hexo g <span class="hljs-comment"># 生成页面</span><br>hexo s <span class="hljs-comment"># 启动预览</span><br></code></pre></td></tr></table></figure><p><strong>访问</strong> <code>http://localhost:4000</code><strong>,出现 Hexo 默认页面,本地博客安装成功!</strong></p><p><strong>Tips:</strong>如果出现页面加载不出来,可能是端口被占用了。Ctrl+C 关闭服务器,运行 <code>hexo server -p 5000</code> 更改端口号后重试。</p><p>本地博客测试成功后,就是上传到 GitHub 进行部署,使其能够在网络上访问。</p><p>首先<strong>安装 hexo-deployer-git</strong>:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">npm install hexo-deployer-git --save<br></code></pre></td></tr></table></figure><p>然后<strong>修改 _config.yml</strong> 文件末尾的 Deployment 部分,修改成如下:</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs yml"><span class="hljs-attr">deploy:</span><br> <span class="hljs-attr">type:</span> <span class="hljs-string">git</span><br> <span class="hljs-attr">repository:</span> <span class="hljs-string">[email protected]:用户名/用户名.github.io.git</span><br> <span class="hljs-attr">branch:</span> <span class="hljs-string">main</span><br></code></pre></td></tr></table></figure><p>完成后运行 <code>hexo d</code> 将网站上传部署到 GitHub Pages。</p><p>完成!这时访问我们的 GitHub 域名 <code>https://用户名.github.io</code> 就可以看到 Hexo 网站了。</p><h3 id="5-绑定域名"><a href="#5-绑定域名" class="headerlink" title="5.绑定域名"></a>5.绑定域名</h3><p>博客搭建完成使用的是 GitHub 的子域名(<code>"GitHub 用户名".github.io</code>),我们可以为 Hexo 博客绑定自己的域名替换 GitHub 域名,更加个性化和专业,也利于SEO。</p><p>用<a href="https://www.cloudflare.com/zh-cn/">Cloudflare</a>添加我们需要托管的域名,网站–域名–DNS–添加记录,类型我们选择<code>CNAME</code>,主机名我直接填的是<code>@</code>,目标填写<code>"GitHub 用户名".github.io</code>,同时让Cloudflare帮我们代理一下,自动加上Cloudflare Origin CA 证书认证。</p><p>回到github pages的项目地址,进入Settings-Pages-Custom domain,填写域名,点击save,静静等待DNS验证。此时你会发现在项目根目录下多出来一个名为CNAME的文件,里面填写了你的域名,且文件没有后缀。</p><p>DNS验证通过后就可以使用自己的域名访问 Hexo 博客了。</p><h3 id="6-开始使用"><a href="#6-开始使用" class="headerlink" title="6.开始使用"></a>6.开始使用</h3><p>进入博客所在目录,右键打开 Git Bash Here,创建博文:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">hexo new <span class="hljs-string">"My New Post"</span><br></code></pre></td></tr></table></figure><p>然后 source_posts 文件夹中会出现一个 My New Post.md 文件,就可以使用 Markdown 编辑器在该文件中撰写文章了。</p><p>写完后运行下面代码将文章渲染并部署到 GitHub Pages 上完成发布。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">hexo g -d <span class="hljs-comment"># 生成页面并部署发布</span><br></code></pre></td></tr></table></figure><hr><p>也可以不使用命令自己创建 .md 文件,只需在文件开头手动加入如下格式 Front-matter 即可,写完后运行 <code>hexo g</code> 和 <code>hexo d</code> 发布。</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><code class="hljs markdown">---<br>title: Hello World # 标题<br>date: 2019/3/26 hh:mm:ss # 时间<br>categories: # 分类<br><span class="hljs-bullet">-</span> Diary<br>tags: # 标签<br><span class="hljs-bullet">-</span> PS3<br><span class="hljs-section">- Games</span><br><span class="hljs-section">---</span><br><br>摘要<br><!--more--><br>正文<br></code></pre></td></tr></table></figure><h3 id="7-网站设置"><a href="#7-网站设置" class="headerlink" title="7.网站设置"></a>7.网站设置</h3><p>包括网站名称、描述、作者、链接样式等,全部在网站目录下的 _config.yml 文件中,参考<a href="https://hexo.io/zh-cn/docs/configuration">官方文档</a>按需要编辑。</p><p>注意:冒号后要加一个空格!</p><h3 id="8-更换主题"><a href="#8-更换主题" class="headerlink" title="8.更换主题"></a>8.更换主题</h3><p>在 <a href="https://hexo.io/themes/">Themes | Hexo</a> 选择一个喜欢的主题,比如 <a href="https://xaoxuu.com/wiki/stellar/">Stellar</a>,进入博客目录打开 Git Bash Here 下载主题:</p><h4 id="8-1-安装方法"><a href="#8-1-安装方法" class="headerlink" title="8.1.安装方法"></a>8.1.安装方法</h4><ol><li>打开终端并进入博客文件夹,执行:<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">npm i hexo-theme-stellar<br></code></pre></td></tr></table></figure></li><li>在 <code>MyBlogCode/_config.yml</code> 文件中找到并修改:</li></ol><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs yml"><span class="hljs-attr">theme:</span> <span class="hljs-string">stellar</span><br></code></pre></td></tr></table></figure><h4 id="8-2-更新方法"><a href="#8-2-更新方法" class="headerlink" title="8.2.更新方法"></a>8.2.更新方法</h4><ol><li>打开终端并进入博客文件夹,执行:</li></ol><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">npm i hexo-theme-stellar<br></code></pre></td></tr></table></figure><ol start="2"><li>阅读 <a href="https://github.com/xaoxuu/hexo-theme-stellar/releases">更新日志</a> 进行迁移操作。</li></ol><h3 id="9-常用命令"><a href="#9-常用命令" class="headerlink" title="9.常用命令"></a>9.常用命令</h3><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs text">hexo new "name" # 新建文章<br>hexo new page "name" # 新建页面<br>hexo g # 生成页面<br>hexo d # 部署<br>hexo g -d # 生成页面并部署<br>hexo s # 本地预览<br>hexo clean # 清除缓存和已生成的静态文件<br>hexo help # 帮助<br></code></pre></td></tr></table></figure><h3 id="10-遇到的问题"><a href="#10-遇到的问题" class="headerlink" title="10.遇到的问题"></a>10.遇到的问题</h3><h4 id="10-1-Hexo发布到Github丢失readme和CNAME解决方案"><a href="#10-1-Hexo发布到Github丢失readme和CNAME解决方案" class="headerlink" title="10.1 Hexo发布到Github丢失readme和CNAME解决方案"></a>10.1 Hexo发布到Github丢失readme和CNAME解决方案</h4><p>方法一(推荐):将需要上传至github的内容放在source文件夹,例如CNAME、README.md、favicon.ico、images等,这样在 hexo d 之后就不会被删除了。</p><p>方法二:安装插件实现永久保留。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">npm install hexo-generator-cname --save <span class="hljs-comment">#安装此插件实现</span><br></code></pre></td></tr></table></figure><p>之后在_config.yml中添加一条</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs yml"><span class="hljs-attr">Plugins:</span> <br> <span class="hljs-bullet">-</span> <span class="hljs-string">hexo-generator-cname</span><br></code></pre></td></tr></table></figure><p><strong>需要注意的是:如果是在github上建立的CNAME文件,需要先clone到本地,然后安装插件,再deploy到GitHub Pages上即可。CNAME只允许一个域名地址。</strong></p><h4 id="10-2-添加及正确显示README-md文件"><a href="#10-2-添加及正确显示README-md文件" class="headerlink" title="10.2 添加及正确显示README.md文件"></a>10.2 添加及正确显示README.md文件</h4><p>在source文件夹中新建README.md,再使用<code>hexo g</code>以及<code>hexo d</code>生成并部署后会发现GitHub.io仓库下的README.md文件变成了以.html结尾的文件。</p><p>变成html原因是当我们执行<code>hexo g</code>以及<code>hexo d</code>指令时md文件会被转换为html文件并被存放在public文件夹内,最后在提交到github.io项目下。为了让md文件格式不转换为html,可以在<strong>根目录</strong>下<code>_config.yml</code>配置文件中的<code>skip_render</code> 关键字后面添加README.md,让解释器跳过渲染即可</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs yml"><span class="hljs-attr">skip_render:</span> <br> <span class="hljs-bullet">-</span> <span class="hljs-string">README.md</span> <span class="hljs-comment">#让解释器跳过这些文件渲染</span><br></code></pre></td></tr></table></figure>]]></content>
<categories>
<category>学习笔记</category>
</categories>
<tags>
<tag>Hexo</tag>
</tags>
</entry>
<entry>
<title>河南视频网关运维之Windows篇</title>
<link href="/202405/%E6%B2%B3%E5%8D%97%E8%A7%86%E9%A2%91%E7%BD%91%E5%85%B3%E8%BF%90%E7%BB%B4%E4%B9%8BWindows%E7%AF%87/"/>
<url>/202405/%E6%B2%B3%E5%8D%97%E8%A7%86%E9%A2%91%E7%BD%91%E5%85%B3%E8%BF%90%E7%BB%B4%E4%B9%8BWindows%E7%AF%87/</url>
<content type="html"><![CDATA[<p>准备工作</p><h4 id="1-加入微盘"><a href="#1-加入微盘" class="headerlink" title="1. 加入微盘"></a>1. 加入微盘</h4><p>登录企业微信,收到邀请进入微盘,微盘-共享-视频事业部-运维组,这里是部门运维组整理的所有工作相关文件,可随时上传、下载、更新文件,方便小伙伴们跨平台、跨设备的实时处理工作内容与文件。</p><h4 id="2-获取服务器远程信息"><a href="#2-获取服务器远程信息" class="headerlink" title="2. 获取服务器远程信息"></a>2. 获取服务器远程信息</h4><p>视频转码上云网关在河南的各个路公司处,Windows网关的远程方式有两种,一种是依赖外网远程工具远程,如todesk、向日葵等;另一种是进入内网环境后使用Windows自带功能[远程桌面连接(mstsc)](<a href="https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/mstsc">mstsc | Microsoft Learn</a>)远程。</p><p>远程信息已保存在微盘中:视频事业部-运维-河南-网关-河南网关远程信息表.xlsx,里面记录了向日葵和todesk的设备码和远程密码。这里推荐使用<code>todesk</code>作为主要远程连接工具,可酌情保存一份远程配置文件在todesk上随时远程使用。</p><p><img src="https://images.tttrove.top/file/5dec5d2e13ad57f41d49d.png" alt="image-20240501142120086"></p><h4 id="3-获取运维的摄像机信息"><a href="#3-获取运维的摄像机信息" class="headerlink" title="3. 获取运维的摄像机信息"></a>3. 获取运维的摄像机信息</h4><p>转码网关摄像机数据文件地址:<code>C:\GDTS\CoderTransferControl\system.db</code>,默认使用Database4.exe打开,打开后查询表名CameraInfo。</p><p>已经导入的摄像机数据我们备份在了微盘,路径为:视频事业部-运维-河南-网关-河南高速公路公司-路段单位,另外还包含了路由信息和网卡信息。</p><p>路由信息:设置摄像机IP的网络段自定义指向一个网关路由,若不可抗因素导致路由信息丢失,则摄像机与转码上云网关链路断开,拉流取不到视频流。</p><p>网卡信息:记录了静态内网地址。若外网网络不通,可进入路公司内网后通过内网地址远程转码网关。</p><h3 id="1-主控程序"><a href="#1-主控程序" class="headerlink" title="1. 主控程序"></a>1. 主控程序</h3><p>程序路径:<code>C:\GDTS\CoderTransferControl\</code></p><p>主控程序本体:<code>CoderTransferControl.exe</code></p><p>配置文件:<code>C:\GDTS\CoderTransferControl\config.ini</code>,配置转码路数、转码进程个数和设备端口号</p><h3 id="2-转码程序"><a href="#2-转码程序" class="headerlink" title="2. 转码程序"></a>2. 转码程序</h3><h4 id="2-1-标清转码"><a href="#2-1-标清转码" class="headerlink" title="2.1. 标清转码"></a>2.1. 标清转码</h4><p>河南转码网关使用海康GPU转码卡,最多支持转码路数为704x576分辨率视频输出同时转码200路。GPU有四个转码芯片,标清704x576分辨率转码程序工作在本机7777、7778、7779和7780端口</p><p>程序路径:<code>C:\GDTS\TransCodingServerA、TransCodingServerB、TransCodingServerC、TransCodingServerD</code></p><h4 id="2-2-高清转码"><a href="#2-2-高清转码" class="headerlink" title="2.2. 高清转码"></a>2.2. 高清转码</h4><p>高清1920x1080分辨率由cpu转码,工作在7781端口。</p><p>程序路径:<code>C:\GDTS\TransCodingServerE</code><br>保证主控<code>CoderTransferControl.exe</code>和转码<code>TransCodingServer{A..E}.exe</code>的运行</p><h3 id="3-守护进程"><a href="#3-守护进程" class="headerlink" title="3.守护进程"></a>3.守护进程</h3><p>当主控和转码因不可抗因素停止工作后,可由守护进程自动拉起。</p><p>主控守护进程文件名:<code>blrun_control.exe</code></p><p>转码守护进程文件名:<code>blrunA.exe</code>、<code>blrunB.exe</code>、<code>blrunC.exe</code>、<code>blrunD.exe</code>、<code>blrunD.exe</code>。</p><p>守护进程配置文件:<code>run.ini</code></p><h3 id="4-运维排查"><a href="#4-运维排查" class="headerlink" title="4.运维排查"></a>4.运维排查</h3><p>必备工具:</p><ul><li>VLC media player:rtsp流地址测试工具</li><li>Dbgview.exe:线程信息查看工具</li><li>Database4.exe:数据库查看工具</li><li>PingInfoView:批量ping工具</li></ul><p>运行bat脚本后程序会单路自动下发推流,打开<code>Dbgview.exe</code>查看已推流个数</p><p>启动或重启转码可以参考使用<code>C:\GDTS\重启转码程序.bat</code></p><p><code>Dbgview.exe</code>的使用<br>筛选include填写 <code>ip:</code> 查看推流个数<br>筛选include填写摄像机编号,一般是uuid,查看当前转码所在端口或转码进程<br><strong>注意:当出现该条数据无效,丢弃[摄像机编号]的特殊情况,若为最新版本的transCodingServer,需要与研发及时沟通,并在问题定位后方可重启转码</strong></p><p>日志路径<code>C:\GDTS\TransCodingServer{A..E}\gdinfo.log</code><br>日志检索摄像机编号可查看转码信息</p>]]></content>
<categories>
<category>工作笔记</category>
</categories>
<tags>
<tag>运维</tag>
</tags>
</entry>
<entry>
<title>河南视频网关运维之Linux篇</title>
<link href="/202404/%E6%B2%B3%E5%8D%97%E8%A7%86%E9%A2%91%E7%BD%91%E5%85%B3%E8%BF%90%E7%BB%B4%E4%B9%8BLinux%E7%AF%87/"/>
<url>/202404/%E6%B2%B3%E5%8D%97%E8%A7%86%E9%A2%91%E7%BD%91%E5%85%B3%E8%BF%90%E7%BB%B4%E4%B9%8BLinux%E7%AF%87/</url>
<content type="html"><![CDATA[<h3 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h3><h4 id="1-加入微盘"><a href="#1-加入微盘" class="headerlink" title="1. 加入微盘"></a>1. 加入微盘</h4><p>登录企业微信,收到邀请进入微盘,微盘-共享-视频事业部-运维组,这里是部门运维组整理的所有工作相关文件,可随时上传、下载、更新文件,方便小伙伴们跨平台、跨设备的实时处理工作内容与文件。</p><h4 id="2-获取服务器远程信息"><a href="#2-获取服务器远程信息" class="headerlink" title="2. 获取服务器远程信息"></a>2. 获取服务器远程信息</h4><p>视频转码上云网关在河南的各个路公司处,将ssh服务端口映射到公网后方可ssh远程。</p><p>远程信息已保存在微盘中:视频事业部-运维-河南-网关-河南网关远程信息表.xlsx。这里推荐使用<code>xshell</code>作为远程连接工具,可酌情保存一份远程配置文件在xshell上随时远程使用。</p><p><img src="https://images.tttrove.top/file/5dec5d2e13ad57f41d49d.png" alt="image-20240501142120086"></p><h4 id="3-获取运维的摄像机信息"><a href="#3-获取运维的摄像机信息" class="headerlink" title="3. 获取运维的摄像机信息"></a>3. 获取运维的摄像机信息</h4><p>网关上都安装了mysql数据库,登录网关配置中心可以找到对应的路公司网关,从网关配置中心导入摄像机信息表,再由网关的主控程序处理数据同步网关数据库。</p><p>已经导入的摄像机数据我们备份在了微盘,路径为:视频事业部-运维-河南-网关-河南高速公路公司-路段单位,另外还包含了路由信息和网卡信息。</p><p>路由信息:设置摄像机IP的网络段自定义指向一个网关路由,若不可抗因素导致路由信息丢失,则摄像机与转码上云网关链路断开,拉流取不到视频流。</p><p>网卡信息:记录了静态内网地址。若外网网络不通,可进入路公司内网后通过内网地址远程转码网关。</p><h3 id="1-主控程序"><a href="#1-主控程序" class="headerlink" title="1. 主控程序"></a>1. 主控程序</h3><p>作用:为高速公路视频云联网平台提供对接服务,接受并处理在云平台上的标清下发推流请求和高清点播请求,将请求传递给转码程序处理</p><p>文件所在路径:<code>/opt/WebConfig/mastercontrolserver</code></p><p>寻找运行路径:<code>cd "$(pwdx $(pgrep -f 'java -jar') | awk '{print $2}')"&&ls</code></p><p>运行日志路径:<code>/opt/WebConfig/mastercontrolserver/logs/mastercontrolserver/</code></p><p>内含三个日志等级:info、warn和error</p><h3 id="2-转码程序"><a href="#2-转码程序" class="headerlink" title="2. 转码程序"></a>2. 转码程序</h3><p>作用:拉流、转码、推流</p><p>有的转码程序版本将标清和高清的转码工作分开,标清通过GPU专用转码卡转码,高清用CPU进行转码。</p><h4 id="2-1-标清转码"><a href="#2-1-标清转码" class="headerlink" title="2.1. 标清转码"></a>2.1. 标清转码</h4><p>作用:调用GPU,为标清视频提供长推流服务</p><p>文件所在路径:<code>/opt/runGWS</code></p><p>运行日志同上,做了100份日志文件轮询,当前运行日志的文件是GWS.log</p><p>寻找运行路径:<code>cd "$(pwdx $(pgrep -f './GWS') | awk '{print $2}')"&&ls</code></p><h4 id="2-2-高清转码"><a href="#2-2-高清转码" class="headerlink" title="2.2. 高清转码"></a>2.2. 高清转码</h4><p>作用:调用CPU,为高清视频提供点播推流服务</p><p>文件所在路径:<code>/opt/runGWS_CPU</code></p><p>运行日志同上,做了100份日志文件轮询,当前运行日志的文件是GWS.log</p><h3 id="3-守护进程"><a href="#3-守护进程" class="headerlink" title="3. 守护进程"></a>3. 守护进程</h3><p>主要任务是保证每台网关的三个程序正常运行:</p><ul><li>主控程序 <code>mastercontrolserver</code></li><li>转码程序 <code>GWS</code></li><li>高清转码 <code>HDCPU</code></li></ul><p>为避免程序崩溃后转码停止服务,我们设置了三个守护进程来复启动转码服务,从而达到自动化运维的目的。分别是 <code>guard_master.sh</code>,<code>guard_hik.sh</code> 和 <code>guard_cpu.sh</code></p><p>查看进程:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><code class="hljs bash">ps -ef | grep -e <span class="hljs-string">'guard'</span> -e <span class="hljs-string">'java -jar'</span> -e <span class="hljs-string">'./GWS'</span> | grep -v grep<br>root@hn-zhongyuan-suixian-spsygw-000001:~<span class="hljs-comment"># ps -ef | grep -e 'guard' -e 'java -jar' -e './GWS' | grep -v grep</span><br>root 2929 2896 0 2023 pts/2 00:06:41 /bin/sh ./guard_hik.sh<br>root 3105 3081 0 2023 pts/3 01:37:56 /bin/sh ./guard_master.sh<br>root 25108 25068 0 2023 pts/1 00:06:36 /bin/sh ./guard_cpu.sh<br>root 31805 3105 1 12:50 pts/3 00:00:56 java -jar mastercontrolserver-0.0.1.jar --spring.config.location=./application.properties<br>root 31878 2929 99 12:50 pts/2 01:46:01 ./GWS -a 2 -c 0 -p 0 -<span class="hljs-built_in">nl</span> -pl -hbst 1800<br><br></code></pre></td></tr></table></figure><h3 id="4-Tmux终端复用工具"><a href="#4-Tmux终端复用工具" class="headerlink" title="4. Tmux终端复用工具"></a>4. Tmux终端复用工具</h3><p>守护进程最好使用tmux打开窗口复用终端运行</p><p>查看已创建tmux窗口名称:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><code class="hljs bash">tmux <span class="hljs-built_in">ls</span><br>root@hn-zhongyuan-suixian-spsygw-000001:~<span class="hljs-comment"># tmux ls</span><br>GWS: 1 windows (created Fri Oct 20 08:05:22 2023) [205x35]<br>HDCPU: 1 windows (created Mon Oct 23 03:40:56 2023) [142x43]<br>MASTER: 1 windows (created Fri Oct 20 08:06:53 2023) [205x35]<br></code></pre></td></tr></table></figure><p>创建窗口,执行后自动进入复用终端</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">tmux new -s ‘窗口名称’<br></code></pre></td></tr></table></figure><p>如:<code>tmux new -s MASTER</code></p><p>进入终端后运行守护进程</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cd</span> /opt/WebConfig/mastercontrolserver<br>./guard_master.sh<br></code></pre></td></tr></table></figure><p>退出窗口:第一步按下 <code>ctrl + b</code> 第二步 按下 <code>d</code>(注意是小写)</p><p>进入已创建窗口:<code>tmux attach -t MASTER</code>,或 <code>tmux a -t MASTER</code></p><p>创建窗口并进入 <code>tmux new -s GWS</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-built_in">cd</span> /opt/runGWS<br>./guard_hik.sh<br></code></pre></td></tr></table></figure><p>进入复用窗口 <code>tmux a -t HDCPU</code></p><p>重启主控和GWS,等待出现GWS可在平台下发推流</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><code class="hljs bash">{<br><span class="hljs-built_in">cd</span> <span class="hljs-string">"<span class="hljs-subst">$(pwdx$(pgrep -f './GWS')</span> | awk '{print <span class="hljs-variable">$2</span>}')"</span><br>pkill -ef <span class="hljs-string">'java -jar'</span> && pkill -ef <span class="hljs-string">'./GWS'</span><br>pkill -ef <span class="hljs-string">'java -jar'</span> && pkill -ef <span class="hljs-string">'./GWS'</span><br>ps -ef | grep -e <span class="hljs-string">'java -jar'</span> -e <span class="hljs-string">'./GWS'</span> | grep -v grep<br><span class="hljs-built_in">tail</span> -f GWS.<span class="hljs-built_in">log</span><br>}<br></code></pre></td></tr></table></figure><h3 id="5-其他"><a href="#5-其他" class="headerlink" title="5. 其他"></a>5. 其他</h3><h4 id="5-5-开机自启设置(非常重要)"><a href="#5-5-开机自启设置(非常重要)" class="headerlink" title="5.5 开机自启设置(非常重要)"></a>5.5 开机自启设置(非常重要)</h4><p>开机自启脚本写在 <code>/etc/rc.local</code> 和 <code>/opt/start_env.sh</code>,由 <code>/etc/rc.local</code> 运行 <code>/opt/start_env.sh</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><code class="hljs bash">root@ubuntu_yudeng:/opt<span class="hljs-comment"># cat start_env.sh </span><br><span class="hljs-comment">#!/bin/bash</span><br>sudo timedatectl set-timezone <span class="hljs-string">'Asia/Shanghai'</span><br>ifconfig enp7s0 44.129.35.100/24<br><span class="hljs-built_in">cd</span> /home/GWS-deploy-hik/package/install/Hik/ko<br>sh load_ko.sh<br><br><span class="hljs-built_in">cd</span> /opt/runGWS<br><span class="hljs-built_in">rm</span> -f GWS.<span class="hljs-built_in">log</span>* error.log nohup.out<br><span class="hljs-built_in">chmod</span> 777 guard_hik.sh<br>./guard_hik.sh &<br><br><span class="hljs-built_in">cd</span> /opt/runGWS_CPU<br><span class="hljs-built_in">rm</span> -f GWS.<span class="hljs-built_in">log</span>* error.log nohup.out<br><span class="hljs-built_in">chmod</span> 777 guard_cpu.sh<br>./guard_cpu.sh &<br><br><span class="hljs-built_in">cd</span> /opt/runGWS_CPU_CIF<br><span class="hljs-built_in">rm</span> -f GWS.<span class="hljs-built_in">log</span>* error.log nohup.out<br><span class="hljs-built_in">chmod</span> 777 guard_cpu_cif.sh<br>./guard_cpu_cif.sh &<br><br><span class="hljs-built_in">cd</span> /opt/WebConfig/mastercontrolserver<br><span class="hljs-built_in">rm</span> -rf *.<span class="hljs-built_in">log</span> mastercontrolserver-0.0.1.out logs/<br><span class="hljs-built_in">chmod</span> 777 guard_master.sh<br>./guard_master.sh &<br><span class="hljs-built_in">cd</span> /opt/<br><br><span class="hljs-built_in">exit</span> 0<br></code></pre></td></tr></table></figure><h4 id="5-6-定时任务可选设置"><a href="#5-6-定时任务可选设置" class="headerlink" title="5.6 定时任务可选设置"></a>5.6 定时任务可选设置</h4><p>查看已设置定时任务:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">crontab -l<br></code></pre></td></tr></table></figure><p>编辑定时任务:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">crontab -e<br></code></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><code class="hljs bash"><span class="hljs-comment"># 每日凌晨3点50分杀掉转码程序,由守护进程重启程序</span><br>50 3 * * * <span class="hljs-string">"pkill -f 'java -jar' && pkill -f './GWS'"</span><br><br><span class="hljs-comment"># 产生的大日志文件定时清理</span><br>0 1 * * * <span class="hljs-built_in">truncate</span> -s 0 /opt/runGWS_CPU_CIF/error.log<br><br><span class="hljs-comment"># 定时删除/mydata/corefile/var/lib/apport/coredump/*</span><br>0 0 */2 * * <span class="hljs-built_in">cd</span> /opt/check_脚本 && sh check_memory.sh<br><br></code></pre></td></tr></table></figure><h4 id="5-7-批量工具使用"><a href="#5-7-批量工具使用" class="headerlink" title="5.7 批量工具使用"></a>5.7 批量工具使用</h4><p>小工具:批量ping IP、批量测试拉流地址</p><p>微盘下的 <code>tool/ping.tar.gz</code> 和 <code>test_url.tar.gz</code>,建议解压到 <code>/opt</code> 下</p><p>批量ping的使用</p><p>编辑待测IP写入 <code>ip_hosts</code>,运行 <code>./ping_duplicate.sh</code>,生成 <code>ping_error.log</code> 和 <code>ping_ok.log</code></p><p><code>test_url</code> 的使用</p><p>使用前安装 <code>ffmpeg</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">sudo apt-get install ffmpeg -y<br></code></pre></td></tr></table></figure><p>编辑待测地址写入 <code>rtsp_urls.txt</code>,后台运行 <code>./test_resolutions.sh &</code>,输出结果在 <code>output.txt</code>,<code>tail -100f output.txt</code> 滚动查看测试结果</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><code class="hljs bash">root@hunan-changde-spsygw-005002:/opt/test_url<span class="hljs-comment"># tail -f output.txt </span><br>Resolution <span class="hljs-keyword">for</span> rtsp://43.0.107.58:554/mgc/realplay/43.0.107.58:655/dac/realplay/97cb725c3e344c75874fd4455275138e/SUB/TCP?streamform=rtp&standard=rtsp:704x576, Codec: H264<br>Resolution <span class="hljs-keyword">for</span> rtsp://43.0.107.58:554/mgc/realplay/43.0.107.58:655/dac/realplay/2d2eebf0cd764841b783e6f26f0444cd/SUB/TCP?streamform=rtp&standard=rtsp:704x576, Codec: hevc<br>Failed to get resolution and codec <span class="hljs-keyword">for</span> rtsp://43.0.107.58:554/mgc/realplay/43.0.107.58:655/dac/realplay/b35b6aa517384aaebc35cca5679e415d/SUB/TCP?streamform=rtp&standard=rtsp<br></code></pre></td></tr></table></figure><p>GWS.log查看</p><p>某一路推流成功</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">[2024-04-17 14:33:53.392][INFO]***Push frame success,cam_id = rtsp://43.4.5.2:50554/live/018d5920-5f29-744a-a307-10b4055b0bbc,url: rtmp://push.hngsspy.com:1935/live/018d5920-5f29-744a-a307-10b4055b0bbc?txSecret=d12e651ebdb28451d382d034c283f0d8&txTime=66200017. size: 3943, 0x27 0x64.[func:SendFrame -> RTMPusherEntity.cc:1524]<br></code></pre></td></tr></table></figure><p>转码程序拉不到流</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">[2024-04-17 14:37:21.732][ERROR]QMCY_FFMPEG_DEMUX::QMCY_FFMPEG_Start Couldn<span class="hljs-string">'t open input stream. cam_id = rtsp://43.4.5.2:50554/live/018d5920-5f29-7ee5-9352-afa29b1869b4[func:QMCY_FFMPEG_Start -> QMCY_FFMPEG_DEMUX.cpp:275]</span><br></code></pre></td></tr></table></figure><p>可能推流失败</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><code class="hljs bash">[2024-04-17 14:30:49.032][INFO]Reconnect the rtmp server, go to buffer, cam <span class="hljs-built_in">id</span> = rtsp://43.4.5.2:50554/live/018d5920-5f29-757c-87f5-7b06163af922, url: rtmp://push.hngsspy.com:1935/live/018d5920-5f29-757c-87f5-7b06163af922?txSecret=a44d5105a3002725d8a7b931b41eb077&txTime=6620BD6F.[func:run -> RTMPusherEntity.cc:1742]<br></code></pre></td></tr></table></figure><p>查看推流个数</p><p><code>grep "PushCount" GWS.log</code> 或 <code>tail -300f GWS.log | grep "PushCount"</code></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><code class="hljs bash">root@hunan-changde-spsygw-005002:/opt/GWS2.5.3.1<span class="hljs-comment"># tail -300f GWS.log | grep "PushCount"</span><br>[2024-04-17 14:36:53.767][WARN]<span class="hljs-comment">## StreamListSize:191 HeartCount:0 AccessCount:161 TransCount:161 PushCount:161 ##</span><br></code></pre></td></tr></table></figure><blockquote><p>StreamListSize:下发推流指令的路数<br>HeartCount:正在点播的高清路数<br>AccessCount:当前拉流路数<br>TransCount:当前转码路数<br>PushCount:当前推流路数</p></blockquote>]]></content>
<categories>
<category>工作笔记</category>
</categories>
<tags>
<tag>运维</tag>
</tags>
</entry>
</search>