ã«ããã®äžã§ãéçºè ãšã®ã€ã³ã¿ãã¥ãŒããã®ãããžã§ã¯ãã«é¢ãã詳现æ å ±ã
QïŒèªåã«ã€ããŠæããŠãã ãããããªãã¯äœãããŠããŸãããã©ãã§åããŠããŸããïŒ
YaroslavïŒç§ã¯é·ãéãœãããŠã§ã¢ãéçºããŠããŸãã Nexoft Companyã ç§ã¯äž»ã«Javaã§æžããŠããŸãããé«éã§äœããããå¿ èŠããããšãã«C / C ++ãæãåºãããšããããŸãã ããšãã°ããã©ãã£ãã¯ã®å€ããµã€ãçšã®ãããŒãã€ã¹ã¿ãŒãšã³ãžã³ã
QïŒããã§ã¯ãnxwebã¯ãããŒãããããšããç®çã§äœæãããŸãããïŒ
YaroslavïŒãããŒã ãã§ãªããããã¯æåã®ã¿ã¹ã¯ã®1ã€ã§ãã å°ãªããšããç¹å®ã®ã¿ã¹ã¯ã¯æœè±¡çã§ã¯ãããŸããã
QïŒé«ãã©ãã£ãã¯ãšã¯ã1ç§ãããã®ãªã¯ãšã¹ãæ°ã§ãã
YaroslavïŒçŸåšã1ç§ãããçŽ100件ã®ãªã¯ãšã¹ããæ¥ãŠããŸãã ãããã®äžéšã¯Tomcatã«éä¿¡ãããŸãã ãã ããåHTMLããŒãžã«ã¯æ倧20åã®ãããŒã³ãŒããæ¿å ¥ãããŸãã ãµãŒããŒã¯ååãšããŠé£ããã®ã§ãçãHTMLãã©ã°ã¡ã³ããè¿ããšããåçŽãªã¿ã¹ã¯ã§åœŒã«è² æ ããããããªãã ãã§ãã ãã¡ãããçç ã§ãããŸããããããããŸããããç°¡åãªæ¹æ³ãæ¢ããŠããããã§ã¯ãããŸããã
å®éãç§ã¯é·ãéãã®ãããªãšã³ãžã³ãæã£ãŠããŠãããã¯Apacheã®ã¢ãžã¥ãŒã«ãšããŠæžãããŠããŸããããæè¿ããã¹ãŠã®ãããžã§ã¯ããnginxã«ç§»è¡ããŠããŸãã
äžè¬ã«ãApacheãšnginxã®ã¢ãžã¥ãŒã«ãæžãã®ã¯æ¥œããçµéšã§ã¯ãããŸããã 移æ€æ§ãžã®æžå¿µãã課ãããèŠæãåãããããããããŸãã ããã«ããããã¯ãã«ãããã»ã¹ã§ãããããã¯å¥ã®åé¡ã§ãã ã¹ã¬ããã䜿çšãããšãç©äºããã£ãšç°¡åã«ãªããŸãã å ±æã¡ã¢ãªã¯è²Žéã§ãã ç§ã¯Javaã«æ £ããŠããŸãã ç§ã¯nginxã®äžã«ç»ããŸãããããã¹ãŠãéåžžã«é¢åã§ãããã«å ±æã¡ã¢ãªãªã©ããããŸã
Mongooseã®ãããªãã€ã¯ããšã³ãžã³ã«ã¢ããªã±ãŒã·ã§ã³ãå®è£ ããããšæ±ºããã®ã§ãããå ã»ã©ãããã¯ãŒã¯ã§èŠã€ããŸããã 圌ã¯æãå§ããããã«ããã€ãã®éžæè¢ãèŠã€ããŸããã G-WANã ã¯ããŒãºããœãŒã¹ãé€ããŠãç§ã¯ããã«é¢ãããã¹ãŠããšãŠãæ°ã«å ¥ããŸããã G-WANã¯éçãªè·é人ãšããŠã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãšããŠæ£ç¢ºã«è©ŠããŸããã ããããããã«ã°ãªããã«ééãå§ããŸãããã°ãªããã¯ãéããããã³ãŒãã®ããã«èŠã€ããŠä¿®æ£ããããšãã§ããŸããã§ããã
ã ãããç§ã¯Mongooseã«ã²ãããæžããŠãããã©ãŒãã³ã¹ããã¹ããå§ããG-WANãšæ¯èŒããŠãã§ã«éåžžã«äœãããšãããããŸããã 2500ã¹ã¬ãããå®è¡ããããšãæšæž¬ããã®ã¯åŸã«ãªã£ãŠããã§ããããæåã¯8ã16ã§ååã ãšæããŸããã éåžžã«å€ãã®å ŽåãäœããããŸããã
QïŒmongooseã¯ãªã¯ãšã¹ãããšã«1ã€ã®OSã¹ã¬ããã䜿çšããããã§ããïŒ
YaroslavïŒã¯ããå®éã2500ã¹ã¬ããã解決çã§ã¯ãããŸããã 圌ãã¯å€§éã®ã¡ã¢ãªãæ¶è²»ããåã³ã2501çªç®ã®ãªã¯ãšã¹ãã衚瀺ãããŸã-ãããŠããã«ã¡ã¯...
圌ã¯ããã«æ·±ãæãå§ããmicrohttpdãšlibeventãèŠã€ããŸããã ããã©ãŒãã³ã¹ã®ç¹ã§ã¯ãG-WANãšæ¯èŒãããšãèŠãç®ãéçœãèŠããŸããã ãã®ãã¹ãŠãæ±ã£ãŠãœãŒã¹ã詳ãã調ã¹ãŠãããšãã«ãWebãµãŒããŒã®äœæã¯ããã»ã©é£ãããªãããšã«æ°ä»ããŸããã ããšãã°ãmongooseã§ã¯ãHTTPå¿çå šäœãã¢ãžã¥ãŒã«éçºè ã«æåã§æžã蟌ãå¿ èŠããããŸãã
libeventã¯æãææã§ããããã·ã³ã°ã«ã¹ã¬ããã«èŠããŸããã libevïŒlibeventã®è»œéã®ä»£æ¿ïŒã«å¯ŸããŠãåãããšãããçŽãããšã«ããŸããã ããã§nxwebãçãŸããŸããã äž»ãªæåã®ç®æšã¯ããã«æ©èœã®ãµãŒããŒã§ã¯ãªããC Webã¢ããªã±ãŒã·ã§ã³ã§ãã ãã§ã«Cã§äœããéçºããŠããå Žåã¯ããããéåžžã«é«éã«åäœããããã®ã§ããã€ãŸãããã©ãããã©ãŒã ãé«éã§ãªããã°ãªããŸããã ãããŠãããªãã¯ãã³ã°ãŒã¹ã®äžã§æžããŸãããããŠã圌ãè©Šã¿ããã®ã®ããã«ã圌ããã¬ãŒãã§ãã¹ãŠããªãªãŒã¹ãããã©ããçåã«æãã§ãããã
誰ãšã競äºããã€ããã¯ãããŸããã§ããã é床ã®æšæºã«é¢ããŠã¯ãG-WANã«è¿ã¥ãããã£ãã®ã§ãã ãããããããžã§ã¯ããå ¬éããããšããã«ãããã«æçŽãæµããŸããã 圌ãã¯çç§ãèŠã€ãå§ããŸããã ãã®ãããG-WANãè¿œãæãã«ã¯ãããã«æ°æ¥ãè²»ãããªããã°ãªããŸããã§ããã
ç§ã¯åœŒãè¿œãæãããã©ããããŸã æ確ã§ã¯ãããŸããã ç§ã®ã³ã³ãã¥ãŒã¿ãŒã§ã¯ã圌ãè¿œãè¶ããŸããã 圌ããèšãããã«ããã®é åã§ã ç¹°ãè¿ããŸããããããããã¹ãŠã®ã¢ãŒãã§ã¯ãããŸããã
ã¡ãªã¿ã«ãnginxã¯éåžžã«åãã§ããŸããã HTTPã¹ã¿ãã¯ã®é床ã¯ãG-WANã®é床ãããé«éã§ãïŒæ£ããæ§æãããŠããå Žåã¯ãã¡ããïŒã ãªã¯ãšã¹ããããŠããªãå Žåãnginxã¯ã¡ã¢ãªå ã®ãã¡ã€ã«ããã£ãã·ã¥ããŸããã äžè¬çã«nginxãšç«¶åããæå³ã¯ãããŸããã ãã®ãããªæ©èœçãªãµãŒããŒãã©ã®ããã«é«éãæäŸãããã¯é©ãã¹ãããšã§ãã ããã§ãstrcatã®ä»£ããã«sprintfãåºæ¬çã«äœ¿çšãããšã1ç§ããã5ã1äžãªã¯ãšã¹ãã§ããã©ãŒãã³ã¹ãçºæ®ã§ãããšç¢ºä¿¡ããŸããã ã€ãŸã äœåãªCPUåœä»€ããšã«ãã§ã«æŠãã¯çµãã£ãŠããŸãã
QïŒããã§ã¯ãnxwebã¢ãŒããã¯ãã£ã«ã€ããŠç°¡åã«èª¬æããŠãã ããã
YaroslavïŒã¡ã€ã³ã¹ã¬ããã¯ãœã±ããããªãã¹ã³ããçä¿¡æ¥ç¶ããããã¯ãŒã¯ãããŒã«ããã·ã¥ããŸãïŒåã¹ã¬ããã¯ãã¥ãŒããã¯ã¹ãé¿ããããã«ç¬èªã®é çªãæã£ãŠããŸãïŒã ãããã¯ãŒã¯ã¹ããªãŒã ïŒããã»ããµã³ã¢ã§äžåºŠã«1ã€ãã€å®è¡ããã®ãçã«ããªã£ãŠããŸãïŒã¯ãHTTPãããã³ã«ãæäŸããŸãã ãªã¯ãšã¹ãããã³ãŒããããã³ãã©ãŒã¢ãžã¥ãŒã«ã«æž¡ããŸãã ã¯ãŒã«ãŒã¯ãªãã·ã§ã³ã§ããããããã¯ãŒã¯ãããŒãåæ¢ããªãããã«ãäœéãã³ãã©ãŒã®ã¿ããµããŒãããããã«èšèšãããŠããŸãã
ããã§ãã¢ãžã¥ãŒã«ã«ã¯ã³ãŒã«ããã¯ããããã¡ã€ã³ã«ãŒãã«å ¥ãåã«ãµãŒããŒã«ãã£ãŠåŒã³åºãããŸãã åé€ãŸãã¯çœ®æã§ããmain.cãã¡ã€ã«ããããŸãã ãã®æ©èœã¯ãµãŒãã¹ã®ã¿ã§ãããã°ãã¡ã€ã«ãéãã_nxweb_mainïŒïŒã«å¶åŸ¡ã転éããŸãã 圌ã¯ãŸããæªéãçºå°ããæ¹æ³ãç¥ã£ãŠããŸãã ããã«ïŒ1ã€ã®æªéãã2çªç®ã®ïŒnxwebãå®éã«ã¹ãã³ããïŒãåæ¢ããªãããšãä¿èšŒããŸãã å éšããŒã¢ã³ãã¯ã©ãã·ã¥ããå Žåãæåã®ããŒã¢ã³ãèªåçã«åèµ·åããŸãã å¿ èŠã«å¿ããŠãmain.cãä»ã®ãã®ã«çœ®ãæããããšãã§ããŸãã æãéèŠãªããšã¯ã_nxweb_mainïŒïŒãåŒã³åºãããšã§ãã
QïŒåãããã¯ãŒã¯ã¹ããªãŒã ãã«ãŒããåãå ¥ããªãã®ã¯ãªãã§ããïŒ ãã®åŸãOSã¯æ¥ç¶ãåæ£ã§ããããã«ãªããç°ãªãã«ãŒãã«ã§è€æ°ã®åãå ¥ãã䞊è¡ããŠè¡ãããšãã§ããŸãã
YaroslavïŒäž¡æ¹ã®ãªãã·ã§ã³ãè©ŠããŸããã ã¡ã€ã³ã®åå ãªãã§ãããã¯ãŒã¯ãããŒãåãå ¥ããŸãã é床ã®éãã¯èŠåœãããŸããã§ããããåäžã®ã¢ã¯ã»ãã¿ãŒã«æ»ããŸãããããã«ãããæ¥ç¶ãšã©ãŒã®å²åãæžå°ããããã«æããŸããã nginxãšG-WANã䜿çšãããšãæ¥ç¶ã®äžéšãããªãŒãºããè² è·ãããããŸããã ãã³ãããŒã¯ããŒãžã§å®éã®åæå®è¡æ§ã«é¢ããã³ã¡ã³ããåç §ããŠãã ããã
QïŒãªãã»ã©ã æåã®ããŒãžã§ã³ã§ã¯libevã䜿çšããŠããŸããããä»ã§ã¯wikiã¯libevã«äŸåããªããšè¿°ã¹ãŠããŸãã äœãå€ãã£ãïŒ
ã€ãã¹ã©ãŽïŒç§ã¯ãªãããæžããŸããã ããããŸãã«ãG-WANãè¿œãè¶ãããã«æ¯ãå¹ããããããšããæå³ã§ãã ç§ã®ããŒãºã®ããã«æçãããŠãããç¬ç«ãããããžã§ã¯ãã§ã¯ãããŸããã èšãæããã°ãç§ã¯çŸåšepollãçŽæ¥æäœããŠããŸãã nxwebã¯å®å šã«ç§»æ€æ§ããããŸããã Linuxã§ã®ã¿åäœããã«ãŒãã«> = 2.6.22ã§ãåäœããŸãã Edge-Triggered epollã䜿çšããŠããŸãããlibevã¯ãã®äžèæ§ã®ãããµããŒãããŠããŸããã ã¯ããlibevã¯éåžžã«ã¯ãŒã«ãªãã®ã§ããç§ã¯ããããããŸããã人ã ã¯ãããããéãæãã§ããŸããã ããã¯èŠããå¿ èŠããããŸããã
QïŒãšããžããªã¬ãŒã¯æåŸã®ã²ã€ã³ã§ãããïŒ
ã€ãã¹ã©ãïŒããã ãã§ã¯ãããŸããã ãŸããã³ãŒããäœæããå¿ èŠããããŸããã ç¹ã«ãsprintfãæ°ããã¡ã¢ãªããã¯ã¢ããã·ã¹ãã ãªã©ãé€å€ããŸãã ããããã¹ãŠãlibevã«æ»ããšããèãããããŸãã æªãã¯ãªããããããŸããããè¡ããã©ããã¯ããããŸããã 移æ€å¯èœãªã³ãŒããäœæããå¿ èŠã¯ãããŸããã ãã¹ãã£ã³ã°ã¯ã»ãšãã©ã®å ŽåLinuxäžã§è¡ãããŸãã ãŸããlibevã¯ãnxwebããã«ãããããã«ã€ã³ã¹ããŒã«ããå¿ èŠãããè¿œå ã®äŸåé¢ä¿ã§ãã ãã€ãã¹ãã
QïŒIgor Sysoevãšlibevã®èè ã¯ãepollã«ã¯å€ãã®åé¡ããããšäž»åŒµããŠããŸãã ãŸã åºäŒã£ãããšããããŸããïŒ
YaroslavïŒçŸä»£ã®ã³ã¢ã®ãããã®åé¡ããã§ã«ã¯ãªãŒã³ã¢ãããããŠããããšãæåŸ ããŠããŸãã ããã§ããäœå¹Žãçµã¡ãŸããã 2.6.32ããã³3.0.0ã§ãã¹ãããŠããŸãããåé¡ã¯çºçããŠããŸããã
QïŒã¡ã¢ãªã®ããã¯ã¢ããã¯ã©ãã§ããïŒ ã·ã¹ã³ã«ãå°ãªãããããã«ãããçš®ã®å€§ããªããŒã«ãå²ãåœãŠãŠããŸããïŒ
YaroslavïŒæ¥ç¶çšã®ããªãŒãªã¹ããšãå¿çãçæããããã®ç¬èªã®obstack察å¿ç©ã
QïŒHTTPããŒãµãŒã®ç¬èªã®å®è£ ã䜿çšããŠããŸããããŸãã¯äœãæºåãã§ããŠããŸããïŒ
YaroslavïŒç¬èªã®å®è£ ã ãã¡ãããHTTPãããã³ã«ã®ãã¹ãŠã®ãã¥ã¢ã³ã¹ãå®å šã«ãµããŒãããŠããããã§ã¯ãããŸããã ããšãã°ãç§ã¯100-continueãŸãã¯chunked-encodingãæã£ãŠããŸãã ç¹°ãè¿ããŸããã茞éçµ±èšã¯ã¢ãžã¥ãŒã«ã®ä»äºã§ãã ã«ãŒãã«ã¯èŠæ±ã解æãããã³ãã©ãŒãåŒã³åºããå¿çãåä¿¡ããHTTPã§ã©ããããŠãã¯ã©ã€ã¢ã³ãã«éä¿¡ããŸãã ã€ãŸã ETagãšRangeã¯ãã¹ãŠããã«ãããŸã-ããã¯ã¢ãžã¥ãŒã«ã®ã¿ã¹ã¯ã§ãã çŸåšãsendfile.cã¢ãžã¥ãŒã«ã¯ã¡ã€ã³ããããŒã®ã¿ãçæããŸãããããããRangeãšIf-Modified-Sinceãããã«ãµããŒãããã§ãããã
ã¯ãããããããšã©ãŒããã§ãã¯ããæ¢è£œã®ããŒãµãŒããããŸãã ããããäžæ¹ã§ãç§èªèº«ã®ããŒãµãŒã§ã¯ãä»ã®èª°ããããã圌ããããã«ã€ããŠç§ã«èšã£ãå Žåãç§ã¯ããè¿ éã«ãšã©ãŒããã£ããããŸãã ããã§ã¯ãå®éã«è²»çšã¯CPUåœä»€ã«è²»ããããŸãã ãŸããããŒãµãŒã®ãã¹ãŠã®ç¬ç«ãããããžã§ã¯ãã¯éåžžã«å æ¬çã§ãããããããŒãµãŒã®ããã©ãŒãã³ã¹ã«çåã®äœå°ã¯ãããŸããã
QïŒäžæ¹ãnginx以å€ã«ã¯æŠéãµãŒããŒã®å€éšããŒãããªãã¹ã³ãããŸããã ãããŠãã®åŸããã¹ãŠã®äžæ£ãªãªã¯ãšã¹ãã¯ãã§ã«ãã£ã«ã¿ãªã³ã°ãããŠããŸãã
YaroslavïŒçŸæç¹ïŒããŒãžã§ã³2.0ïŒã§ã¯ãnxwebã¯å ¬éããæºåãã§ããŠããŸããã ã»ãšãã©ã®å Žåãå®éã®ã¢ããªã±ãŒã·ã§ã³ã¯Cã¹ã¯ãªããã§æ§æãããŠããã ãã§ã¯ãããŸããã Javaãšstaticã®äž¡æ¹ãšãã®ä»ãã¹ãŠãçµã³ä»ããå¿ èŠããããŸãã ãã£ããã®å®è£ ã«é¢ããŠã¯ãäœåãã®åææ¥ç¶ãç¶æããããšãéèŠã§ãã
QïŒCã«ã¯ãŠãŒã¶ãŒã©ã³ãã¹ã¬ãããäœæããã©ã€ãã©ãªãããã€ããããŸããããã®ãã¡ã®1ã€ã¯mongrel2ã§äœ¿çšãããlibtaskã§ãã åã³ã«ãŒãã³ã«ã¯ç¬èªã®ã¹ã¿ãã¯ããããããã©ã€ãã©ãªã«ã¯ã¹ã¿ãã¯ãåãæ¿ããããã®è€æ°ã®ã¢ã»ã³ãã©ãŒåœä»€ãå«ãŸããŠããŸãã ããã«ãããon_requestãon_successãªã©ã®ã³ãŒã«ããã¯ãªãã§éåžžã®ã·ãªã¢ã«ã³ãŒããèšè¿°ã§ããŸãã
YaroslavïŒã¯ããã³ã«ãŒãã³ã«ã€ããŠèããããšããããŸãã ãã ããã³ãŒã«ããã¯ã§ãã¹ãŠããã§ã«èšè¿°ããŠããå Žåãã³ã«ãŒãã³ã«åãæ¿ããŠãããã©ãŒãã³ã¹ã¯åäžããŸããã äœåãªã¡ã¢ãªã®ã¿ãã¹ã¿ãã¯ã®ã¹ãã¬ãŒãžã«å ¥ããŸãã ã¯ãããããŠgdbã®åé¡-ãŸããæãå¿«é©ã§ã¯ãããŸããã ããã¯å¥œã¿ãšç¿æ £ã®åé¡ã§ãã ã³ã«ãŒãã³ã«æ £ããå¿ èŠããããŸãã ããã¯ç¹å¥ãªæŠå¿µã§ãã
QïŒãªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ã ãã§ãªããããšãã°ãéäžã§ã¹ãªãŒãããããããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããšãã«ããã³ãã©ãŒã®ã³ãŒãããµããŒãããããšã§å€§ããªã¡ãªãããåŸãããŸãã ãã¡ãããåçŽãªãããŒã®ã²ããã®ããã«ããããã«ã¯æå³ããããŸããã
YaroslavïŒã¹ãªããã€ã³ãšåºå°ã«è¡ãããã«-ãããç§ãåŽåè ã«æäŸãããã®ã§ãã ãããŠæåã®ãã®ããã§ãã¯ããŸããã 100人ã®ã¯ãŒã«ãŒãæ§æãããåã¯ãŒã«ãŒã1ç§éã¹ãªãŒããããšããµãŒããŒã¯1ç§ããã100ãªã¯ãšã¹ããã¹ã ãŒãºã«ãããããããšãªãåŠçããŸãã G-WANãnginxããããåŠçã§ããŸããã 圌ãã¯æ¯ç§3-4ã®ãªã¯ãšã¹ããçºè¡ããããæãã«ãã³ã°ããŸãã
ãã ããç·æ¥ã«ããŒã¹ã«ã¢ã¯ã»ã¹ããå¿ èŠãããå Žåã¯ããã®ç®çã®ããã«éããããã³ã°ã¢ããã¿ãäœæã§ããŸãã ãµãŒãã¬ããããã®åŒã³åºãã1ã€ãããŸã-ããŒã¿ããŒã¹èŠæ±ããã¥ãŒã«å ¥ããã³ãŒã«ããã¯ãç»é²ããŸãã ãã®åŸ©åž°åŸãã³ãŒã«ããã¯ã¯åŒãç¶ãæ©èœããŸãã ååãšããŠãããã§ã¯ãå·çã®äŸ¿å®äžãã³ã«ãŒãã³ã«ã€ããŠèããããšãã§ããŸãã
QïŒnxwebã®çŸåšã®ã¹ããŒã¿ã¹ãã©ã®ããã«èª¬æããŸããïŒ å®å®æ§ãééãïŒ
ã€ãã¹ã©ãŽïŒããŠãç§ã¯ãã§ã«ããªãã®ãã©ãã£ãã¯ã®ãããµã€ãã®ããã¯ãšã³ããšããŠãããå°ç¡ãã«ããŸããã çç£éå§ã 1åã®åèµ·å/倱æã§ã¯ãªãã1ãæãçµéããŸããã ããã¯ãšã³ãã¯ç«ã®æãå³ããæŽç€Œã§ã¯ãããŸãããã
ã¹ããŒã¿ã¹ã¯ã¢ã«ãã¡ã ãšæããŸãã ç¹ã«ãnxwebã®ãã¹ãŠã®æ©èœãå®å šã«ãã¹ããããŠããããã§ã¯ãããŸããã ããšãã°ããã£ã³ã¯åãããèŠæ±ãšã³ã³ãŒãã ãã¹ãã±ãŒã¹ã§ã¯æ©èœããŸãããäœããããã¢ãããããã¯ããããŸããã ãŸããã¯ã©ã€ã¢ã³ãã®åäœãæ£ãããªãå Žåã®å®å®æ§ãäžæã§ãã ããšãã°ããšã©ãŒã®ãããªã¯ãšã¹ãã¯å€±æã®åå ã«ãªããŸãã
çŸåšã®æ®µéã§ã¯ãŸã åé¡ããããŸããh-ãã¡ã€ã«ãããŒã¿æ§é ãªã©ãç©æ¥µçã«å€æŽããŠããŸãã
QïŒå人çã«ãnxwebã®æœåšçãªéçºè ãšããŠããã¹ãŠã®ãªã¯ãšã¹ãã®åŠçãšãURLã®æ¯èŒãsendfileãããããŒã®æ¿å ¥ãCookieã®è§£æãããã¯ãšã³ããžã®è»¢éãªã©ã®è£å©æ©èœã®åãã©ã€ãã©ãªïŒããã¯ã¢ãžã¥ãŒã«ã®åœ¢åŒã§é©åã§ãïŒãå®å šã«å¶åŸ¡ããæ©èœãå¿ èŠã§ãã ããã¯ãnxwebã§ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ãããã°ã©ãã³ã°ããããšãæ³åããæ¹æ³ã§ãã
ã€ãã¹ã©ãïŒããã¯ã»ãŒç§ã®ã¢ãããŒãã ãšèšããªããã°ãªããŸããã ãµãŒããŒãæ§æã§ããåºæ¬æ©èœãäœæããŸãã ãã ããäœããã®æ§æãã¡ã€ã«ã®å©ããåããã«ãCã§æ§æããŠãã ããã ãªããªããnginxãæã€èšå®ã®é¡äŒŒç©ãäœæããããšã¯éåžžã«é£ããäœæ¥ã ããã§ãã
QïŒæ¬¡ã®è³ªåã¯ãããã®å¯èœæ§ãé«ãã§ãããWindowsãµããŒãã«ã€ããŠã©ãæããŸããïŒ
ã€ãã¹ã©ãïŒ99ïŒ é€å€ã ç§ã¯éåžžãã³ãŒãã®ç§»æ€æ§ãå·éã«èŠãŠããŸãã å®éãnginxã®å éšã€ã³ã¿ãŒãã§ã€ã¹ïŒããã³ApacheïŒãéåžžã«æ··ä¹±ããŠããã®ã¯ã移æ€æ§ã«é¢ããæžå¿µã®ããã§ãã ã³ãŒãã®ç§»æ€æ§ã®ããã«ãææ°ã®ãã¯ãããžãŒãæŸæ£ããå¿ èŠããããŸãã ä»ã®ãšãããç§ã¯Linuxã®ã¿ã«éäžããããšæã£ãŠããŸãã
QïŒG-WANã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®èªåã³ã³ãã€ã«ãšããããªã䟿å©ãªæ©èœããããŸãã ãã¡ãããã»ãã¥ãªãã£ãã³ã³ãã€ã©ãã©ã°ããã®å Žã§ã®æŽæ°ãªã©ãå€ãã®æªè§£æ±ºã®è³ªåããããŸãã åãæ©èœãnxwebã«è¿œå ããäºå®ã¯ãããŸããïŒ
YaroslavïŒã¯ããç§ã¯åœŒå¥³ãæ¬åœã«å¥œãã§ããã ããããç§ã¯ãŸã èšç»ããŠããŸããã äœåãªExtraãããã¯ãnxwebãèªåã®ããŒãºã«å®å šã«äœ¿ãå§ããããšã«æ±ºããŠè¿ã¥ããŸããã
QïŒããŠãããå·®ãè¿«ã£ã質åã¯ãnxwebãã©ã®ãããªåœ¢ã§é åžããäºå®ã§ããïŒ ãœãŒã¹ããªãŒïŒ å³æžé€šïŒ éç/åçïŒ
ã€ãã¹ã©ãïŒãããŸã§ã®ãšãããç§ããã§ã«é åžããŠãããã®ã ãã§ãã ãœãŒã¹ãããŠã³ããŒãããŠmakeãå®è¡ã§ãããªãŒãã³ãªãªããžããªã çŸæç¹ã§ã¯ããããžã§ã¯ãã®å®å šãªã³ã³ãã€ã«ã«ã¯æ°ç§ããããŸãã å³æžé€šã«æ害ãäžãããã€ã³ãã¯ãŸã èŠåœãããŸããã
QïŒHello Worldã¢ããªã±ãŒã·ã§ã³ãæžããããšããŸãããã ç§ã®è¡å
YaroslavïŒhello.cã¯ã¢ãžã¥ãŒã«ãã³ãã¬ãŒãã§ãã ããã«ãMakefileã«ã¯ãã¢ãžã¥ãŒã«ã®æ¥ç¶ã«é¢ããå°ããªã³ã¡ã³ãããããŸãã ç¹å¥ãªå€æ°SRC_MODULESããã³INC_MODULESããããŸãã ããã«ãmodules.cã§ã¢ãžã¥ãŒã«ãžã®ãªã³ã¯ãè¿œå ããå¿ èŠããããŸãã
ã¢ãžã¥ãŒã«ã䜿çšããããã»ã¹ã«ã¯ãç¹ã«ã¢ãžã¥ãŒã«ãããã«å€ãå Žåã¯ãäœããã®æ¹æ³ã§ããé©åã«è£ åããå¿ èŠãããããšã«åæããŸãã
ã¢ãžã¥ãŒã«ã®çµç¹çãªéçºã¯æ¬¡ã®ããã«ãªããŸããnxwebãbitbucketã§ãã©ãŒã¯ããããnxwebãå¥ã®å Žæã«ã¯ããŒã³ããŸãã ããã§éçºãè¡ããã³ããããããªã©ã nxwebãæŽæ°ããã«ã¯ãhg pull ... / nxwebãå®è¡ããŸã
QïŒäœããã®ããã¥ã¡ã³ããå¯èœãªã¢ãžã¥ãŒã«ã®èª¬æãå¿ èŠã§ãã å žåçãªåé¡ã解決ããäŸã
YaroslavïŒhello.cã®äŸãããéããããããå€ãã®ããšãæããã§ãã ãããŠãæ®ãã¯ãœãŒã¹ã³ãŒãã®ã¿ã§ãã bitbucketã«ã¯wikiããããããã¥ã¡ã³ãã®äžéšããããŸãã
QïŒæ¬¡ã«-èå³ã®ããéçºè ã«é£çµ¡ããå Žæã ãã¥ãŒã¹ã¬ã¿ãŒ/ãã©ãŒã©ã ã æŽå²ãšæ€çŽ¢ãå«ã質åãšåçã®å Žæã
YaroslavïŒ å æ¥ ã2ã€ã®Googleã°ã«ãŒãnxwebãšnxweb-ruãäœæããŸããã
QïŒå®å®ããŒãžã§ã³ã¯ãã€APIãããªãŒãºããŸããïŒ
ã€ãã¹ã©ãŽïŒãããããããªã... APIã®åçµã¯ããããã§ã¯ãªãã ãã ããã¢ãžã¥ãŒã«ã®å€æŽã®ç¬¬1ããŒãžã§ã³ãšç¬¬2ããŒãžã§ã³ã®éã¯æå°éã§ããã ãµãŒããŒã®å éšããã¹ãŠããçŽããããšããäºå®ã«ããããããã
QïŒããã¯è¯ãå åã§ãã ã¢ããªãŠãŒãã£ãªãã£ã©ã€ãã©ãªãæ§ç¯ããäºå®ã¯ãããŸããïŒ å ·äœçã«ã¯ããã®ã³ã°ããã³ãã¬ãŒããšã³ãžã³ãããããŒã®æäœãCookieã
YaroslavïŒããããŒãšCookieã¯æ¢ã«ããŒãã«ã«è§£æãããŠãããååã§ååŸã§ããŸãã ä»ã«äœãã§ããã®ãåãããŸããã access_log-ãŸã å¿ èŠãããŸããã§ãããååãšããŠã¯è€éã§ã¯ãããŸããããäœæ¥ãå€§å¹ ã«é ããªããŸãã è£å ããããããã·é¢æ°ã§å§ãŸããŠãŒãã£ãªãã£ã©ã€ãã©ãªããšæããŸãã
QïŒã¢ã¯ã»ã¹ãã°ã¯å¿ èŠãããŸãããã¢ããªã±ãŒã·ã§ã³ã®ãã°ãå¿ èŠã§ãã
YaroslavïŒãã®ã³ã°ã¯äžè¬çã§ãã ããããerror_logãé¢æ°nxweb_log_errorïŒ ""ã...ïŒã åè¡ã®åŸã«ãã©ãã·ã¥ãããŸãã
QïŒããã«ãèšç»ã«ãããšã ã¹ã¬ããã®æ°ãèªåçã«æ§æããããšã¯çŽ æŽãããããšã§ãã ããã«ã¯2ã€ã®æ¹åããããŸãã1ïŒèµ·åæã«ãã³ã¢ã®æ°ã決å®ããéåžžã«å€ãã®ã¹ã¬ãããé 眮ããŸãã2ïŒLAãæå®ãããå€ãäžåã£ãŠããéã«æ°ããã¹ã¬ãããçæããŸãã
YaroslavïŒèªåèšå®ã¯å€§ããªåé¡ã§ãã nxwebã¯ãååãšããŠãåã³ã³ãã€ã«ä»¥å€ã®æ¹æ³ã§ãŸã æ§æãããŠããŸããã 1ã€ã®ãã©ã¡ãŒã¿ãŒãèªåçã«æ§æå¯èœã«ããããšã¯çã«ããªã£ãŠããŸãããããããŸããã å®éãèµ·åæã«èªåçã«æ±ºå®ãããæ°ã®ã¹ã¬ãããç°¡åã«èµ·åã§ããŸãã å®è¡å¯èœã§ãããããã»ã¹å ã®ã¹ã¬ãããéå§ãŸãã¯åæ¢ããããšã¯ããå°ãå°é£ã§ãã
å®çšçãªç®çã®ããã«ãç§ã¯ãŸã ãããã·ã®å®è£ ãèŠãŠããŸãã äž»ã«Javaã§ã ãããç§ãåãçµãã§ãããã®ã§ãã 次ã«-SSLããããŒãžããã£ãã·ã³ã°ã ããŒã¿ããŒã¹ãžã®ã€ã³ã¿ãŒãã§ãŒã¹ãããããŸããã
ããã§ããªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã¯å®å šã«ãããã¡ãªã³ã°ãããŸããã ããã¯ãäžéšã®ã¿ã¹ã¯ïŒããšãã°ããã¡ã€ã«ã®ã¢ããããŒãïŒã«æªãå ŽåããããŸãã ãããã£ãŠãéšåçã«åä¿¡ããããŒã¿ãã³ãã©ãŒã®æŠå¿µãã¢ãžã¥ãŒã«ã«å°å ¥ããããŒã¿ãéšåçã«éä¿¡ããããšãèããŠããŸãã
QïŒnginxãã§ããããã«ããããã·ãšSSLã nxwebãå€ã«çœ®ããªãã§ãã ããã
YaroslavïŒå€ã«åºããªããšãé床ã®å©ç¹ããã¹ãŠå€±ãããŸãã æšæ¥ãnginxã®èåŸã§nxwebããã¹ãããŸããïŒ1ç§ããã25kãªã¯ãšã¹ãã 圌ã¯16äžãäžããnginxã¯13äžãäžããããšãã§ãããšããäºå®ã«ããããããã ããã¯ãããã¯ãšã³ãã®ããŒãã¢ã©ã€ããæããªãnginx 1.0ã®çŸåšã®å®å®ããŒãžã§ã³çšã§ãã ããŒãžã§ã³1.1ã§ã¯ã1ç§ããã5äžä»¶ã®ã¯ãšãªãååŸããŸããã¯ããã«é«éã§ããã3å以äžã®é床äœäžããããŸãã
QïŒnxwebã®ãŠãŒã¹ã±ãŒã¹ã¯ãããŒãºã®ç°ãªã2ã€ã®å€§ããªã«ããŽãªã«åããããããã§ãã
- ãããŒããããã©ã€ã³ãªã©ã®ããã®å€ãã®RPããã®åŸãå€ã«çœ®ãå¿ èŠããããŸãããªãã·ã§ã³ã¯ãããŸããã
- èŠæ±ã®è² è·ã¯å°ããã§ãããã§ããã ãæ©ãåçããããšãéåžžã«éèŠã§ãããããã¢ããªã±ãŒã·ã§ã³ã®äžéšã¯Cã§èšè¿°ãããŠããŸãã ããã§ã¯ã管çè ã®å©äŸ¿æ§ã®ããã«nginxã«ç«ã¡åããããšãéåžžã«é©åã§ãã
YaroslavïŒnxwebã®æ°ããããŒãžã§ã³ã§ã¯ãæ°ãããŠãŒã¹ã±ãŒã¹ããããšæããŸãã