{"id":29277,"date":"2024-11-25T10:52:44","date_gmt":"2024-11-25T02:52:44","guid":{"rendered":"https:\/\/fwq.ai\/blog\/29277\/"},"modified":"2024-11-25T10:52:44","modified_gmt":"2024-11-25T02:52:44","slug":"%e5%be%ae%e4%bf%a1%e5%85%ac%e4%bc%97%e8%b4%a6%e5%8f%b7%e5%bc%80%e5%8f%91%e8%80%85%e8%ae%a4%e8%af%81%ef%bc%9auwsgi%e7%bb%93%e5%90%88web-py%e7%9a%84%e6%ad%a5%e9%aa%a4%e8%af%a6%e8%a7%a3","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/29277\/","title":{"rendered":"\u5fae\u4fe1\u516c\u4f17\u8d26\u53f7\u5f00\u53d1\u8005\u8ba4\u8bc1\uff1auwsgi\u7ed3\u5408web.py\u7684\u6b65\u9aa4\u8be6\u89e3"},"content":{"rendered":"<p> version:<\/p>\n<p>[root@mail ~]# uname -a<br \/>Linux mail.vtata.cn 2.6.18-128.el5xen #1 SMP Wed Jan 21 11:12:42 EST 2009 x86_64 x86_64 x86_64 GNU\/Linux<br \/>[root@mail ~]# cat \/etc\/redhat-release&nbsp;<br \/>CentOS release 5.3 ()<\/p>\n<p> Version\uff1a<\/p>\n<p>[root@mail ~]# python<br \/>Python 2.7.5 (default, Jun 14 2013, 18:21:34)&nbsp;<br \/>[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2<br \/>Type &#8220;help&#8221;, &#8220;&#8221;, &#8220;credits&#8221; or &#8220;license&#8221;  more information<\/p>\n<p>uwsgi Version\uff1a<\/p>\n<p>uWSGI 1.4.9<\/p>\n<p>web.py Version:<\/p>\n<p>web.py-0.37<\/p>\n<p>\u9996\u5148\u662f\u6240\u9700\u7a0b\u5e8f\uff0c\u56e0\u4e3aCentos\u81ea\u5e26\u7684Python\u662f2.4\uff0c\u5982\u679c\u4e0d\u66f4\u65b0\u81f32.7\u4f1a\u53d1\u751f\u6a21\u5757\u5bfc\u5165\u9519\u8bef\u7b49\u95ee\u9898\uff0c<\/p>\n<pre>tar&nbsp;xvf&nbsp;Python-2.7.5.tgz\r\ncd&nbsp;Python-2.7.5\r\n.\/configure&nbsp;&amp;amp;&amp;amp;&nbsp;make&nbsp;all&nbsp;&amp;amp;&amp;amp;&nbsp;make&nbsp;install&nbsp;&amp;amp;&amp;amp;&nbsp;make&nbsp;distclean\r\nmv&nbsp;\/usr\/bin\/python&nbsp;\/usr\/bin\/python.bak\r\nln&nbsp;-sv&nbsp;\/usr\/local\/bin\/python2.7&nbsp;\/usr\/bin\/python\r\nsed&nbsp;-i&nbsp;s@\/usr\/bin\/python@\/usr\/bin\/python2.4@&nbsp;\/usr\/bin\/yum\r\ntar&nbsp;zxvf&nbsp;uwsgi-1.4.9.tar.gz\r\ncd&nbsp;uwsgi-1.4.9\r\npython&nbsp;uwsgiconfig.py&nbsp;--build\r\npython&nbsp;setup.py&nbsp;install\r\ntar&nbsp;zxvf&nbsp;web.py-0.37.tar.gz\r\ncd&nbsp;web.py-0.37\r\npython&nbsp;setup.py&nbsp;install<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u672c\u6b21\u662f\u901a\u8fc7uwsgi\u4e0enginx\u7ed3\u5408\u8fdb\u884c\u4f7f\u7528\uff0c\u5173\u4e8euwsgi\u4e0enginx\u6574\u5408\u8bf7\u53c2\u52a0\u524d\u4e00\u7bc7\u6587\u7ae0\u3002<\/p>\n<p>\u7f16\u5199\u9a8c\u8bc1\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<p>\u6587\u4ef6\u540d\uff1awebinput.py<\/p>\n<pre>import&nbsp;web\r\nimport&nbsp;hashlib\r\nurls&nbsp;=&nbsp;(\r\n&nbsp;&nbsp;&nbsp;&nbsp;'\/','index'\r\n)\r\nclass&nbsp;index:\r\n&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;GET(self):\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token='shiji'\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign&nbsp;=&nbsp;web.input()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmplist&nbsp;=&nbsp;[token,sign.timestamp,sign.nonce]\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmplist.sort()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpstr&nbsp;=&nbsp;\"%s%s%s\"%tuple(tmplist)\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpstr&nbsp;=&nbsp;hashlib.sha1(tmpstr).hexdigest()\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;tmpstr&nbsp;==&nbsp;sign.signature:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;sign.echostr\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;None\r\napp&nbsp;=&nbsp;web.application(urls,globals())\r\napplication&nbsp;=&nbsp;app.wsgifunc()<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u542f\u52a8nginx\u540e\u542f\u52a8uwsgi\uff0c\u542f\u52a8\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n<pre>[root@mail&nbsp;html]#&nbsp;uwsgi&nbsp;-s&nbsp;127.0.0.1:9000&nbsp;-w&nbsp;webinput\r\n***&nbsp;Starting&nbsp;uWSGI&nbsp;1.4.9&nbsp;(64bit)&nbsp;on&nbsp;[Mon&nbsp;Jun&nbsp;17&nbsp;17:19:16&nbsp;2013]&nbsp;***\r\ncompiled&nbsp;with&nbsp;version:&nbsp;4.1.2&nbsp;20080704&nbsp;(Red&nbsp;Hat&nbsp;4.1.2-44)&nbsp;on&nbsp;17&nbsp;June&nbsp;2013&nbsp;17:15:20\r\nos:&nbsp;Linux-2.6.18-128.el5xen&nbsp;#1&nbsp;SMP&nbsp;Wed&nbsp;Jan&nbsp;21&nbsp;11:12:42&nbsp;EST&nbsp;2009\r\nnodename:&nbsp;mail.vtata.cn\r\nmachine:&nbsp;x86_64\r\nclock&nbsp;source:&nbsp;unix\r\npcre&nbsp;jit&nbsp;disabled\r\ndetected&nbsp;number&nbsp;of&nbsp;CPU&nbsp;cores:&nbsp;8\r\ncurrent&nbsp;working&nbsp;directory:&nbsp;\/usr\/local\/nginx\/html\r\ndetected&nbsp;binary&nbsp;path:&nbsp;\/usr\/local\/bin\/uwsgi\r\nuWSGI&nbsp;running&nbsp;as&nbsp;root,&nbsp;you&nbsp;can&nbsp;use&nbsp;--uid\/--gid\/--chroot&nbsp;options\r\n***&nbsp;WARNING:&nbsp;you&nbsp;are&nbsp;running&nbsp;uWSGI&nbsp;as&nbsp;root&nbsp;!!!&nbsp;(use&nbsp;the&nbsp;--uid&nbsp;flag)&nbsp;***\r\n***&nbsp;WARNING:&nbsp;you&nbsp;are&nbsp;running&nbsp;uWSGI&nbsp;without&nbsp;its&nbsp;master&nbsp;process&nbsp;manager&nbsp;***\r\nyour&nbsp;processes&nbsp;number&nbsp;limit&nbsp;is&nbsp;61234\r\nyour&nbsp;memory&nbsp;page&nbsp;size&nbsp;is&nbsp;4096&nbsp;bytes\r\ndetected&nbsp;max&nbsp;file&nbsp;descriptor&nbsp;number:&nbsp;52100\r\nlock&nbsp;engine:&nbsp;pthread&nbsp;robust&nbsp;mutexes\r\nuwsgi&nbsp;socket&nbsp;0&nbsp;bound&nbsp;to&nbsp;TCP&nbsp;address&nbsp;127.0.0.1:9000&nbsp;fd&nbsp;3\r\nPython&nbsp;version:&nbsp;2.7.5&nbsp;(default,&nbsp;Jun&nbsp;14&nbsp;2013,&nbsp;18:21:34)&nbsp;&nbsp;[GCC&nbsp;4.1.2&nbsp;20080704&nbsp;(Red&nbsp;Hat&nbsp;4.1.2-44)]\r\n***&nbsp;Python&nbsp;threads&nbsp;support&nbsp;is&nbsp;disabled.&nbsp;You&nbsp;can&nbsp;enable&nbsp;it&nbsp;with&nbsp;--enable-threads&nbsp;***\r\nPython&nbsp;main&nbsp;interpreter&nbsp;initialized&nbsp;at&nbsp;0xfe30520\r\nyour&nbsp;server&nbsp;socket&nbsp;listen&nbsp;backlog&nbsp;is&nbsp;limited&nbsp;to&nbsp;100&nbsp;connections\r\nmapped&nbsp;72424&nbsp;bytes&nbsp;(70&nbsp;KB)&nbsp;for&nbsp;1&nbsp;cores\r\n***&nbsp;Operational&nbsp;MODE:&nbsp;single&nbsp;process&nbsp;***\r\nWSGI&nbsp;app&nbsp;0&nbsp;(mountpoint='')&nbsp;ready&nbsp;in&nbsp;0&nbsp;seconds&nbsp;on&nbsp;interpreter&nbsp;0xfe30520&nbsp;pid:&nbsp;10775&nbsp;(default&nbsp;app)\r\n***&nbsp;uWSGI&nbsp;is&nbsp;running&nbsp;in&nbsp;multiple&nbsp;interpreter&nbsp;mode&nbsp;***\r\nspawned&nbsp;uWSGI&nbsp;worker&nbsp;1&nbsp;(and&nbsp;the&nbsp;only)&nbsp;(pid:&nbsp;10775,&nbsp;cores:&nbsp;1)\r\n13712480011371460796shiji\r\n[pid:&nbsp;10775|app:&nbsp;0|req:&nbsp;1\/1]&nbsp;101.226.33.171&nbsp;()&nbsp;{34&nbsp;vars&nbsp;in&nbsp;616&nbsp;bytes}&nbsp;[Mon&nbsp;Jun&nbsp;17&nbsp;17:19:43&nbsp;2013]&nbsp;GET&nbsp;\/?signature=915c123b81282828ae1eecdc202336d07dfc15d8&amp;amp;echostr=5889465363321509055&amp;amp;timestamp=1371460796&amp;amp;nonce=1371248001&nbsp;=&amp;gt;&nbsp;generated&nbsp;4&nbsp;bytes&nbsp;in&nbsp;2&nbsp;msecs&nbsp;(HTTP\/1.0&nbsp;200)&nbsp;0&nbsp;headers&nbsp;in&nbsp;19&nbsp;bytes&nbsp;(2&nbsp;switches&nbsp;on&nbsp;core&nbsp;0)<\/pre>\n<p> \u767b\u5f55\u540e\u590d\u5236 <\/p>\n<p>\u6253\u5f00\u5fae\u4fe1\u516c\u4f17\u5e73\u53f0\u754c\u9762\uff0c\u5728\u9ad8\u7ea7\u529f\u80fd\u91cc\u9762\u8fdb\u884c\u8bbe\u7f6e\u5982\u56fe\uff1a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/\/upload\/image\/392\/308\/680\/1490245576119737.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1\u516c\u4f17\u8d26\u53f7\u5f00\u53d1\u8005\u8ba4\u8bc1\uff1auwsgi\u7ed3\u5408web.py\u7684\u6b65\u9aa4\u8be6\u89e3\u63d2\u56fe\" alt=\"\u5fae\u4fe1\u516c\u4f17\u8d26\u53f7\u5f00\u53d1\u8005\u8ba4\u8bc1\uff1auwsgi\u7ed3\u5408web.py\u7684\u6b65\u9aa4\u8be6\u89e3\u63d2\u56fe\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.php.cn\/\/upload\/image\/417\/195\/288\/1490245559687790.jpg\" style=\"max-width:90%\" class=\"aligncenter\" title=\"\u5fae\u4fe1\u516c\u4f17\u8d26\u53f7\u5f00\u53d1\u8005\u8ba4\u8bc1\uff1auwsgi\u7ed3\u5408web.py\u7684\u6b65\u9aa4\u8be6\u89e3\u63d2\u56fe1\" alt=\"\u5fae\u4fe1\u516c\u4f17\u8d26\u53f7\u5f00\u53d1\u8005\u8ba4\u8bc1\uff1auwsgi\u7ed3\u5408web.py\u7684\u6b65\u9aa4\u8be6\u89e3\u63d2\u56fe1\" \/><\/p>\n<p>\u4ee5\u4e0a\u5c31\u662f\u5fae\u4fe1\u516c\u4f17\u8d26\u53f7\u5f00\u53d1\u8005\u8ba4\u8bc1\uff1auwsgi\u7ed3\u5408web.py\u7684\u6b65\u9aa4\u8be6\u89e3\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u8bf7\u5173\u6ce8\u7c73\u4e91\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>version: [root@mail ~]# uname -aLinux mail.vtata.cn 2.6.18-128.el5xen #1 SMP Wed Jan 21 11:12:42 EST 2009 x86_64 x86_64 x86_64 GNU\/Linux[root@mail ~]# cat \/etc\/redhat-release&nbsp;CentOS release 5.3 () Version\uff1a [root@mail ~]# pythonPython 2.7.5 (default, Jun 14 2013, 18:21:34)&nbsp;[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2Type &#8220;help&#8221;, &#8220;&#8221;, &#8220;credits&#8221; or &#8220;license&#8221; more information uwsgi Version\uff1a uWSGI 1.4.9 web.py Version: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-29277","post","type-post","status-publish","format-standard","hentry","category-19"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=29277"}],"version-history":[{"count":0,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/29277\/revisions"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=29277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=29277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=29277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}