{"id":860,"date":"2011-09-07T17:22:22","date_gmt":"2011-09-07T09:22:22","guid":{"rendered":"http:\/\/www.yewen.us\/blog\/?p=860"},"modified":"2014-05-23T17:20:38","modified_gmt":"2014-05-23T09:20:38","slug":"build-index-on-nginx-and-php","status":"publish","type":"post","link":"https:\/\/www.yewen.us\/blog\/2011\/09\/build-index-on-nginx-and-php\/","title":{"rendered":"nginx\/php\/\u68c0\u7d22\u6298\u817e\u8bb0"},"content":{"rendered":"<p>\u4ec5\u4ec5\u662f\u60f3\u5b9e\u73b0\u4e00\u4e2a\u67e5\u8be2\u63a5\u53e3, \u540e\u53f0\u6bcf\u5929\u51cc\u6668\u66f4\u65b0\u4e00\u4efd\u6570\u636e, \u6309\u5b58\u50a8. web \u7aef\u53ef\u4ee5\u67e5\u8be2\u6240\u6709 key1 \u5bf9\u5e94\u7684\u8bb0\u5f55, \u6216\u8005 key1 + key3 \u7684\u8bb0\u5f55, key2 \u4e0d\u7ba1, \u4f46\u662f\u4e5f\u662f\u4e2a key, \u800c\u4e14\u7ed3\u679c\u8981\u6309 key1, key2, key3 \u6765\u6392\u5e8f. \u8fd9\u91cc\u6709\u4e2a\u95ee\u9898\u662f\u53ea\u6309 key1+key3 \u67e5, value \u6709\u591a\u4e2a<\/p>\n<p>\u53ea\u4f1a\u5f88\u571f\u9cd6\u7684 php \u548c python, \u4e8e\u662f\u8003\u8651 php \u505a web, \u540e\u9762\u7528 python \u6765\u505a\u67e5\u8be2<\/p>\n<p>\u673a\u5668\u4e0a\u6ca1\u6709 web server \u548c php, \u4e8e\u662f\u5148\u88c5. \u6ca1\u6709 root \u6743\u9650, \u6240\u4ee5\u5c3d\u53ef\u80fd\u7b80\u5355\u7684\u641e, \u628a nginx, pcre, php \u90fd\u4e0b\u5230 \/home\/yewen\/soft, \u89e3\u538b\u5907\u7528. pcre \u662f\u4e00\u4e2a\u5e93, nginx \u9700\u8981\u8fd9\u4e2a\u5e93\u7684\u652f\u6301\u624d\u80fd\u8bfb\u53d6\u8ddf php \u8fde\u8d77\u6765\u7684\u90e8\u5206\u914d\u7f6e<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\"># \u7f16\u8bd1\u5b89\u88c5 nginx\r\ncd ~\/soft\/nginx-1.1.1\r\n.\/configure --prefix=\/home\/yewen\/nginx --with-pcre=\/home\/yewen\/soft\/pcre-8.13\r\nmake\r\nmake install\r\n\r\n# \u6539\u914d\u7f6e\r\ncd ~\/nginx\r\nvim conf\/nginx.conf\r\n\r\n# \u6b64\u5904\u4fee\u6539\u7aef\u53e3\u53f7 (http\/server\/listen)\r\n# \u4fee\u6539 php \u652f\u6301 (\u53bb\u6389 http\/server\/location ~.php \u90a3\u4e00\u5927\u6bb5\u7684\u6ce8\u91ca, \u4e0d\u662f proxy)\r\n# \u4fee\u6539 php \u652f\u6301\u7684\u8def\u5f84fastcgi_param SCRIPT_FILENAME \/home\/yewen\/nginx\/html$fastcgi_script_name;\r\n# \u76f4\u63a5\u542f\u52a8\r\n.\/sbin\/nginx\r\n\r\n# \u7f16\u8bd1\u5b89\u88c5 php, \u5fc5\u987b\u542f\u7528 fpm\r\ncd ~\/soft\/php-5.3.8\r\n.\/configure --prefix=\/home\/yewen\/php --enable-fastcgi --enable-fpm\r\nmake\r\nmake install\r\n\r\n# \u6539\u914d\u7f6e\r\ncp php.ini-production ~\/php\/etc\/php.ini\r\ncd ~\/php\/etc\r\ncp php-fpm.conf.default php-fpm.conf\r\nvim etc\/php-fpm.conf\r\n\r\n# \u5c06 user\/group \u6539\u4e3a\u672c\u5730\u7528\u6237\r\n# \u53bb\u6389 pm.min_spare_servers\u548c pm.max_spare_servers\u524d\u9762\u7684\u6ce8\u91ca\u5e76\u8bbe\u7f6e\u5408\u7406\u503c\r\n\r\n# \u542f\u52a8\r\ncd ..\r\n.\/sbin\/php-fpm<\/pre>\n<p>\u5199\u4e86\u4e2a\u5f88\u7b80\u5355\u7684 php, \u5c31\u662f\u63a5\u53d7\u4e00\u4e2a\u8f93\u5165 key, \u7136\u540e\u628a\u8fd9\u4e2a key \u4f5c\u4e3a\u53c2\u6570, system \u8c03\u7528 python \u5904\u7406, \u8f93\u51fa\u5230\u67d0\u4e34\u65f6\u6587\u4ef6, \u7136\u540e php \u518d\u8bfb\u8fd9\u4e2a\u6587\u4ef6\u8f93\u51fa, python \u5904\u7406\u662f\u7528\u7684\u6700\u571f\u9cd6\u7684\u626b\u63cf\u6587\u4ef6\u7684\u65b9\u5f0f, \u800c\u4e14\u7531\u4e8e\u6587\u4ef6\u91cc\u662f\u6309 key1, key2, key3 \u7684\u987a\u5e8f\u6392\u5e8f, \u6211\u4eec\u7684\u67e5\u627e\u6709\u6309 key1+key3 \u6765\u7684, \u6240\u4ee5\u5fc5\u987b\u626b\u63cf\u6574\u4e2a\u6587\u4ef6, \u540e\u6765\u53d1\u73b0\u8fd9\u4e48\u641e\u5b9e\u5728\u4e0d\u9760\u8c31, \u4e00\u6b21\u68c0\u7d22\u592a\u6162\u4e86, \u8981\u6570\u636e\u89c4\u6a21\u7a0d\u5fae\u5927\u70b9, \u5e76\u53d1\u591a\u70b9, \u90a3\u5c31\u5d29\u6e83\u4e86<\/p>\n<p>\u4e8e\u662f\u8003\u8651\u628a\u6240\u6709\u6570\u636e\u90fd\u52a0\u8f7d\u5230\u5185\u5b58\u91cc\u6765, \u7528 python \u505a\u4e00\u4e2a daemon, \u7136\u540e php \u901a\u8fc7\u672c\u673a socket \u8ddf\u8fd9\u4e2a daemon \u4e92\u52a8. \u4e0d\u4f1a\u641e socket, \u4e8e\u662f\u5148\u5b66 php \u548c python \u7684 socket \u4f7f\u7528, \u5f88\u7b80\u5355, \u53ea\u662f\u56e0\u4e3a\u6211\u4e3a\u4e86\u7701\u4e8b php \u7f16\u8bd1\u7684\u592a\u7b80\u5355, \u5c45\u7136\u4e0d\u652f\u6301 socket \u65b9\u6cd5, \u95ee\u4e86\u4e0b felix021, \u6539\u7528fsockopen\u641e\u5b9a.<\/p>\n<p>\u8fd9\u65f6\u5019 python \u662f\u628a\u6240\u6709\u6570\u636e load \u5230\u5185\u5b58, \u7528\u4e00\u4e2a\u4ee5 key1 \u4e3a key \u7684 dict \u5b58\u50a8, dict \u7684\u6bcf\u6761\u8bb0\u5f55\u662f\u4e00\u4e2a list, \u5b58\u50a8\u4e86\u6240\u6709 key1 \u5bf9\u5e94\u7684\u8bb0\u5f55. \u5982\u679c\u67e5\u8be2\u662f\u53ea\u6709 key1 \u7684, \u628a\u8fd9\u4e2a list \u505a\u4e0b\u683c\u5f0f\u5316\u8fd4\u56de\u5c31\u884c\u4e86, \u5982\u679c\u662f key1 + key3 \u7684\u67e5\u8be2, \u5219\u628a key1 \u7684 list \u53d6\u51fa\u6765, \u505a\u4e00\u6b21\u904d\u5386, \u770b key3 \u662f\u5426\u5c31\u662f\u6211\u4eec\u8981\u7684, \u5982\u679c\u662f, \u52a0\u5165\u7ed3\u679c list, \u6700\u540e\u628a\u8fd9\u4e2a\u7ed3\u679c list \u505a\u683c\u5f0f\u5316\u8fd4\u56de. \u56e0\u4e3a\u6bcf\u4e2a key1 \u5bf9\u5e94\u7684\u8bb0\u5f55\u6491\u6b7b\u4e5f\u5c31\u51e0\u4e07\u6761, \u67e5\u8be2\u901f\u5ea6\u5b8c\u5168\u6ca1\u6709\u95ee\u9898, \u5185\u5b58\u5360\u7528 3.2G.<\/p>\n<p>\u540e\u6765\u53d1\u73b0\u8fd9\u53f0\u673a\u5668\u6ca1\u6cd5\u63d0\u4f9b\u5bf9\u5916\u670d\u52a1 (\u8fd9\u4e48\u5751\u7239\u7684\u4e8b\u60c5\u8fd9\u4e48\u665a\u624d\u5f97\u5230\u786e\u8ba4), \u6362\u7528\u4e00\u53f0\u53f0\u5f0f\u673a\u6765\u5904\u7406, \u8fd9\u65f6\u5019\u5185\u5b58\u663e\u7136\u4e0d\u80fd\u8fd9\u4e48\u4e71\u641e, \u4f18\u5316\u4e00\u4e0b, \u5f00\u59cb\u5199\u4eba\u8089\u7d22\u5f15. \u5185\u5b58\u91cc\u8fd8\u662f\u4e00\u4e2a\u4ee5 key1 \u4e3a key \u7684 dict, \u53ea\u662f value \u6539\u6210 key1 \u5728\u539f\u59cb\u6587\u4ef6\u91cc\u7684\u504f\u79fb\u91cf. \u67e5\u8be2\u7684\u65f6\u5019, \u6253\u5f00\u6587\u4ef6\u8df3\u5230 key1 \u5bf9\u5e94\u7684\u504f\u79fb\u91cf\u6328\u6761\u626b\u63cf, \u76f4\u5230\u5230\u8fbe key1 \u7ed3\u675f\u7684\u5730\u65b9. \u901f\u5ea6\u8fd8\u662f\u5f88\u597d, \u56e0\u4e3a\u6587\u4ef6\u64cd\u4f5c\u6bd5\u7adf\u4e0d\u7b97\u591a, \u81f3\u5c11\u4eba\u8089\u611f\u89c9\u4e0d\u51fa\u6765\u6709\u8fdf\u949d, \u5185\u5b58\u5360\u7528 10M.<\/p>\n<p>\u628a\u8fd9\u4e2a\u95ee\u9898\u6cdb\u5316\u4e0b, \u8c8c\u4f3c\u5c31\u53ef\u4ee5\u505a\u9762\u8bd5\u9898\u4e86, \u4e00\u4e2a\u7b80\u5355\u7684\u67e5\u8be2\u7cfb\u7edf. \u53ea\u8981\u6309\u67d0\u4e2a key \u6709\u5e8f, \u4e00\u5f00\u59cb\u53ef\u4ee5\u5168\u5185\u5b58\u641e, \u6269\u5927\u6570\u636e\u89c4\u6a21\u540e\u5c31\u5fc5\u987b\u5185\u5b58\u7d22\u5f15 + \u78c1\u76d8\u6587\u4ef6, \u518d\u5927\u5c31\u8981\u591a\u7ea7\u7d22\u5f15, \u518d\u5927\u5c31\u5206\u5e93. (\u6211\u51b3\u5b9a\u4eca\u5e74\u9762\u8bd5\u6211\u4e00\u5b9a\u8981\u95ee\u8fd9\u4e2a\u95ee\u9898, \u5982\u679c\u770b\u8fc7\u6211 blog \u7684, \u90a3\u5c31\u73b0\u573a\u5199\u5b9e\u73b0, \u5982\u679c\u4e0d\u8003\u8651\u505a list \u683c\u5f0f\u5316, \u6574\u4e2a\u7a0b\u5e8f\u4e0d\u8d85\u8fc7 50 \u884c)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4ec5\u4ec5\u662f\u60f3\u5b9e\u73b0\u4e00\u4e2a\u67e5\u8be2\u63a5\u53e3, \u540e\u53f0\u6bcf\u5929\u51cc\u6668\u66f4\u65b0\u4e00\u4efd\u6570\u636e, \u6309\u5b58\u50a8. web \u7aef\u53ef\u4ee5\u67e5\u8be2\u6240\u6709 key1 \u5bf9\u5e94\u7684\u8bb0\u5f55 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[7],"tags":[110,117,127,275],"class_list":["post-860","post","type-post","status-publish","format-standard","hentry","category-tech-notes","tag-nginx","tag-php","tag-python","tag-275"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4aR5e-dS","_links":{"self":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/posts\/860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/comments?post=860"}],"version-history":[{"count":2,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/posts\/860\/revisions"}],"predecessor-version":[{"id":1960,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/posts\/860\/revisions\/1960"}],"wp:attachment":[{"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/media?parent=860"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/categories?post=860"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yewen.us\/blog\/wp-json\/wp\/v2\/tags?post=860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}