部署:開機自啟與故障恢復(fù)配置)
十分鐘完成 ZLMediaKit Windows 服務(wù)部署開機自啟與故障恢復(fù)配置【免費下載鏈接】ZLMediaKitWebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT/STUN/TURN server and client framework based on C11項目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit本手冊指導(dǎo)你將 ZLMediaKit 部署為 Windows 服務(wù)實現(xiàn)開機自啟與故障自動恢復(fù)適用于服務(wù)器無人值守運行場景。按順序執(zhí)行即可全程約十分鐘。一、部署前確認執(zhí)行以下清單確認環(huán)境與依賴就緒已安裝 Visual Studio勾選 C 桌面開發(fā)工作負載與 CMake可在命令行執(zhí)行cmake --versionWindows 下網(wǎng)絡(luò)層依賴 wepollepoll 兼容實現(xiàn)隨 CMake 構(gòu)建自動集成無需單獨安裝源碼獲取執(zhí)行g(shù)it clone https://gitcode.com/GitHub_Trending/zl/ZLMediaKit構(gòu)建成功后確認 conf/ 目錄下config.ini的三項內(nèi)容日志級別由啟動參數(shù)-level控制服務(wù)模式下建議設(shè)為 info日志輸出目錄由-log-dir指定服務(wù)模式下必須指向可寫路徑否則日志丟失端口綁定以config.ini中[rtmp]的 1935、[rtsp]的 554、[http]的 80 為準(zhǔn)確認未被本機其他程序占用。[rtmp] port1935 [rtsp] port554二、服務(wù)化落地三步第 1 步服務(wù)包裝程序由于 MediaServer 本身不是服務(wù)程序需要一個薄的服務(wù)包裝層。它的職責(zé)用四點概括注冊服務(wù)主函數(shù)向 SCM服務(wù)控制管理器匯報服務(wù)狀態(tài)安裝服務(wù)控制處理器響應(yīng)停止、暫停、繼續(xù)指令以服務(wù)子進程方式拉起 MediaServer并傳遞-level、-log-dir等參數(shù)監(jiān)控子進程存活子進程退出時上報失敗狀態(tài)交由故障恢復(fù)機制處理第 2 步注冊服務(wù)與開機自啟以管理員身份打開命令提示符執(zhí)行注冊命令sc create ZLMediaKitService binPathD:\zlm\zlmediakit_service.exe startauto :: binPath 包裝程序完整路徑含依賴 dll 所在目錄startauto 開機自動啟動參數(shù)含義binPath指向服務(wù)包裝程序MediaServer 與 dll 需與其位于同一目錄或已配置環(huán)境變量startauto將服務(wù)設(shè)為自動啟動系統(tǒng)登錄后無需人工干預(yù)。第 3 步故障恢復(fù)配置執(zhí)行以下命令設(shè)置進程異常退出后的自動重啟策略sc failure ZLMediaKitService reset86400 actionsrestart/60000/restart/60000/restart/60000 :: reset86400 失敗計數(shù) 24 小時后清零restart/60000 每次重試前等待 60 秒共三次reset86400表示 24 小時無失敗則重置失敗計數(shù)避免長期運行后重試次數(shù)耗盡三個restart/60000依次對應(yīng)第 1 至第 3 次重啟動作間隔 60 秒便于依賴端口和磁盤資源先恢復(fù)。三、運維三件事權(quán)限服務(wù)默認以 LocalSystem 賬戶運行權(quán)限過高且不利于審計。建議創(chuàng)建專用本地賬戶如zlm_service僅授予服務(wù)目錄讀寫與日志目錄寫入權(quán)限再執(zhí)行sc qc ZLMediaKitService確認、必要時調(diào)整賬戶。日志通過-log-dir將日志固定到獨立磁盤分區(qū)避免與系統(tǒng)日志混寫利用內(nèi)置日志輪轉(zhuǎn)-log-slice控制文件數(shù)、-log-size控制單文件大小按天分割便于歷史查詢級別選擇生產(chǎn)環(huán)境用 info排障時臨時調(diào)至 debug事后改回資源為 MediaServer 進程設(shè)置內(nèi)存使用上限任務(wù)管理器 → 進程 → 設(shè)置內(nèi)存上限防止異常流累積撐爆內(nèi)存CPU 優(yōu)先級維持常規(guī)即可線程數(shù)通過-t參數(shù)按核數(shù)設(shè)置帶寬密集場景可配合系統(tǒng) QoS 策略限制該進程的出站帶寬四、上線前檢查清單sc query ZLMediaKitService返回 STATE 為 RUNNING依次探測 80、554、1935 端口連通telnet 127.0.0.1 1935等通過 HTTP-FLV 地址播放一路實際媒體流畫面與聲音正常事件查看器eventvwr.msc→ Windows 日志 → 系統(tǒng)無該服務(wù)相關(guān)的紅色錯誤重啟一次服務(wù)器確認服務(wù)隨開機自動拉起手動結(jié)束 MediaServer 子進程確認 60 秒內(nèi)自動重啟五、排障速查現(xiàn)象常見原因處理方式服務(wù)創(chuàng)建成功但無法啟動binPath路徑錯誤、含空格未加引號用sc qc ZLMediaKitService核對 binPath重執(zhí)行sc create前先用sc delete ZLMediaKitService清理服務(wù)啟動后立即停止端口被占用1935/554/80執(zhí)行netstat -ano查占用進程修改config.ini端口后重啟服務(wù)啟動報依賴缺失運行時缺少 VC 運行庫或 dll 與 exe 不在同目錄安裝對應(yīng) Visual C 運行庫將依賴 dll 與 MediaServer 放同一目錄服務(wù)狀態(tài) Unknown 或 1053 超時包裝程序未在規(guī)定時間內(nèi)調(diào)用服務(wù)匯報檢查包裝程序控制臺日志確認服務(wù)主函數(shù)已注冊且子進程拉起邏輯未卡死配置路徑錯誤是最常見的一類問題MediaServer 默認加載的是可執(zhí)行文件同目錄下的config.ini修改 conf/ 中的范例文件不會生效請以-c參數(shù)顯式指定或修改目標(biāo)目錄中的實際文件。結(jié)尾至此注冊、開機自啟、故障恢復(fù)與日常運維四部分均已落地ZLMediaKit 可作為無人值守的長期服務(wù)運行。后續(xù)可持續(xù)關(guān)注官方對 Windows 服務(wù)的原生支持進展逐步減少包裝層維護成本?!久赓M下載鏈接】ZLMediaKitWebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT/STUN/TURN server and client framework based on C11項目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考