• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-161  評論-223  文章-30  trackbacks-0
            描述
               nginx是一款著名的高性能開源Web與反向代理服務(wù)器,支持windows和linux操作系統(tǒng),因為在windows系統(tǒng)上還不支持SCM(服務(wù)控制管理),所以只能以控制臺方式運行,但這樣并不是在后臺運行,也不能在系統(tǒng)登錄前啟動。針對這些問題,本方法通過改進源碼,使nginx良好地支持了SCM,方便了部署運行

            特點
               最大地復用了nginx源碼;支持SCM,并兼容控制臺運行方式;統(tǒng)一處理異常退出而報告服務(wù)停止

            實現(xiàn)

               變換原主函數(shù)
                  將原來的main函數(shù)更名為ngx_main,并增加第3個參數(shù)is_scm來標識運行方式,非0表示服務(wù)方式,0表示控制臺方式,流程如下
                                                
                  圖上紅色部分為插入的邏輯,其它部分為nginx原來的邏輯。由于服務(wù)初始化須將錯誤記錄在log(日志)中,所以應(yīng)在初始化log模塊后調(diào)用

               增加主函數(shù)
                  這個主函數(shù)也就是程序入口main,可被控制臺或SCM調(diào)用,當被SCM調(diào)用時,注冊服務(wù)以及啟動服務(wù)控制調(diào)度程序,流程如下
                                                   
                  如果以命令行啟動nginx 也就是master進程(管理進程),或nginx產(chǎn)生worker進程(工作進程)時,那么以控制臺方式調(diào)用main,進而以is_scm為0調(diào)用ngx_main,當ngx_main返回時,就表示master或worker進程退出了   

               服務(wù)主函數(shù)
                  由SCM生成的一個邏輯線程調(diào)用,流程如下
                                                     
                  這里的邏輯線程代替了nginx的master進程,到這里就表明已經(jīng)以SCM方式運行了,所以以is_scm為1調(diào)用ngx_main,當ngx_main返回時,就表明master進程退出了,應(yīng)該更新服務(wù)狀態(tài)為已停止,然后返回表明當前服務(wù)結(jié)束了

               服務(wù)初始化
                  由ngx_main調(diào)用,見變換原主函數(shù)流程圖,流程如下
                                                      
                  由于在nginx實現(xiàn)中,有多處出現(xiàn)異常錯誤而直接退出,因此首先注冊了進程退出處理器,在其內(nèi)報告服務(wù)狀態(tài)為已停止,這樣只要當進程退出了,在SCM上就能看到已停止的狀態(tài)了

               服務(wù)控制處理器
                  由SCM的主線程調(diào)用,流程如下
                                                     
               
               調(diào)用關(guān)系
                  下圖左邊為master進程調(diào)用模塊與函數(shù),右邊為worker進程調(diào)用模塊與函數(shù),委托主函數(shù)是ngx_main
                        
            posted on 2019-11-20 19:45 春秋十二月 閱讀(878) 評論(0)  編輯 收藏 引用 所屬分類: Opensrc
            一本色道久久综合狠狠躁篇| 久久精品国产精品亚洲精品| 久久婷婷五月综合97色| 久久亚洲美女精品国产精品| 久久国产精品99国产精| 国产精品久久久久乳精品爆| 亚洲国产精品无码久久久久久曰| 99久久精品国产一区二区| 久久久久久久人妻无码中文字幕爆| 成人国内精品久久久久一区| 一本久久a久久精品综合夜夜| 久久夜色精品国产亚洲av| 亚洲午夜久久久影院| 日韩欧美亚洲综合久久影院d3| 老司机午夜网站国内精品久久久久久久久| 亚洲国产成人精品91久久久| 日韩乱码人妻无码中文字幕久久| 国内精品久久久久久久久| 99久久国产精品免费一区二区| 99久久精品免费国产大片| 奇米影视7777久久精品人人爽| 久久福利青草精品资源站| 三级三级久久三级久久| 久久亚洲精品无码播放| 久久久九九有精品国产| 色婷婷综合久久久久中文一区二区 | 亚洲伊人久久成综合人影院 | 天天久久狠狠色综合| 波多野结衣久久一区二区| 精品久久久久久无码人妻蜜桃| avtt天堂网久久精品| 麻豆AV一区二区三区久久| 久久精品卫校国产小美女| 久久久久人妻一区精品果冻| 伊人热人久久中文字幕| 99精品国产在热久久| 久久久久久久97| 国产精品毛片久久久久久久| 久久精品国产久精国产果冻传媒 | 久久综合伊人77777麻豆| 久久精品国产精品亚洲人人 |