• <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>
            隨筆-162  評(píng)論-223  文章-30  trackbacks-0
            描述
               nginx是一款著名的高性能開源Web與反向代理服務(wù)器,支持windows和linux操作系統(tǒng),因?yàn)樵趙indows系統(tǒng)上還不支持SCM(服務(wù)控制管理),所以只能以控制臺(tái)方式運(yùn)行,但這樣并不是在后臺(tái)運(yùn)行,也不能在系統(tǒng)登錄前啟動(dòng)。針對(duì)這些問題,本方法通過改進(jìn)源碼,使nginx良好地支持了SCM,方便了部署運(yùn)行

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

            實(shí)現(xiàn)

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

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

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

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

               服務(wù)控制處理器
                  由SCM的主線程調(diào)用,流程如下
                                                     
               
               調(diào)用關(guān)系
                  下圖左邊為master進(jìn)程調(diào)用模塊與函數(shù),右邊為worker進(jìn)程調(diào)用模塊與函數(shù),委托主函數(shù)是ngx_main
                        
            posted on 2019-11-20 19:45 春秋十二月 閱讀(883) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Opensrc
            久久亚洲精品成人无码网站| 欧美精品一区二区精品久久| 久久久久久久久久久| 精品无码久久久久国产动漫3d| 99精品久久精品一区二区| 久久99精品国产99久久| 日韩欧美亚洲国产精品字幕久久久| 狠狠色丁香婷婷久久综合| 久久精品视频网| 女人高潮久久久叫人喷水| 一本久久久久久久| 久久影院综合精品| 亚洲国产精品综合久久网络| 99久久99久久精品免费看蜜桃| 欧美午夜精品久久久久久浪潮| 久久99精品久久久久婷婷| 久久婷婷午色综合夜啪| A级毛片无码久久精品免费| 久久综合国产乱子伦精品免费| 色悠久久久久久久综合网| 国产农村妇女毛片精品久久| 99久久精品日本一区二区免费| 日本WV一本一道久久香蕉| 久久精品国产一区二区三区| 亚洲嫩草影院久久精品| 久久电影网2021| 久久精品天天中文字幕人妻| 久久精品aⅴ无码中文字字幕不卡 久久精品成人欧美大片 | 久久这里只有精品久久| 亚洲国产精品无码久久久秋霞2| 欧美精品一区二区久久| 久久香蕉国产线看观看猫咪?v| 成人精品一区二区久久久| 国产精品免费看久久久香蕉| 久久精品草草草| 99久久综合狠狠综合久久| 久久高清一级毛片| 亚洲精品tv久久久久久久久久| 久久99热这里只有精品66| 国色天香久久久久久久小说| 伊人久久大香线蕉亚洲五月天 |