(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{344:function(t,s,a){t.exports=a.p+"assets/img/image72.a0478f87.png"},487:function(t,s,a){t.exports=a.p+"assets/img/image34.b0c7390e.png"},488:function(t,s,a){t.exports=a.p+"assets/img/image73.a5e07833.png"},489:function(t,s,a){t.exports=a.p+"assets/img/image87.a59728b3.png"},490:function(t,s,a){t.exports=a.p+"assets/img/image88.f694a518.png"},491:function(t,s,a){t.exports=a.p+"assets/img/image89.c218526b.png"},5114:function(t,s,a){t.exports=a.p+"assets/img/image2.cc209049.png"},5115:function(t,s){t.exports="data:image/png;base64,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"},5116:function(t,s,a){t.exports=a.p+"assets/img/image4.e9c9019c.png"},5117:function(t,s){t.exports="data:image/png;base64,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"},5118:function(t,s,a){t.exports=a.p+"assets/img/image6.594d9941.png"},5119:function(t,s){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAg0AAAAvCAMAAABXPQmyAAAACXBIWXMAABJ0AAASdAHeZh94AAAAZlBMVEUoLDQoLFhKgbNKLDSPs78oLHZ8pb////+rs7+rlXarpY+PajQoaqGfgVh8UDQoUI+rs7Ofs7+rs6FmLDRmlb/FxcV8gbOfpbNmLFiPgY98pbOflaGfpb+fpY9mlbOflXZKLHafs7M+4GsSAAAEyUlEQVR4Ae1YbZuiMAwUTz32Fpd1z3t///9/8jKTpg0I6uPiB5bwQUrbJGVmmgZXq7gCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEJgcgU+TewyH80Ug1DBf7qZfeahhekzn6zHUMF/upl95qGF6TOfrMdQwX+6mX3moYXpM5+sx1DBf7qZf+bgamvrl44V46+enCzNseLt5sGZTP1qzdx8fcRPN07r+8M51X9M81nWty2gPdX1m7RbjGqdvas5r1FDtMsUnmFS7DllNwX6c8/ER5948nVdDL7zZO5rPKdlNM8tl3MfVcPn9jZihmV06vG7GOR8fKRG8p9J70uqGz8OO5lBDRqU0XqOGY2f7F59odeloD+V0GOd8fKT49p5K70mrGz4PhxoyFIMNr4b2wMzP21rOWJJd7faSlP9u6n3f3oipduk83m72jTSFeFjjssrDdINhTlhtN9JILu08pxrkSEc3ZtJakgHmmvCSJzORUC9fJb4Om1EnPGoEi3ReDXwRBJdpsCoK7r/6W332aqh2xD/l0LS9BKKH9t/Px7Uxm5FIPRRPexA+hDWZtCaKnc0pMqHVET7IeQN+GtZ02w161wI9RtoD49DJEcUGKEK3lijmiYzRpzC/B33yQKP2D7pL+PaXFJvrJIezathuoKnfEnO7+YIXKbUOIy3gx6tBiTIgsxqen8DFCTZGjO5WMKm86sluXghh0g11wCDp9KfP4ljGqSrQoVtUfqudakJ3f9GkEatEU2f8Uc464eHExKR3mVTCGsvtQTWL8JBkebYZb/7eUQMRLgcACQCuwOUEvdSRRIFbIojy8HRk4rjtNQMwCyOUESVIN/W3lAK0PqUP78gigJXslDuYQljnk8nlBjJoTsxIOk/eRzx2D5Slq0EOYUmQ5CwnWwA5pAZjMWEGnBPWZMbwBxn27aF7F2rQLMHd5wjCsa971w5+0aN3lD2JU7NTVs21lSrOSn1pajGjQTVIqFRh6LTFq0E2q1SNYPCiGhKhwgrnAzoFUYlwdOSmUYYygLkBPhxB8pgOeNNPWYZfEttm59UgA43+q5Rjro4SI0vKjGTiaW6AW1RJprTFq0E2fCYiAYobcOmjl4p7AxpmirXKo9Bh1CcCBO8sAaYh1QiogDhUDo4I56h4kslGbE8NKe1kK23YoxmJfXmfzv9YnKnT3CKwuiVcnbpBCHn5bHVWQhC3ATUUqPhlwJqfIKYPk/RpAQgz3Rivdj+QF0g6PyyEYmRx+6aQvYxcwx1N/I3Ijid5MGKLGqrv+J88RdMvG2x2yjR9gpqRzMtqEHmy9Fg1eHO+l04rryj9y7h6apBKijmcRyiP8RE1WHUhKPGDHlb4X8BOfhCuh3g6SgAnP+L1lECNoCQgO+sfAjx85AmsYJxf/E4NxZNGolVRg8bXAsGHRyBkMm9E76nozLmBFYa+SBYGlr2cq6eGa1+8EOMs3M5zvU43rveW5nSebom+BJsb1ZDzrMdoUA2Dnd7q6vZ0nq4OubSJN6phEKagaxCWGXWGGmZE1t2XOqUa7r7YCHBnBEINdwZ4Vu5DDbOi686LDTXcGeBZuQ81zIquWGwgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEArNC4H1cgYAh8B+gAEHTAvOzHwAAAABJRU5ErkJggg=="},5120:function(t,s,a){t.exports=a.p+"assets/img/image9.fe8cd711.png"},5121:function(t,s){t.exports="data:image/png;base64,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"},5122:function(t,s,a){t.exports=a.p+"assets/img/image13.9f4fde02.png"},5123:function(t,s,a){t.exports=a.p+"assets/img/image14.4970b933.png"},5124:function(t,s){t.exports="data:image/png;base64,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"},5125:function(t,s,a){t.exports=a.p+"assets/img/image16.beb04833.png"},5126:function(t,s){t.exports="data:image/png;base64,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"},5127:function(t,s,a){t.exports=a.p+"assets/img/image18.05687e11.png"},5128:function(t,s,a){t.exports=a.p+"assets/img/image19.1adff5e9.png"},5129:function(t,s,a){t.exports=a.p+"assets/img/image20.76260e1f.png"},5130:function(t,s,a){t.exports=a.p+"assets/img/image21.d883fabe.png"},5131:function(t,s,a){t.exports=a.p+"assets/img/image22.9d1343c5.png"},5132:function(t,s,a){t.exports=a.p+"assets/img/image23.8c4cf3ef.png"},5133:function(t,s,a){t.exports=a.p+"assets/img/image24.7e33a1f4.png"},5134:function(t,s,a){t.exports=a.p+"assets/img/image25.b6a6193a.png"},5135:function(t,s,a){t.exports=a.p+"assets/img/image26.64fd4544.png"},5136:function(t,s,a){t.exports=a.p+"assets/img/image27.2d6b1a48.png"},5137:function(t,s,a){t.exports=a.p+"assets/img/image28.cd09033c.png"},5138:function(t,s,a){t.exports=a.p+"assets/img/image29.d528c9be.png"},5139:function(t,s,a){t.exports=a.p+"assets/img/image30.f7126644.png"},5140:function(t,s,a){t.exports=a.p+"assets/img/image31.ffa6e52c.png"},5141:function(t,s,a){t.exports=a.p+"assets/img/image32.da4ad9c3.png"},5142:function(t,s,a){t.exports=a.p+"assets/img/image33.6ad63bbd.png"},5143:function(t,s,a){t.exports=a.p+"assets/img/image35.743f4e79.png"},5144:function(t,s,a){t.exports=a.p+"assets/img/image37.481a8a63.png"},5145:function(t,s,a){t.exports=a.p+"assets/img/image38.ef0cc967.png"},5146:function(t,s,a){t.exports=a.p+"assets/img/image39.ad9f93a4.png"},5147:function(t,s,a){t.exports=a.p+"assets/img/image40.4962d2df.png"},5148:function(t,s,a){t.exports=a.p+"assets/img/image41.268dc10c.png"},5149:function(t,s,a){t.exports=a.p+"assets/img/image42.706cb842.png"},5150:function(t,s,a){t.exports=a.p+"assets/img/image43.b9958e18.png"},5151:function(t,s,a){t.exports=a.p+"assets/img/image44.1a163695.png"},5152:function(t,s,a){t.exports=a.p+"assets/img/image45.0bef1444.png"},5153:function(t,s,a){t.exports=a.p+"assets/img/image46.1464e1a8.png"},5154:function(t,s,a){t.exports=a.p+"assets/img/image47.cbbb8a7b.png"},5155:function(t,s,a){t.exports=a.p+"assets/img/image48.5c16bab8.png"},5156:function(t,s,a){t.exports=a.p+"assets/img/image49.68654432.png"},5157:function(t,s,a){t.exports=a.p+"assets/img/image50.a2e0ef9d.png"},5158:function(t,s,a){t.exports=a.p+"assets/img/image51.952eaaab.png"},5159:function(t,s,a){t.exports=a.p+"assets/img/image52.c0aa2d72.png"},5160:function(t,s,a){t.exports=a.p+"assets/img/image53.c47d0fd7.png"},5161:function(t,s,a){t.exports=a.p+"assets/img/image54.a7b69073.png"},5162:function(t,s,a){t.exports=a.p+"assets/img/image55.9fe23eb5.png"},5163:function(t,s,a){t.exports=a.p+"assets/img/image56.e3d471fd.png"},5164:function(t,s,a){t.exports=a.p+"assets/img/image57.fa6b87cf.png"},5165:function(t,s,a){t.exports=a.p+"assets/img/image58.79efc7f7.png"},5166:function(t,s,a){t.exports=a.p+"assets/img/image59.3267e382.png"},5167:function(t,s,a){t.exports=a.p+"assets/img/image60.e4918e42.png"},5168:function(t,s,a){t.exports=a.p+"assets/img/image61.0274349b.png"},5169:function(t,s,a){t.exports=a.p+"assets/img/image62.a15aee97.png"},5170:function(t,s,a){t.exports=a.p+"assets/img/image63.6228fb7b.png"},5171:function(t,s,a){t.exports=a.p+"assets/img/image64.12201c07.png"},5172:function(t,s,a){t.exports=a.p+"assets/img/image65.ed9096a2.png"},5173:function(t,s,a){t.exports=a.p+"assets/img/image66.c424fc12.png"},5174:function(t,s,a){t.exports=a.p+"assets/img/image67.9b338bc5.png"},5175:function(t,s,a){t.exports=a.p+"assets/img/image68.62f0901c.png"},5176:function(t,s,a){t.exports=a.p+"assets/img/image69.4d36b038.png"},5177:function(t,s,a){t.exports=a.p+"assets/img/image70.0e691f4a.png"},5178:function(t,s,a){t.exports=a.p+"assets/img/image71.dad90bf6.png"},5179:function(t,s,a){t.exports=a.p+"assets/img/image74.a66ffaa4.png"},5180:function(t,s,a){t.exports=a.p+"assets/img/image75.8416d981.png"},5181:function(t,s,a){t.exports=a.p+"assets/img/image76.540d609d.png"},5182:function(t,s,a){t.exports=a.p+"assets/img/image77.99392b27.png"},5183:function(t,s,a){t.exports=a.p+"assets/img/image78.c36b4fdc.png"},5184:function(t,s,a){t.exports=a.p+"assets/img/image79.4480a215.png"},5185:function(t,s,a){t.exports=a.p+"assets/img/image80.d25da3b6.png"},5186:function(t,s,a){t.exports=a.p+"assets/img/image81.959b9576.png"},5187:function(t,s,a){t.exports=a.p+"assets/img/image82.b5ac7d2d.png"},5188:function(t,s,a){t.exports=a.p+"assets/img/image83.e2f65cae.png"},5189:function(t,s,a){t.exports=a.p+"assets/img/image84.124c671d.png"},5190:function(t,s,a){t.exports=a.p+"assets/img/image85.62054912.png"},5191:function(t,s,a){t.exports=a.p+"assets/img/image86.78e723f6.png"},5192:function(t,s,a){t.exports=a.p+"assets/img/image90.cdf2552f.png"},5193:function(t,s,a){t.exports=a.p+"assets/img/image91.a6ff93a4.png"},5194:function(t,s,a){t.exports=a.p+"assets/img/image92.396b21c9.png"},5195:function(t,s,a){t.exports=a.p+"assets/img/image93.afd05642.png"},5196:function(t,s,a){t.exports=a.p+"assets/img/image94.b40e8fba.png"},5197:function(t,s,a){t.exports=a.p+"assets/img/image95.e9470bcd.png"},5198:function(t,s,a){t.exports=a.p+"assets/img/image96.06c7f3cb.png"},5199:function(t,s,a){t.exports=a.p+"assets/img/image97.c91fadf2.png"},5200:function(t,s,a){t.exports=a.p+"assets/img/image98.98c85d44.png"},5201:function(t,s,a){t.exports=a.p+"assets/img/image99.aad33297.png"},5202:function(t,s,a){t.exports=a.p+"assets/img/image100.62af4907.png"},5203:function(t,s,a){t.exports=a.p+"assets/img/image101.3661519a.png"},5204:function(t,s,a){t.exports=a.p+"assets/img/image102.93f96daa.png"},5205:function(t,s,a){t.exports=a.p+"assets/img/image103.8ecc3978.png"},5206:function(t,s,a){t.exports=a.p+"assets/img/image104.33477387.png"},5207:function(t,s){t.exports="data:image/png;base64,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"},5208:function(t,s,a){t.exports=a.p+"assets/img/image106.fe961e3e.png"},5209:function(t,s,a){t.exports=a.p+"assets/img/image107.e1c0c038.png"},5210:function(t,s){t.exports="data:image/png;base64,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"},5211:function(t,s,a){t.exports=a.p+"assets/img/image109.f8e827ac.png"},8389:function(t,s,a){"use strict";a.r(s);var v=a(7),e=Object(v.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"edge安装部署操作步骤文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#edge安装部署操作步骤文档"}},[t._v("#")]),t._v(" Edge安装部署操作步骤文档")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h3",[t._v("IOT边缘")]),s("p")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("资源申请")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("虚拟机资源申请")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("资源申请建议：")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("序号")]),t._v(" "),s("th",[t._v("类型")]),t._v(" "),s("th",[t._v("CPU")]),t._v(" "),s("th",[t._v("内存（G）")]),t._v(" "),s("th",[t._v("磁盘（G）")]),t._v(" "),s("th",[t._v("设备数")]),t._v(" "),s("th",[t._v("点位数")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("MV")]),t._v(" "),s("td",[t._v("8")]),t._v(" "),s("td",[t._v("32")]),t._v(" "),s("td",[t._v("132")]),t._v(" "),s("td",[t._v("<1W")]),t._v(" "),s("td",[t._v("<5W")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("MV")]),t._v(" "),s("td",[t._v("16")]),t._v(" "),s("td",[t._v("64")]),t._v(" "),s("td",[t._v("500")]),t._v(" "),s("td",[t._v("<2W")]),t._v(" "),s("td",[t._v("<10W")])])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("数据库资源申请")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("资源申请建议：")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("序号")]),t._v(" "),s("th",[t._v("类型")]),t._v(" "),s("th",[t._v("数据库")]),t._v(" "),s("th",[t._v("磁盘（G）")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("MV")]),t._v(" "),s("td",[t._v("Mysql")]),t._v(" "),s("td",[t._v("100")])])])])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("收集资源信息")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("华为IOT边缘信息")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("在部署前需先收集华为IOT边缘信息（IOTDA或IOT智能站点信息）")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("序号")]),t._v(" "),s("th",[t._v("访问地址")]),t._v(" "),s("th",[t._v("登陆账号")]),t._v(" "),s("th",[t._v("登陆密码")]),t._v(" "),s("th",[t._v("备注")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("https://xxx.xxx.xxx.xxx:xxx")]),t._v(" "),s("td",[t._v("xxxxxx")]),t._v(" "),s("td",[t._v("setect@2020")]),t._v(" "),s("td",[t._v("实例")])])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("虚拟机信息")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("收集容器部署虚拟机信息及数据库环境信息")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("序号")]),t._v(" "),s("th",[t._v("类型")]),t._v(" "),s("th",[t._v("地址")]),t._v(" "),s("th",[t._v("账号")]),t._v(" "),s("th",[t._v("密码")]),t._v(" "),s("th",[t._v("端口")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("MV-dokcer")]),t._v(" "),s("td",[t._v("192.168.50.86")]),t._v(" "),s("td",[t._v("root")]),t._v(" "),s("td",[t._v("Huawei@12F3")]),t._v(" "),s("td",[t._v("/")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("Mysql")]),t._v(" "),s("td",[t._v("192.168.50.85")]),t._v(" "),s("td",[t._v("root")]),t._v(" "),s("td",[t._v("Huawei@123")]),t._v(" "),s("td",[t._v("3306")])])])])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("检查资源")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("登录华为边缘")])]),t._v(" "),s("ul",[s("li",[s("p",[t._v("验证登录是否正常。")])]),t._v(" "),s("li",[s("p",[t._v("验证应该管理是否部署华为应用。")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("登录虚拟机")])]),t._v(" "),s("ul",[s("li",[t._v("验证虚拟机登录是否正常。")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("连接数据库")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("连接数据库")]),t._v(" "),s("p",[t._v("采用第三方工具连接mysql数据，验证连接是否正常。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5114),alt:""}})])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("容器docker安装部署")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("目的")])]),t._v(" "),s("p",[t._v("在可以连接互联网的情况下，可以在线安装Docker《Linux下Docker安装部署》，如果遇到内网服务器就没有办法进行在线安装，那么需要使用离线安装的方法。")])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("下载安装包")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("下载安装包")]),t._v(" "),s("p",[t._v("创建工作文件夹：")]),t._v(" "),s("p",[t._v("mkdir /opt/docker")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5115),alt:""}})]),t._v(" "),s("p",[t._v("docker安装包下载地址："),s("a",{attrs:{href:"https://download.docker.com/linux/static/stable/x86_64/",target:"_blank",rel:"noopener noreferrer"}},[t._v("下载地址"),s("OutboundLink")],1)]),t._v(" "),s("p",[t._v("进入下载地址，下载相应的版本，比如18.06.3，将下载好的文件放到/opt/docker目录下")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5116),alt:""}})])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("创建系统配置文件")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("创建系统配置文件")]),t._v(" "),s("p",[t._v("创建文件：")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("vim /opt/docker/docker.service\n")])])]),s("p",[s("img",{attrs:{src:a(5117),alt:""}})]),t._v(" "),s("p",[t._v("内容如下：")]),t._v(" "),s("div",{staticClass:"language-ini extra-class"},[s("pre",{pre:!0,attrs:{class:"language-ini"}},[s("code",[s("span",{pre:!0,attrs:{class:"token section"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("Unit")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("Description")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("Docker Application Container Engine")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("Documentation")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("https://docs.docker.com")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("After")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("network-online.target firewalld.service")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("Wants")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("network-online.target")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token section"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("Service")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("Type")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("notify")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# the default is not to use systemd for cgroups because the delegate issues still")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# exists and systemd currently does not support the cgroup feature set required")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# for containers run by docker")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("ExecStart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("/usr/bin/dockerd")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("ExecReload")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("/bin/kill -s HUP $MAINPID")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Having non-zero Limit*s causes performance problems due to accounting overhead")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# in the kernel. We recommend using cgroups to do container-local accounting.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("LimitNOFILE")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("LimitNPROC")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("LimitCORE")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Uncomment TasksMax if your systemd version supports it.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Only systemd 226 and above support this version.")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#TasksMax=infinity")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("TimeoutStartSec")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("0")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# set delegate yes so that systemd does not reset the cgroups of docker containers")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("Delegate")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("yes")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# kill only the docker process, not all processes in the cgroup")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("KillMode")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("process")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# restart the docker process if it exits prematurely")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("Restart")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("on-failure")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("StartLimitBurst")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("3")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("StartLimitInterval")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("60s")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token section"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),s("span",{pre:!0,attrs:{class:"token section-name selector"}},[t._v("Install")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")])]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token key attr-name"}},[t._v("WantedBy")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token value attr-value"}},[t._v("multi-user.target")]),t._v("\n")])])]),s("p",[s("img",{attrs:{src:a(5118),alt:""}})]),t._v(" "),s("p",[t._v("下载文件："),s("a",{attrs:{href:t.$withBase("/download/docker.service"),target:"_blank"}},[t._v("service文件")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("创建安装脚本")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("创建安装脚本")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("vim /opt/docker/install.sh\n")])])]),s("p",[s("img",{attrs:{src:a(5119),alt:""}})]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token shebang important"}},[t._v("#!/bin/sh")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'解压tar包...'")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-xvf")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$1")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'将docker目录移到/usr/bin目录下...'")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("cp")]),t._v(" docker/* /usr/bin/\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'将docker.service 移到/etc/systemd/system/ 目录...'")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("cp")]),t._v(" docker.service /etc/systemd/system/\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'添加文件权限...'")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("chmod")]),t._v(" +x /etc/systemd/system/docker.service\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'重新加载配置文件...'")]),t._v("\nsystemctl daemon-reload\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'启动docker...'")]),t._v("\nsystemctl start "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("docker")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'设置开机自启...'")]),t._v("\nsystemctl "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" docker.service\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("echo")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[t._v("'docker安装成功...'")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("docker")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-v")]),t._v("\n")])])]),s("p",[s("img",{attrs:{src:a(5120),alt:""}})]),t._v(" "),s("p",[t._v("下载文件："),s("a",{attrs:{href:t.$withBase("/download/install.sh"),target:"_blank"}},[t._v("安装脚本")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("创建卸载脚本")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("创建卸载脚本")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("vim /opt/docker/uninstall.sh\n")])])]),s("p",[s("img",{attrs:{src:a(5121),alt:""}})]),t._v(" "),s("div",{staticClass:"language-ini extra-class"},[s("pre",{pre:!0,attrs:{class:"language-ini"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("#!/bin/sh")]),t._v("\n\necho \\'删除docker.service\\...\\'\n\nrm -f /etc/systemd/system/docker.service\n\necho \\'删除docker文件\\...\\'\n\nrm -rf /usr/bin/docker\\*\n\necho \\'重新加载配置文件\\'\n\nsystemctl daemon-reload\n\necho \\'卸载成功\\...\\'\n")])])]),s("p",[t._v("下载文件："),s("a",{attrs:{href:t.$withBase("/download/uninstall.sh"),target:"_blank"}},[t._v("卸载脚本")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("安装")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("安装")]),t._v(" "),s("p",[t._v("(1) 安装目录结构如下：")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5122),alt:""}})]),t._v(" "),s("p",[t._v("(2) 执行安装脚本：")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("sh install.sh docker-20.10.9.tgz\n")])])]),s("p",[s("img",{attrs:{src:a(5123),alt:""}})])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("配置国内源")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("编辑daemon.josn")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("vim /etc/docker/daemon.json\n")])])]),s("p",[s("img",{attrs:{src:a(5124),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("配置国内源地址")]),t._v(" "),s("div",{staticClass:"language-ini extra-class"},[s("pre",{pre:!0,attrs:{class:"language-ini"}},[s("code",[t._v('{\n\n\\"registry-mirrors\\" : \\[\n\n\\"https://mirror.ccs.tencentyun.com\\",\n\n\\"http://registry.docker-cn.com\\",\n\n\\"http://docker.mirrors.ustc.edu.cn\\",\n\n\\"http://hub-mirror.c.163.com\\"\n\n\\],\n\n\\"insecure-registries\\" : \\[\n\n\\"registry.docker-cn.com\\",\n\n\\"docker.mirrors.ustc.edu.cn\\"\n\n\\],\n\n\\"debug\\" : true,\n\n\\"experimental\\" : true\n\n}\n')])])]),s("p",[s("img",{attrs:{src:a(5125),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("重启docker")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("systemctl restart docker.service\n")])])]),s("p",[s("img",{attrs:{src:a(5126),alt:""}})])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("华为网络配置")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("华为网络配置")]),t._v(" "),s("ul",[s("li",[t._v("打开要修改的文件")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("vi /etc/docker/daemon.json\n")])])]),s("p",[t._v("- 添加内容：")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('\\"insecure-registries\\":\\[\\"http://192.168.26.136:8080\\"\\]\n')])])]),s("ul",[s("li",[t._v("重加载")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("systemctl daemon-reload\n")])])]),s("ul",[s("li",[t._v("重启docker")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("systemctl restart docker\n")])])])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("IOT边缘安装部署")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("准备镜像")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("准备镜像")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("在服务器上的opt目录下创建ganwei 文件夹，并将镜像上传至文件夹中")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5127),alt:""}})])]),t._v(" "),s("li",[s("p",[t._v("解压镜像，将上传至服务器中的镜像压缩为tar格式（原镜像为tar.gz格式）")]),t._v(" "),s("p",[t._v("gunzip iotcenter-euler-6.0.0.1-build-IoTEdge.tar.gz")])]),t._v(" "),s("li",[s("p",[t._v("将镜像导入至容器中")]),t._v(" "),s("p",[t._v("docker load <iotcenter-euler-6.0.0.1-build-IoTEdge.tar")])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("推送镜像")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("推送镜像")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("执行docker images 查看镜像ID")])]),t._v(" "),s("li",[s("p",[t._v("将镜像打上标签：")]),t._v(" "),s("p",[t._v("docker tag 镜像ID 10.240.240.248:5000/production/iotcenter_x86:6.0-release1")]),t._v(" "),s("p",[t._v("（docker tag 镜像ID 镜像仓库地址/自定义标签）")])]),t._v(" "),s("li",[s("p",[t._v("推送镜像：")]),t._v(" "),s("p",[t._v("docker push 10.240.240.248:5000/production/iotcenter_x86:6.0-release1")]),t._v(" "),s("p",[t._v("（docker push 镜像仓库地址/自定义标签）")])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("部署应用")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("登录IOTDA平台，打开应用管理，点击右上角的添加应用")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5128),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("输入镜像地址")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5129),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("下滑打开数据存储，并按照对应路径填入映射目录")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5130),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5131),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("完点击【下一步】进行端口映射（映射项目所需端口如44380,44381及其他转发地址）")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5132),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("点击【下一步】编写版本及对应架构")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5133),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("完成后点击【确认添加】")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("添加完应用后还需对应用进行发布，返回应用管理界面点击右侧版本详情，选择需发布的版本进行发布即可")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5134),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5135),alt:""}})])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("安装节点")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("打开节点管理后点击右上角的注册节点进行注册")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5136),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("填写节点名称以及对应的资源空间")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5137),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("点击创建后页面将会弹出节点部署命令，复制后在服务器（Linux虚拟机）上执行即可")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5138),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("节点部署完成后再进入节点管理页面，点击详情")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5139),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("进入节点详情后点击模块管理，进入模块管理页面")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5140),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("点击右上角部署应用，选择之前添加的应用以及发布的版本并点击确认")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5141),alt:""}})])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("检验部署")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("检验部署")]),t._v(" "),s("p",[t._v("登录虚拟机验证是否部署成功。（虚拟机对应的就是5.4节点部署的虚拟机）")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5142),alt:""}})]),t._v(" "),s("p",[t._v("通过工具ssh连接虚拟机")]),t._v(" "),s("p",[t._v("进行root目录下执行docker ps查看容器镜像")]),t._v(" "),s("p",[t._v("执行docker ps 查看是否有2个huawei，1个iotcneter应用")]),t._v(" "),s("p",[t._v("如下图所示：")]),t._v(" "),s("p",[s("img",{attrs:{src:a(487),alt:""}})])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("正式授权")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("正式授权")]),t._v(" "),s("p",[t._v("部署成功后，进入容器运行服务进程查看授权码。")]),t._v(" "),s("p",[t._v("查看容器ID命令：docker ps 找到iotcenter容器")]),t._v(" "),s("p",[t._v("进入容器命令：docker exec -it [容器ID] bash")]),t._v(" "),s("p",[t._v("退出容器命令：exit")]),t._v(" "),s("p",[t._v("操作部署：")]),t._v(" "),s("p",[t._v("第一步（查看容器）：docker ps")]),t._v(" "),s("p",[t._v("第二步（进入容器）：docker exec -it [容器ID] bash")]),t._v(" "),s("p",[t._v("第三步（软件网关运行程序目录）：cd /opt/ganwei/IoTCenter/bin/")]),t._v(" "),s("p",[t._v("第四步（手动运行网关）：dotnet GWHost1.dll")]),t._v(" "),s("p",[t._v("第五步：拿到授权码后申请授权文件，授权码需记录保存")]),t._v(" "),s("p",[t._v("注：授权码上传位置")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("目录映射")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("目录映射")]),t._v(" "),s("p",[t._v("部署完成后，在容器外分别对以下几个目录进行授权")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("文件更新目录：/IoTCenter/tmpdll")]),t._v(" "),s("p",[t._v("执行：chmod -R 777 tmpdll")])]),t._v(" "),s("li",[s("p",[t._v("数据库及日志资料目录：/var/IoTEdge")]),t._v(" "),s("p",[t._v("执行：chmod -R 777 IoTEdge")])]),t._v(" "),s("li",[s("p",[t._v("创建对应映射目录")]),t._v(" "),s("p",[t._v("进入cd /IoTCenter/tmpdll/目录下创建bin 、dll\n、data、IoTCenterWeb目录")]),t._v(" "),s("p",[t._v("结构如下：")]),t._v(" "),s("p",[t._v("容器外目录：")]),t._v(" "),s("blockquote",[s("p",[t._v("IoTCenter")]),t._v(" "),s("p",[t._v("|-----tmpdll （赋予777权限）")]),t._v(" "),s("p",[t._v("|-----bin 自己新建文件夹（赋予777权限）")]),t._v(" "),s("p",[t._v("|-----dll 自己新建文件夹（赋予777权限）")]),t._v(" "),s("p",[t._v("|-----IoTCenterWeb 自己新建文件夹（赋予777权限）")]),t._v(" "),s("p",[t._v("|-----data 自己新建文件夹（赋予777权限）")]),t._v(" "),s("p",[t._v("var")]),t._v(" "),s("p",[t._v("|-----IoTEdge （赋予777权限）")]),t._v(" "),s("p",[t._v("|-----db")]),t._v(" "),s("p",[t._v("|-----sys_edge_agent")]),t._v(" "),s("p",[t._v("|-----sys_edge_hub")]),t._v(" "),s("p",[t._v("|-----user_IoTCenter")]),t._v(" "),s("p",[t._v("|-----IoTCenter")]),t._v(" "),s("p",[t._v("|-----database 数据库")]),t._v(" "),s("p",[t._v("|-----log")]),t._v(" "),s("p",[t._v("|-----sys_edge_agent")]),t._v(" "),s("p",[t._v("|-----sys_edge_hub")]),t._v(" "),s("p",[t._v("|-----user_IoTCenter")]),t._v(" "),s("p",[t._v("|-----IoTCenter")]),t._v(" "),s("p",[t._v("|-----log 日志")])]),t._v(" "),s("p",[t._v("将授权文件更新至容器外bin目录下，重启容器，文件将自动同步至容器内。")])])])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("测试验证")]),s("p")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("目录映射")]),t._v(" "),s("p",[t._v("通过工具ssh连接虚拟机")]),t._v(" "),s("p",[t._v("进行root目录下执行docker ps查看容器镜像")]),t._v(" "),s("p",[t._v("执行docker ps 查看是否有2个huawei，1个iotcneter应用")]),t._v(" "),s("p",[t._v("如下图所示：")]),t._v(" "),s("p",[s("img",{attrs:{src:a(487),alt:""}})])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("南向子系统对接调试")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("更新动态库及文件")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("更新动态库及文件")]),t._v(" "),s("p",[t._v("关于程序文件或动态库文件需在/IoTCenter/tmpdll/目录下进行更新。如：（bin、dll、IoTCenetrWeb、data下的文件）")]),t._v(" "),s("p",[t._v("若更新bin下为程序文件则需在tmpdll目录下新建bin文件夹，在将更新的程序文件动态库放入bin下，更新dll下的程序文件则需在tmpdll目录下新建dll文件夹，在将更新的程序文件动态库放入dll下。其它一致如此。创建文件夹并放入动态库后续赋予对应的777权限，再重启容器即可。")]),t._v(" "),s("p",[t._v("创建新文件夹命令：mkdir 文件夹名称")]),t._v(" "),s("p",[t._v("赋予文件权限命令：chmod -R 777 文件名 （对应目录下）")]),t._v(" "),s("p",[t._v("查看容器ID命令： docker ps （注：带有iotcenter才是我们容器）")]),t._v(" "),s("p",[t._v("重启容器命令： docker stop 【容器ID】")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("更新数据库")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("更新动态库及文件")]),t._v(" "),s("p",[t._v("关于数据更新执行在/var/IoTEdge/db/IoTCenter/user_IoTCenter/database/目录下进行更新。（注：更新数据要记得备份，防止更新后出现问题无法恢复）")]),t._v(" "),s("p",[t._v("更新数据库操作步骤如下：")]),t._v(" "),s("ol",[s("li",[t._v("进入目录database")])]),t._v(" "),s("blockquote",[s("p",[t._v("执行：cd /var/IoTEdge/db/IoTCenter/user_IoTCenter/database/")])]),t._v(" "),s("ol",{attrs:{start:"2"}},[s("li",[s("p",[t._v("备份数据库。（数据库备份有两种方式，1在服务器上备份。2.将服务器上数据下载下来备份至本地）")]),t._v(" "),s("p",[t._v("服务器上备份操作命令：")])])]),t._v(" "),s("p",[t._v("cp -rf Database DatabaseXXX")]),t._v(" "),s("p",[t._v("或")]),t._v(" "),s("p",[t._v("cp -rf Database\n/var/IoTEdge/db/IoTCenter/user_IoTCenter/database/DatabaseXXX")]),t._v(" "),s("p",[t._v("本地备份：")]),t._v(" "),s("p",[t._v("拷贝方式很多，有直接拖拉拷贝，也有命令拷贝")]),t._v(" "),s("ol",{attrs:{start:"3"}},[s("li",[s("p",[t._v("上传数据库Database")]),t._v(" "),s("p",[t._v("上传完成后在database目录下给该文件赋予777权限。")]),t._v(" "),s("p",[t._v("执行：chmod -R 777 Database")])]),t._v(" "),s("li",[s("p",[t._v("重启容器：")]),t._v(" "),s("p",[t._v("执行：docker ps 查看容器ID（注：带有iotcenter才是我们容器）")]),t._v(" "),s("p",[t._v("执行：docker stop 【容器ID】 重启容器")])]),t._v(" "),s("li",[s("p",[t._v("查看服务器运行是否正常，平台是否正常。（查看日志，登录web页面）")])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("赋予权限")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("更新动态库及文件")]),t._v(" "),s("p",[t._v("赋予文件权限命令：")]),t._v(" "),s("p",[t._v("赋予单个文件命令：chmod -R 777 文件名")]),t._v(" "),s("p",[t._v("赋予某文件夹下所有文件权限命令：chmod -R 777 * （谨慎使用）")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("南向子系统对接")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("1. 输出物模型")]),t._v(" "),s("p",[t._v("一种子系统可能对应多个产品，一个产品对应多个服务，一个服务对应多个属性。")]),t._v(" "),s("p",[t._v("如下所示：")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5143),alt:""}})]),t._v(" "),s("p",[t._v("如下附件中的示例：")]),t._v(" "),s("p",[s("a",{attrs:{href:t.$withBase("/download/nanxiangduijie.xlsx"),target:"_blank"}},[t._v("示例")])])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("2. 创建产品")]),t._v(" "),s("ul",[s("li",[t._v("产品介绍")])]),t._v(" "),s("p",[t._v("登录IoT网关，在【设备配置】二级菜单的【产品管理】中添加对应的设备产品。产品管理主要维护产品物联属性和产品基本属性。在产品属性中增加了设备类型字段，设备类型分三种：直连设备、非直连设备、虚拟设备。")]),t._v(" "),s("p",[t._v('直连设备：通过协议机制与服务器直接连接的设备，称为"直连设备"。具体而言，可能包括的协议包括有线类的串口、以太网，无线类的蓝牙，wifi，小功率无线收发器，zigbee等协议。')]),t._v(" "),s("p",[t._v('子系统：通过网关或物联网感知平台与服务器相连的设备，称为"子系统"。子系统既包括网关，也包括物联网感知系统，在北向终端中，该类设备不会同步到终端中。')]),t._v(" "),s("p",[t._v("虚拟设备：由网关、物联网感知系统所管理的子设备，对于IoTCenter平台来说，看似真实存在，实际上无需关心其是否真实存在，可以理解为虚拟设备。事实上虚拟设备不一定是子设备，也有可能是由多个直连设备、非直连设备、子设备的某些属性值，按照业务逻辑组合起来的逻辑设备。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5144),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5145),alt:""}})]),t._v(" "),s("p",[t._v("产品属性：由两部分组成，物联属性和基本属性。其中物联属性包括遥测、遥信、设置命令，基本属性如产品厂商、型号等信息。在对物联属性进行设计时，对属性名称扩展了属性编码字段，用于业务系统对属性的标识。如遥测编码、遥信编码、设备命令编码，在创建产品时，这三个编码必须填写，IoT北向业务系统对该字段进行了一系列业务设计。如应用转发规则、平台转发规则等中对产品属性中的编码均有体现。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5146),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5147),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5148),alt:""}})]),t._v(" "),s("ul",[s("li",[t._v("产品设备关联")])]),t._v(" "),s("p",[t._v("网关产品表分别时IotEquip、IotYcp、IotYxp、IotSetParm")]),t._v(" "),s("p",[t._v("如下图所示：")]),t._v(" "),s("p",[t._v("IotEquip表：")]),t._v(" "),s("p",[t._v("该表中的每一个设备都对应是一个产品。")]),t._v(" "),s("p",[t._v("注：产品名称不能一样。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5149),alt:""}})]),t._v(" "),s("p",[t._v("IotYcp表：")]),t._v(" "),s("p",[t._v("该表中的每一个测点都代表这某个产品的属性。该表中特别注意的是要在每个测点的最后一个字段yc_code配置上测点编码，该编码与华为IoT边缘上注册的产品属性一致。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5150),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5151),alt:""}})]),t._v(" "),s("p",[t._v("IotYxp表：")]),t._v(" "),s("p",[t._v("该表中的每一个测点都代表这某个产品的属性。该表中特别注意的是要在每个测点的最后一个字段yx_code配置上测点编码，该编码与华为IoT边缘上注册的产品属性一致。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5152),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5153),alt:""}})]),t._v(" "),s("p",[t._v("IotSetParm表：")]),t._v(" "),s("p",[t._v("该表中的每一个设置点都代表这某个产品的命令。该表中特别注意的是要在每个设置点的最后一个字段set_code配置上设置点编码，该编码与华为IoT边缘上注册的产品命令一致。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5154),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5155),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("3. 添加设备及测点")]),t._v(" "),s("p",[t._v("产品创建完成后，可在设备管理按产品模块进行批量添加，再按实际的设备进行配置修改。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5156),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("4. 产品设备关联")]),t._v(" "),s("p",[t._v("将产品与设备进行关联")]),t._v(" "),s("p",[t._v("IotEquip表与Equip表关联：")]),t._v(" "),s("p",[t._v("关联字段：Equip表raw_equip_no")]),t._v(" "),s("p",[t._v("列如：在equip表电子围栏设备raw_equip_no字段填写IotEquip产品表周界电子围栏产品ID（equip_no）：16")]),t._v(" "),s("p",[t._v('注：设备名称不能出现"空格"、"/"、"设备名称不能一样"')]),t._v(" "),s("p",[s("img",{attrs:{src:a(5157),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5158),alt:""}})]),t._v(" "),s("p",[t._v("iotYcp表与Ycp表关联：")]),t._v(" "),s("p",[t._v("关联字段：Ycp表yc_code")]),t._v(" "),s("p",[t._v("Ycp表的yc_code需与IotYcp表的yc_code一一对应。")]),t._v(" "),s("p",[t._v("注：ycp的测点号需与IotYcp表的测点号一致，如下：")]),t._v(" "),s("p",[t._v("IotYcp表的测点：")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("equip_no")]),t._v(" "),s("th",[t._v("yc_no")]),t._v(" "),s("th",[t._v("yc_nm")]),t._v(" "),s("th",[t._v("......")]),t._v(" "),s("th",[t._v("yc_code")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("值1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc1")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("2")]),t._v(" "),s("td",[t._v("值2")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc2")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("值3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc3")])])])]),t._v(" "),s("p",[t._v("Ycp表")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("equip_no")]),t._v(" "),s("th",[t._v("yc_no")]),t._v(" "),s("th",[t._v("yc_nm")]),t._v(" "),s("th",[t._v("......")]),t._v(" "),s("th",[t._v("yc_code")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("值1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc1")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("2")]),t._v(" "),s("td",[t._v("值2")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc2")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("值3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc3")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("值1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc1")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("值3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yc3")])])])]),t._v(" "),s("p",[t._v("若ycp表中的某设备没有对应的测点值需跳过，否则上报数据会出现错乱。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5159),alt:""}})]),t._v(" "),s("p",[t._v("IotYxp表与Yxp表关联：")]),t._v(" "),s("p",[t._v("关联字段：Yxp表yx_code")]),t._v(" "),s("p",[t._v("Yxp表的yx_code需与IotYxp表的yx_code一一对应。")]),t._v(" "),s("p",[t._v("注：yxp的测点号需与IotYxp表的测点号一致，如下：")]),t._v(" "),s("p",[t._v("IotYcp表的测点：")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("equip_no")]),t._v(" "),s("th",[t._v("yx_no")]),t._v(" "),s("th",[t._v("yx_nm")]),t._v(" "),s("th",[t._v("......")]),t._v(" "),s("th",[t._v("yx_code")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("状态1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx1")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("2")]),t._v(" "),s("td",[t._v("状态2")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx2")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("状态3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx3")])])])]),t._v(" "),s("p",[t._v("Yxp表")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("equip_no")]),t._v(" "),s("th",[t._v("yx_no")]),t._v(" "),s("th",[t._v("yx_nm")]),t._v(" "),s("th",[t._v("......")]),t._v(" "),s("th",[t._v("yx_code")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("状态1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx1")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("2")]),t._v(" "),s("td",[t._v("状态2")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx2")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("状态3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx3")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("状态1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx1")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("状态3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("yx3")])])])]),t._v(" "),s("p",[t._v("若yxp表中的某设备没有对应的测点值需跳过，否则上报数据会出现错乱。")]),t._v(" "),s("p",[t._v("IotSetParm表与SetParm表关联：")]),t._v(" "),s("p",[t._v("关联字段：SetParm表set_code")]),t._v(" "),s("p",[t._v("SetParm表的set_code需与IotSetParm表的set_code一一对应。")]),t._v(" "),s("p",[t._v("注：SetParm的测点号需与IotSetParm表的测点号一致，如下：")]),t._v(" "),s("p",[t._v("SetParm表的测点：")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("equip_no")]),t._v(" "),s("th",[t._v("set_no")]),t._v(" "),s("th",[t._v("set_nm")]),t._v(" "),s("th",[t._v("......")]),t._v(" "),s("th",[t._v("set_code")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("命令1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set1")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("2")]),t._v(" "),s("td",[t._v("命令2")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set2")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("命令3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set3")])])])]),t._v(" "),s("p",[t._v("SetParm表")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("equip_no")]),t._v(" "),s("th",[t._v("set_no")]),t._v(" "),s("th",[t._v("set_nm")]),t._v(" "),s("th",[t._v("......")]),t._v(" "),s("th",[t._v("set_code")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("命令1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set1")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("2")]),t._v(" "),s("td",[t._v("命令2")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set2")])]),t._v(" "),s("tr",[s("td",[t._v("1")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("命令3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set3")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("1")]),t._v(" "),s("td",[t._v("命令1")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set1")])]),t._v(" "),s("tr",[s("td",[t._v("2")]),t._v(" "),s("td",[t._v("3")]),t._v(" "),s("td",[t._v("命令3")]),t._v(" "),s("td",[t._v("......")]),t._v(" "),s("td",[t._v("set3")])])])]),t._v(" "),s("p",[t._v("若SetParm表中的某设备没有对应的命令需跳过，否则上报数据会出现错乱。")])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("北向对接调试")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("华为IOT边缘创建产品")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("1.  登录华为IOT边缘")]),t._v(" "),s("p",[t._v("登录华为IoT边缘，点击【设备建模】进入设备建模功能页面（IOT智能则找到产品功能）")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5160),alt:"IMG_256"}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("2. 创建产品模型")]),t._v(" "),s("p",[t._v("点击【创建产品】")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5161),alt:""}})]),t._v(" "),s("p",[t._v("创建产品：")]),t._v(" "),s("p",[t._v("所属资源空间：如DevelopApp 选择对应的资源空间")]),t._v(" "),s("p",[t._v("产品名称：如：AirConditionerDevice 以类型的英文作为产品名称")]),t._v(" "),s("p",[t._v("协议类型：MQTT 默认")]),t._v(" "),s("p",[t._v("数据格式：JSON 默认")]),t._v(" "),s("p",[t._v("厂商名称：海康 对接的子系统厂商")]),t._v(" "),s("p",[t._v("设备类型：AirConditionerDevice 以类型的英文")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5162),alt:""}})]),t._v(" "),s("p",[t._v("创建后可以看到下方有一个新的产品")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5163),alt:""}})]),t._v(" "),s("p",[t._v("点击该产品【详情】进入产品编辑")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5164),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5165),alt:""}})]),t._v(" "),s("p",[t._v("创建服务")]),t._v(" "),s("p",[t._v("点击【自定义模型】，如果已有模型可以点击【上传模型文件】")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5166),alt:""}})]),t._v(" "),s("p",[t._v("新增服务：")]),t._v(" "),s("p",[t._v("服务ID：FireSmokeAlarm")]),t._v(" "),s("p",[t._v("服务类型：FireSmokeAlarm 英文形式")]),t._v(" "),s("p",[t._v("服务描述：消防烟感")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5167),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5168),alt:""}})]),t._v(" "),s("p",[t._v("注册属性（与IOT网关中的产品遥信、遥测一致）")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5169),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5170),alt:""}})]),t._v(" "),s("p",[t._v("注：属性的名称必须与IoT网关的产品设备遥测yc_code、遥信yx_code一一对应上。")]),t._v(" "),s("p",[t._v("注册命令（与设置一样）参数名称为value。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5171),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5172),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5173),alt:""}})]),t._v(" "),s("p",[t._v("注：命令的名称必须与IoT网关的产品设备设置set_code一一对应上。")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("3. 字符串类型")]),t._v(" "),s("p",[t._v("注：字符串类型要选择对应的，不然会报错。有json与string、int及时间的。")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("创建应用平台")])]),t._v(" "),s("ol",[s("li",[s("p",[t._v("创建应用平台")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("登录IOT网关，创建应用平台。")]),t._v(" "),s("p",[t._v("与上级IoT平台对接的平台，如上级平台为华为IoTDA（边缘网关），ROMA等平台。平台与应用最大的区别在于平台有终端注册、业务能力高度定制化。为此当IoT平台与上级IoT平台对接时，需要为上级IoT平台进行定制特定的动态库，用于实现终端注册、数据上报等流程。")]),t._v(" "),s("p",[t._v("在浏览器输入https://IP+44380登录网关web平台。在应用平台管理菜单中，单击平台管理，增加平台，填写信息如下即可。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5174),alt:""}})]),t._v(" "),s("p",[t._v("平台名称：OC")]),t._v(" "),s("p",[t._v("动态库名称：GW.NorthOCEdge.STD.dll")]),t._v(" "),s("p",[t._v("动态库版本：V1.0")]),t._v(" "),s("p",[t._v("状态：启用")]),t._v(" "),s("p",[t._v("调试模式：否（打印INFO日志）")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5175),alt:""}})]),t._v(" "),s("p",[t._v('平台终端注册参数配置，为产品中的每个产品配置自动注册参数信息，自动注册选择"是"。')]),t._v(" "),s("p",[t._v("各参数名称描述：")]),t._v(" "),s("p",[t._v("device_id前缀：用于标识设备id的前缀，最终设备id组合为：前缀+EquipNo")]),t._v(" "),s("p",[t._v("node_id前缀：用于标识设备标识码的前缀，最终设备标识码组合为：前缀+EquipNo")]),t._v(" "),s("p",[t._v("华为产品id：在IoTDA中创建产品，定义产品服务及属性，创建成功后在界面可以看到有一个产品id。")]),t._v(" "),s("hr"),t._v(" "),s("p",[t._v("参数名称          参数编码          备注")]),t._v(" "),s("p",[t._v("设备id前缀        device_id         上层规范+equip_no")]),t._v(" "),s("p",[t._v("设备标识前缀      device_id         上层规范+equip_no")]),t._v(" "),s("p",[t._v("产品ID            Product_id        华为云平台注册产品ID")]),t._v(" "),s("hr"),t._v(" "),s("p",[s("img",{attrs:{src:a(5176),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("1. 自动注册配置")]),t._v(" "),s("p",[t._v("点击【自动注册配置】，进入自动配置页面")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5177),alt:""}})]),t._v(" "),s("p",[t._v("自动配置选择：是")]),t._v(" "),s("p",[t._v("填写产品对应的参数配置：设备id前缀、设备标识前缀、产品ID。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5178),alt:""}})]),t._v(" "),s("p",[t._v('平台开启自动注册后，所有有效的终端都会自动同步到"平台终端管理"中，注册状态默认为"注册中"。对于注册状态为"注册失败"的终端，扩展动态库内部会自动进行重新注册，目前不会限制注册次数，会一直注册。')]),t._v(" "),s("p",[t._v("注册成功的标志是IoTEdge平台会将成功标识回调，敢为网关中获取到回调后，将终端状态改成注册成功，此时，在IoTDA平台中可以看到响应的设备了。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(344),alt:""}})]),t._v(" "),s("p",[t._v("在平台终端管理中，可以查看终端的注册参数信息，这里会展示自动注册所填的参数。对于注册失败的平台终端，可以进行重新注册、或者删除。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(488),alt:""}})]),t._v(" "),s("p",[t._v('对于已删除的平台终端，可以进行再次注册，单击"终端注册"按钮，填写注册的相关参数，与自动注册的参数填写一样。')]),t._v(" "),s("p",[s("img",{attrs:{src:a(5179),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("2. 配置上报规则")]),t._v(" "),s("p",[t._v("IoT平台向上级IoT平台推送实时数据时，用户可以按产品配置转发规则，如产品为温湿度的终端，应用需要设备状态、遥测、遥信的实时值，需要在状态、遥测、遥信变化时上报数据；并且对产品属性的数据配置过滤值，如终端属性的wendu，有效值在10-100范围内，并且过滤为88的值才会进行上报。")]),t._v(" "),s("p",[t._v("上报类型：设备状态、遥测、遥信、终端报警事件、命令执行结果。这些项选择的目的是为应用推送实时消息，可以根据应用需求进行个性化配置。")]),t._v(" "),s("p",[t._v("上报规则：定时上报和变化上报，其中定时上报可以配置间隔时间。这两种上报规则只对设备状态、遥测、遥信有效。")]),t._v(" "),s("p",[t._v("其他规则：对产品中的遥测属性进行控制，主要包括过滤值（毛刺值），有效范围。只有符合在规则范围的实时值才会进行上报，不符合的数据会进行过滤。如果需要对某个遥测属性进行配置，可以新增属性，并配置相应的值，然后单击底部的保存按钮生效。在其他规则中还有服务名称和对照编码。这两个字段主要与华为IoTDA平台定义的物模型有关。按服务来分组，服务下面有很多子属性。对照编码的作用，如果上级IoT平台定义的物模型中，某个属性的名称与我方IoT平台的属性不一致，可以配置对照编码，用于我方的编码与上级平台的编码做映射关系，在上报数据时就按对照编码传输。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5180),alt:""}})]),t._v(" "),s("p",[t._v("服务名称对应产品服务ID，对照编码对应属性名称")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5181),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5182),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("3. 查看上报日志")]),t._v(" "),s("p",[t._v("通过服务：")]),t._v(" "),s("p",[t._v("进入/var/IoTEdge/log/user_IotCenter/IoTCenter/log/目录")]),t._v(" "),s("p",[t._v("执行：cd /var/IoTEdge/log/user_IotCenter/IoTCenter/log/")]),t._v(" "),s("p",[t._v("进入目录后打开对应的OC日志查看。")]),t._v(" "),s("p",[t._v("通过web平台：")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5183),alt:""}})])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("4. 删除应用平台")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5184),alt:""}})])])]),t._v(" "),s("li",[s("p",[t._v("平台终端管理")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("平台终端管理")]),t._v(" "),s("p",[t._v("平台终端，用于展示终端注册情况，支持手动注册，对于注册失败的可以再次进行重新注册。")]),t._v(" "),s("ol",[s("li",[t._v("终端注册")])]),t._v(" "),s("p",[t._v("未启用自动注册的，可以进行手动注册。可以勾选多个终端，填写需要终端注册的相关参数。注意：此处批量注册是将选择的终端都会按照同一逻辑对注册参数进行处理。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(344),alt:""}})]),t._v(" "),s("ol",{attrs:{start:"2"}},[s("li",[s("p",[t._v("终端下线")]),t._v(" "),s("p",[t._v("终端下线：可以选择已注册的终端进行下线操作，下线的逻辑时，已注册的逻辑会变成下线中，后台会将下线中的数据传到上级IoT平台进行终端删除，只有上级IoT平台删除成功回调给IoT后，才会将下线中改成已下线，并且也不会上报数据了。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(344),alt:""}})])]),t._v(" "),s("li",[s("p",[t._v("查看终端设备")]),t._v(" "),s("p",[s("img",{attrs:{src:a(488),alt:""}})])])])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("对接调试")])]),t._v(" "),s("p",[t._v("数据上报至华为IoT边缘后需将网关数据与华为IoT边缘的设备数据进行核对。看上报的数据是否与网关一致。")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("查看IOT上报日志（消息跟踪）")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("查看IOT上报日志（消息跟踪）")]),t._v(" "),s("p",[t._v("登录华为IOT边缘，进入设备IOT接入，查看设备。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5185),alt:""}})]),t._v(" "),s("p",[t._v("方式一：选择某设备，点击消息跟踪。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5186),alt:""}})]),t._v(" "),s("p",[t._v("启动消息跟踪，可以定义时间。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5187),alt:""}})]),t._v(" "),s("p",[t._v("方式二：选择某设备，点击【父设备详情】，再点击消息跟踪。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5188),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5189),alt:""}})]),t._v(" "),s("p",[t._v("启动消息跟踪，可以定义时间。")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5190),alt:""}})]),t._v(" "),s("p",[t._v("查看消息跟踪结果")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5191),alt:""}})])])]),t._v(" "),s("li",[s("p",[t._v("在华为云运行调试")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("在华为云运行调试")]),t._v(" "),s("p",[t._v('在搜索框搜索"设备接入IOT"，点击【监控运维】------【在线调试】')]),t._v(" "),s("p",[s("img",{attrs:{src:a(489),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(490),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(491),alt:""}})])])]),t._v(" "),s("li",[s("p",[t._v("命令下发")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("命令下发")]),t._v(" "),s("p",[t._v('在搜索框搜索"设备接入IOT"，点击【监控运维】------【在线调试】')]),t._v(" "),s("p",[t._v("注：IOT智能站点选择【同步命令下发】")]),t._v(" "),s("p",[s("img",{attrs:{src:a(489),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(490),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(491),alt:""}})])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("日志查看")])]),t._v(" "),s("p",[t._v("IOT网关对接华为IOTDA日志有三类：")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("1. 是否连接上华为IOTDA日志")]),t._v(" "),s("p",[t._v("日志所在目录（容器外）：")]),t._v(" "),s("blockquote",[s("p",[t._v("var")]),t._v(" "),s("p",[t._v("|-----IoTEdge")]),t._v(" "),s("p",[t._v("|-----log")]),t._v(" "),s("p",[t._v("|-----sys_edge_agent")]),t._v(" "),s("p",[t._v("|-----sys_edge_hub")]),t._v(" "),s("p",[t._v("|-----user_IoTCenter")]),t._v(" "),s("p",[t._v("|-----IoTCenter")]),t._v(" "),s("p",[t._v("|-----log 日志")]),t._v(" "),s("p",[t._v("|-----IOTE.....")])])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("2. 数据上报情况日志")]),t._v(" "),s("p",[t._v("日志所在目录（容器外）：")]),t._v(" "),s("blockquote",[s("p",[t._v("var")]),t._v(" "),s("p",[t._v("|-----IoTEdge")]),t._v(" "),s("p",[t._v("|-----log")]),t._v(" "),s("p",[t._v("|-----sys_edge_agent")]),t._v(" "),s("p",[t._v("|-----sys_edge_hub")]),t._v(" "),s("p",[t._v("|-----user_IoTCenter")]),t._v(" "),s("p",[t._v("|-----IoTCenter")]),t._v(" "),s("p",[t._v("|-----log 日志")]),t._v(" "),s("p",[t._v("|-----OC_.....")])])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("3. 华为SDK日志")]),t._v(" "),s("p",[t._v("SDK日志")]),t._v(" "),s("p",[t._v("日志所在目录（容器内）：")]),t._v(" "),s("blockquote",[s("p",[t._v("opt")]),t._v(" "),s("p",[t._v("|-------ganwei")]),t._v(" "),s("p",[t._v("|-----sdk.log")])]),t._v(" "),s("p",[t._v("Hub日志：")]),t._v(" "),s("p",[t._v("日志所在目录（容器外）：")]),t._v(" "),s("blockquote",[s("p",[t._v("var")]),t._v(" "),s("p",[t._v("|-----IoTEdge")]),t._v(" "),s("p",[t._v("|-----log")]),t._v(" "),s("p",[t._v("|-----sys_edge_agent")]),t._v(" "),s("p",[t._v("|-----sys_edge_hub")]),t._v(" "),s("p",[t._v("|-----log ----Hub日志")]),t._v(" "),s("p",[t._v("|-----user_IoTCenter")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("工单创建")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("工单创建")]),t._v(" "),s("p",[t._v('当遇到IOTDA问题，可以在搜索框搜索"我的工单"，创建新的工单提交给华为维护人员进行处理。')]),t._v(" "),s("p",[s("img",{attrs:{src:a(5192),alt:""}})]),t._v(" "),s("p",[t._v("搜索你所需的解决的问题")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5193),alt:""}})]),t._v(" "),s("p",[t._v("选择对应的问题类型")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5194),alt:""}})]),t._v(" "),s("p",[t._v("结果如下：")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5195),alt:""}})])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("容器构建（示例）")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("资源清单")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("资源清单")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("一台服务器器（x86或arm64架构）")])]),t._v(" "),s("li",[s("p",[t._v("安装并启动docker，注意不要安装最新版本，最好是按照18.0.X版本的docker")])]),t._v(" "),s("li",[s("p",[t._v("docker构建镜像需要的基础镜像包（x86或arm64）")])]),t._v(" "),s("li",[s("p",[t._v("dotnet的SDK或者运行时（x86或arm64）")])]),t._v(" "),s("li",[s("p",[t._v("IoTCenter的压缩包（已包含OC的动态库和依赖的SDK，并在数据库中配置完成）")])]),t._v(" "),s("li",[s("p",[t._v("Dockerfile文件")])]),t._v(" "),s("li",[s("p",[t._v("runGW.sh文件")])])]),t._v(" "),s("p",[t._v("OC依赖的华为SDK压缩文件")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("基础设施准备")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("基础设施准备")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("把准备的基础镜像包放到服务器中，并加载")])]),t._v(" "),s("li",[s("p",[t._v("docker load <sudobaseimages.tar（镜像包的名称）")])]),t._v(" "),s("li",[s("p",[t._v("解压OC依赖的华为SDK压缩文件，将conf文件夹、lib目录下文件和OC的动态库，复制到IoTCenter/dll目录下，并在数据库的GWExProc表中配置，并重新压缩IoTCenter")])])]),t._v(" "),s("hr"),t._v(" "),s("p",[t._v("Proc_Module             Proc_name                Proc_parm")]),t._v(" "),s("p",[t._v('GW.OceanEdge.STD.dll    OC边缘服务（自己设置）   { "defaultInterval":\n300, "reconnectTime":\n10}')]),t._v(" "),s("hr"),t._v(" "),s("ol",{attrs:{start:"4"}},[s("li",[s("p",[t._v("在服务器的/opt/目录下，新建一个ganwei文件夹，进入ganwei文件夹，将准备的Dockerfile文件放入，并再新建一个文件夹：ganwei，放入runGW.sh、dotnet的压缩包、IoTCenter的压缩包、华为SDK中conf文件夹的压缩包和lib文件夹的压缩包，解压压缩文件，并将解压后的压缩文件移到其他目录。")])]),t._v(" "),s("li",[s("p",[t._v("根据服务器架构的不同，准备Dockfile文件，并编写文件内容：")]),t._v(" "),s("p",[t._v("(1) X86：")]),t._v(" "),s("blockquote",[s("p",[t._v("FROM baseimage:1.0.0\n（加载成功后的基础镜像的名称和版本号，或者镜像id）")]),t._v(" "),s("p",[t._v('LABEL maintainer="dingzuoxiang@ganweisoft.com"')]),t._v(" "),s("p",[t._v("COPY ganwei /opt/ganwei")]),t._v(" "),s("p",[t._v("RUN ln -s /opt/ganwei/dotnet/dotnet dotnet")]),t._v(" "),s("p",[t._v("EXPOSE 44381")]),t._v(" "),s("p",[t._v("WORKDIR /opt/ganwei/")]),t._v(" "),s("p",[t._v("CMD sh runGW.sh")])]),t._v(" "),s("p",[t._v("(2) Arm64：")]),t._v(" "),s("blockquote",[s("p",[t._v("FROM sudobaseimages:1.0.0")]),t._v(" "),s("p",[t._v("COPY ganwei /opt/ganwei")]),t._v(" "),s("p",[t._v("RUN ln -s /opt/ganwei/dotnet/dotnet /usr/bin/dotnet")]),t._v(" "),s("p",[t._v("RUN chown -R ganweiapp /opt/ganwei && chgrp -R ganweiapp /opt/ganwei\n&& chmod -R 755 /opt/ganwei && chown ganweiapp /usr/bin/dotnet &&\nchgrp ganweiapp /usr/bin/dotnet && chmod 755 /usr/bin/dotnet")]),t._v(" "),s("p",[t._v("EXPOSE 44380")]),t._v(" "),s("p",[t._v("USER ganweiapp")]),t._v(" "),s("p",[t._v("WORKDIR /opt/ganwei/")]),t._v(" "),s("p",[t._v("CMD sh runGW.sh")])])]),t._v(" "),s("li",[s("p",[t._v("编写runGW.sh文件的内容：")])])]),t._v(" "),s("blockquote",[s("p",[t._v("#sudo sh changeowner.sh")]),t._v(" "),s("p",[t._v("#sh dat.sh &")]),t._v(" "),s("p",[t._v("cd /opt/ganwei")]),t._v(" "),s("p",[t._v("sudo cp -r conf/ /lib/")]),t._v(" "),s("p",[t._v("sudo cp lib/* /lib/")]),t._v(" "),s("p",[t._v("cd /opt/ganwei/IoTCenter/bin/")]),t._v(" "),s("p",[t._v("nohup dotnet GWHost1.dll >/dev/null 2>&1 &")]),t._v(" "),s("p",[t._v("cd /opt/ganwei/dotnet/")]),t._v(" "),s("p",[t._v("#ls")]),t._v(" "),s("p",[t._v("cd /opt/ganwei/IoTCenter/IoTCenterWeb/publish/")]),t._v(" "),s("p",[t._v("dotnet IoTCenterWebApi.dll")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("构建流程")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("构建流程")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("在Dockerfile文件的同级目录，执行：docker build -t\n<镜像名称>:<版本号> .")])]),t._v(" "),s("li",[s("p",[t._v("构建成功后，先在服务器上运行镜像：docker run -itd -p\n<本机端口>:<容器端口> <镜像id>。")])]),t._v(" "),s("li",[s("p",[t._v("镜像运行成功后，将镜像推到华为云：")]),t._v(" "),s("p",[t._v("(1) 登录华为云，搜索SWR，进入容器镜像服务，点击总览下的pull/push镜像")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5196),alt:""}})])]),t._v(" "),s("p",[t._v("(2) 然后按照步骤，先登录华为云仓库")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5197),alt:""}})])]),t._v(" "),s("p",[t._v("(3) 之后是将镜像添加到组织")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5198),alt:""}})])]),t._v(" "),s("p",[t._v("(4) 最后就是推送镜像")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5199),alt:""}})])]),t._v(" "),s("p",[t._v("(5) 镜像推送完成后，在我的镜像中找到推送的镜像，将镜像类型改成公开")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5200),alt:""}})])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("常见问题排查")])]),t._v(" "),s("ol",[s("li",[t._v("运行镜像，提示Couldn't find a valid ICU package installed on the\nsystem异常")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("p",[s("img",{attrs:{src:a(5201),alt:"企业微信截图_1606960543806"}})]),t._v(" "),s("p",[t._v("(1) 安装ICU，执行yum install icu")]),t._v(" "),s("p",[t._v("(2) 修改项目配置文件.runtimeconfig.json，加入以下配置")]),t._v(" "),s("blockquote",[s("p",[t._v("{")]),t._v(" "),s("p",[t._v('"runtimeOptions":{')]),t._v(" "),s("p",[t._v('"configProperties":{')]),t._v(" "),s("p",[t._v('"System.Globalization.Invariant":true')]),t._v(" "),s("p",[t._v("}")]),t._v(" "),s("p",[t._v("}")]),t._v(" "),s("p",[t._v("}")])])]),t._v(" "),s("ol",{attrs:{start:"2"}},[s("li",[t._v("nginx配置")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("p",[t._v('vi /etc/nginx/nginx.conf 打开nginx配置文件进行配置 i进入编辑状态\n按"esc"退出编辑状态 按"shift+:" 输入wq 回车保存退出')]),t._v(" "),s("p",[t._v("service nginx restart 重启nginx服务")]),t._v(" "),s("p",[t._v("nginx -s reload 配置重载命令")]),t._v(" "),s("p",[t._v("nginx -s stop nginx服务停止")])]),t._v(" "),s("ol",{attrs:{start:"3"}},[s("li",[t._v("https证书更新")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("p",[t._v("编辑 /etc/nginx/nginx.conf 文件,添加ssl证书路径配置：vi\n/etc/nginx/nginx.conf")]),t._v(" "),s("p",[t._v("server{")]),t._v(" "),s("p",[t._v("listen 443;")]),t._v(" "),s("p",[t._v("server_name 域名;")]),t._v(" "),s("p",[t._v("...")]),t._v(" "),s("p",[t._v("ssl_certificate /https/1_mobai.luomengyuan.cn_bundle.crt;\n#指定服务器证书路径")]),t._v(" "),s("p",[t._v("ssl_certificate_key /https/2_mobai.luomengyuan.cn.key; #指定私钥证书路径")]),t._v(" "),s("p",[t._v("...")]),t._v(" "),s("p",[t._v("}")]),t._v(" "),s("p",[t._v("nginx -s reload")])]),t._v(" "),s("ol",{attrs:{start:"4"}},[s("li",[t._v("修改服务端口")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("p",[t._v("打开IoTCenter/bin目录下appsetting.json文件，修改httpPort/httpsPort为可用端口")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5202),alt:""}})])]),t._v(" "),s("ol",{attrs:{start:"5"}},[s("li",[t._v("运行镜像无法查看日志")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("p",[t._v("进入容器内，输入命令ps -ef | grep dotnet,杀掉进程kill -9\nGWHost1.dll,进入IoTCenter/bin目录，执行dotnet GWHost1.dll。")])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("注意事项及问题处理方法")]),s("p")]),t._v(" "),s("ol",[s("li",[s("p",[s("strong",[t._v("缺失OC依赖")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("缺失OC依赖")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5203),alt:"image-20201125112442723"}})]),t._v(" "),s("p",[t._v("进入容器 docker exec -it [容器id] bash")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5204),alt:"image-20201125112837740"}})]),t._v(" "),s("p",[t._v("检查是否将lib中的文件和conf文件夹复制到容器中IoTCenter/dll和/lib目录下")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("服务器上节点未彻底卸载")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("服务器上节点未彻底卸载")]),t._v(" "),s("p",[t._v("华为云上把节点删除了，但是服务器上没有执行删除节点的命令，所以节点部署的时候会提示，该服务器上已存在节点")]),t._v(" "),s("p",[t._v("在服务器执行：sh /opt/IoTEdge-Installer/uninstall.sh")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("登录提示用户名或密码错误")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("登录提示用户名或密码错误")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("未申请授权")]),t._v(" "),s("p",[t._v("查看容器docker ps >进入部署的容器 docker exec -it 容器ID\nbash>进入容器内cd IoTCenter/log>查看日志cat Xlog.txt")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5205),alt:""}})]),t._v(" "),s("p",[s("img",{attrs:{src:a(5206),alt:"image-20201126163406316"}})]),t._v(" "),s("p",[t._v("在容器运行后，如果登录系统提示用户名密码错误，则进入容器中查看日志，发现日志中打印出系统没有授权，请复制后面的注册码，去")]),t._v(" "),s("p",[t._v("企业微信->应用->审批->临时软件授权，申请一个IoTCenter软件的授权文件；")]),t._v(" "),s("p",[t._v("授权文件申请下来后，将授权文件上传到服务器/home目录下，然后执行")]),t._v(" "),s("p",[t._v("docker cp /home/AlarmCenter.shd [容器id]:/opt/ganwei/IoTCenter/bin")]),t._v(" "),s("p",[t._v("之后重启容器：docker restart [容器id]")])]),t._v(" "),s("li",[s("p",[t._v("数据库未升级")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("第一种方式，调用接口{IP}:{端口}/IoT/api/v3/SystemConfig/UpdateAesDatabase更新数据库，如果调用接口之后，还是提示用户名密码失败，则尝试第二种方式")])]),t._v(" "),s("li",[s("p",[t._v("进入容器，找到IoTCenter/bin目录下执行：dotnet GWE\nncrypt.dll，重启服务")])])])]),t._v(" "),s("li",[s("p",[t._v("登录中解密数据库中用户的账号密码失败")])])]),t._v(" "),s("blockquote",[s("p",[t._v("替换数据库文件，升级数据库")]),t._v(" "),s("p",[t._v("重启服务")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("备动态库需开放端口，容器与主机端口进行映射")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("备动态库需开放端口，容器与主机端口进行映射")]),t._v(" "),s("p",[t._v("(1) 首先获取容器的ip，执行：docker inspect [容器id]|grep IPAddress")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5207),alt:"image-20201127180108802"}})])]),t._v(" "),s("p",[t._v("(2) 然后查看NAT表中的DOCKER链，执行：iptables -t nat --list-rules\n> DOCKER")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5208),alt:"image-20201127180304664"}})]),t._v(" "),s("p",[t._v("仿照上图，我们添加一条自己的映射规则，将宿主的18081端口映射到172.18.0.6的8081端口上去，规则如下：")]),t._v(" "),s("p",[t._v("iptables -t nat -A DOCKER ! -i br-ba8e8b0c46c5 -p tcp -m tcp --dport\n17753 -j DNAT --to-destination 172.20.0.4:17753")])]),t._v(" "),s("p",[t._v("(3) 查看NAT表中的POSTROUTING链，执行：iptables -t nat --list-rules\n> POSTROUTING")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5209),alt:"image-20201127180433510"}})]),t._v(" "),s("p",[t._v("仿照上图中的规则，书写的规则如下：")]),t._v(" "),s("p",[t._v("iptables -t nat -A POSTROUTING -s 172.20.0.4/32 -d 172.20.0.4/32 -p\ntcp -m tcp --dport 17753 -j MASQUERADE")])]),t._v(" "),s("p",[t._v("(4) 查看FILTER表中的DOCKER链，执行：iptables --list-rules DOCKER")]),t._v(" "),s("blockquote",[s("p",[s("img",{attrs:{src:a(5210),alt:"image-20201127180653128"}})]),t._v(" "),s("p",[t._v("仿照上图书写规则如下：")]),t._v(" "),s("p",[t._v("iptables -t filter -A DOCKER -d 172.20.0.4/32 ! -i br-ba8e8b0c46c5 -o\nbr-ba8e8b0c46c5 -p tcp -m tcp --dport 17753 -j ACCEPT")])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("设备注册华为IOTDA未成功")])]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("设备注册华为IOTDA未成功")]),t._v(" "),s("p",[t._v("重启一下华为容器")]),t._v(" "),s("p",[t._v("docker stop [容器ID]")])])])]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"}),s("h4",[t._v("常用命令")]),s("p")]),t._v(" "),s("details",{staticClass:"custom-block details",attrs:{open:""}},[s("summary",[t._v("常用命令")]),t._v(" "),s("p",[t._v("查看容器命令：docker ps 或 docker ps -a")]),t._v(" "),s("p",[s("img",{attrs:{src:a(5211),alt:""}})]),t._v(" "),s("p",[t._v("进入容器命令：docker exec -it [容器ID] bash")]),t._v(" "),s("p",[t._v("重启容器命令：docker stop [容器ID]")]),t._v(" "),s("p",[t._v("查看容器日志：docker logs [容器ID]")]),t._v(" "),s("p",[t._v("退出容器命令：exit")]),t._v(" "),s("p",[t._v("查看空间命令：df -h")]),t._v(" "),s("p",[t._v("查看文件夹占用命令：du -sh *")]),t._v(" "),s("p",[t._v("查看文件日期：ls -l")]),t._v(" "),s("p",[t._v("删除文件或文件夹命令：rm -rf [文件名] （慎用）")]),t._v(" "),s("p",[t._v("编辑文件命令：vim [文件名]")]),t._v(" "),s("p",[t._v("复制文件命令：cp -rf 文件名")]),t._v(" "),s("p",[t._v("查看服务器环境：uname -a")])]),t._v(" "),s("h1",{attrs:{id:"iotedge安装指南"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iotedge安装指南"}},[t._v("#")]),t._v(" IOTEdge安装指南")]),t._v(" "),s("p",[s("a",{attrs:{href:t.$withBase("/download/iot安装指南.pdf"),target:"_blank"}},[t._v("安装指南")])])])}),[],!1,null,null,null);s.default=e.exports}}]);