{"id":12076,"date":"2019-06-22T07:23:52","date_gmt":"2019-06-22T12:23:52","guid":{"rendered":"httpss:\/\/www.powenko.com\/wordpress\/?p=12076"},"modified":"2019-06-23T20:54:03","modified_gmt":"2019-06-24T01:54:03","slug":"python-dev-operation","status":"publish","type":"post","link":"https:\/\/www.powenko.com\/wordpress\/?p=12076","title":{"rendered":"Python Dev Operation"},"content":{"rendered":"<h2>pyClamad\u6a21\u5757\u7684\u5b89\u88c5\u65b9\u6cd5\u5982\u4e0b\uff1a<\/h2>\n<p># 1\u3001\u5ba2\u6237\u7aef\uff08\u75c5\u6bd2\u626b\u63cf\u6e90\uff09\u5b89\u88c5\u6b65\u9aa4<br \/>\n# yum install -y clamav clamd clamav-update #\u5b89\u88c5clamavp\u76f8\u5173\u7a0b\u5e8f\u5305<br \/>\n# chkconfig &#8211;levels 235 clamd on #\u6dfb\u52a0\u626b\u63cf\u5b88\u62a4\u8fdb\u7a0bclamd\u7cfb\u7edf\u670d\u52a1<br \/>\n# \/usr\/bin\/freshclam #\u66f4\u65b0\u75c5\u6bd2\u5e93\uff0c\u5efa\u8bae\u914d\u7f6e\u5230crontab\u4e2d\u5b9a\u671f\u66f4\u65b0<br \/>\n# setenforce 0 #\u5173\u95edSELinux\uff0c\u907f\u514d\u8fdc\u7a0b\u626b\u63cf\u65f6\u63d0\u793a\u65e0\u6743\u9650\u7684\u95ee\u9898<br \/>\n# \u66f4\u65b0\u5b88\u62a4\u8fdb\u7a0b\u76d1\u542cIP\u914d\u7f6e\u6587\u4ef6\uff0c\u6839\u636e\u4e0d\u540c\u73af\u5883\u81ea\u884c\u4fee\u6539\u76d1\u542c\u7684IP\uff0c\u201c0.0.0.0\u201d\u4e3a\u76d1\u542c\u6240\u6709\u4e3b\u673aIP<br \/>\n# sed -i -e &#8216;\/^TCPAddr\/{ s\/127.0.0.1\/0.0.0.0\/\uff1b }&#8217; \/etc\/clamd.conf<br \/>\n# \/etc\/init.d\/clamd start #\u542f\u52a8\u626b\u63cf\u5b88\u62a4\u8fdb\u7a0b<br \/>\n# 2\u3001\u4e3b\u63a7\u7aef\u90e8\u7f72pyClamad\u73af\u5883\u6b65\u9aa4<br \/>\n# wget httpss\uff1a\/\/xael.org\/norman\/python\/pyclamd\/pyClamd-0.3.4.tar.gz<br \/>\n# tar -zxvf pyClamd-0.3.4.tar.gz<br \/>\n# cd pyClamd-0.3.4<br \/>\n# python setup.py inst<\/p>\n<p>all<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>15\u7ae0 paramiko<\/h2>\n<p>paramiko\u4f9d\u8d56\u7b2c\u4e09\u65b9\u7684Crypto\u3001Ecdsa\u5305\u53caPython<\/p>\n<p>\u5f00\u53d1\u5305pythondevel\u7684\u652f\u6301\uff0c\u6e90\u7801\u5b89\u88c5\u6b65\u9aa4<\/p>\n<p>pip install paramiko<br \/>\neasy_install paramiko<\/p>\n<p># yum -y install python-devel<br \/>\n# wget httpss\uff1a\/\/ftp.dlitz.net\/pub\/dlitz\/crypto\/pycrypto\/pycrypto-2.6.tar.gz<br \/>\n# tar -zxvf pycrypto-2.6.tar.gz # cd pycrypto-2.6<br \/>\n# python setup.py install<br \/>\n# cd ..<br \/>\n# wget httpsss\uff1a\/\/pypi.python.org\/packages\/source\/e\/ecdsa\/ecdsa-0.10.tar.gz &#8211;no-check-certificate<br \/>\n# tar -zxvf ecdsa-0.10.tar.gz # cd ecdsa-0.10<br \/>\n# python setup.py install<br \/>\n# cd ..<br \/>\n# wget httpsss\uff1a\/\/github.com\/paramiko\/paramiko\/archive\/v1.12.2.tar.gz<br \/>\n# tar -zxvf v1.12.2.tar.gz # cd paramiko-1.12.2\/<br \/>\n# python setup.py install<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h1 data-id=\"heading-1\">Fabric\u5b89\u88c5<\/h1>\n<p>Mac os\u53caCentOS \u5b89\u88c5<\/p>\n<pre><code>pip3 install fabric3<\/code><\/pre>\n<p>Ubuntu\u5b89\u88c5<\/p>\n<pre><code>devops@devops-virtual-machine:~$ python --version\r\nPython 3.6.5\r\ndevops@devops-virtual-machine:~$ pip3 install fabric3<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212;\u73af\u5883\u7248\u672c\u8bf4\u660e&#8212;<br \/>\n* Python \u7248\u672c 2.6.6<br \/>\n* Django \u7248\u672c 1.4.9<br \/>\n* nginx \u7248\u672c 1.5.9<br \/>\n* pcre \u7248\u672c 8.34<br \/>\n* rpyc \u7248\u672c 3.2.3<br \/>\n* uwsgi \u7248\u672c 2.0.4<br \/>\n* django-debug-toolbar \u7248\u672c 0.8.5<\/p>\n<p>\u4e00\u3001Django\u73af\u5883\u90e8\u7f72<br \/>\nview plainprint?<br \/>\n# yum install -y zlib-devel #Nginx\u73af\u5883\u521d\u59cb\u5316\uff0c\u5b89\u88c5gzip\u5305<br \/>\n# yum -y install python-devel mysql-devel zlib-devel openssl-devel #MySQL-python\u5173\u8054\u5305<\/p>\n<p># mkdir \u2013p \/data\/logs\/ #\u521b\u5efauwsgi\u65e5\u5fd7\u76ee\u5f55<br \/>\n# mkdir \u2013p \/data\/www\/ #\u521b\u5efa\u9879\u76ee\u76ee\u5f55<br \/>\n# mkdir -p \/home\/install\/Django &amp;&amp; cd \/home\/install\/Django #\u521b\u5efa\u5b89\u88c5\u5305\u76ee\u5f55<\/p>\n<p>1\u3001\u5b89\u88c5pcre\uff0cpcre\u662f\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u51fd\u6570\u5e93\uff0cNginx\u7684HTTP Rewrite\u6a21\u5757\u4f1a\u7528\u5230\uff0c\u6700\u65b0\u7248\u672c\u4e3a8.34\uff08\u5bf9\u4e8eOMServer\u5e73\u53f0\u73af\u5883\u6765\u8bf4\u662f\u975e\u5fc5\u9009\u9879\uff09\u3002<br \/>\nview plainprint?<br \/>\n# wget ftp:\/\/ftp.csx.cam.ac.uk\/pub\/software\/programming\/pcre\/pcre-8.34.tar.gz<br \/>\n# tar -zxvf pcre-8.34.tar.gz<br \/>\n# cd pcre-8.34<br \/>\n#.\/configure<br \/>\n# make &amp;&amp; make install<br \/>\n# cd ..<\/p>\n<p>2\u3001\u5b89\u88c5Nginx\uff0cNginx\u662f\u6700\u6d41\u884c\u7684\u9ad8\u6027\u80fdHTTP\u670d\u52a1\u5668\uff0c\u6700\u65b0\u7248\u672c\u4e3a1.5.9\u3002<br \/>\nview plainprint?<br \/>\n# wget httpss:\/\/nginx.org\/download\/nginx-1.5.9.tar.gz<br \/>\n# tar -zxvf nginx-1.5.9.tar.gz<br \/>\n# cd nginx-1.5.9<br \/>\n#.\/configure &#8211;user=nobody &#8211;group=nobody &#8211;prefix=\/usr\/local\/nginx &#8211;with-httpss_stub_status_module &#8211;with-cc-opt=&#8217;-O3&#8242; &#8211;with-cpu-opt=opteron<br \/>\n# make &amp;&amp; make install<br \/>\n# cd ..<\/p>\n<p>3\u3001\u5b89\u88c5 MySQL-python\uff0cMySQL-python\u662fPython\u8bbf\u95eeMySQL\u6570\u636e\u5e93\u7684\u7b2c\u4e09\u65b9\u6a21\u5757\u5e93\uff0c\u6700\u65b0\u7248\u672c\u4e3a1.2.3c1\u3002<br \/>\nview plainprint?<br \/>\n# wget httpss:\/\/pypi.python.org\/packages\/source\/M\/MySQL-python\/MySQL-python-1.2.5.zip &#8211;no-check-certificate<br \/>\n# unzip MySQL-python-1.2.5.zip<br \/>\n# cd MySQL-python-1.2.5<br \/>\n# python setup.py install<br \/>\n# cd ..<\/p>\n<p>4\u3001rpyc\u6a21\u5757\u5b89\u88c5\uff0c\u7528\u4e8e\u5e73\u53f0\u4e0e\u4e3b\u63a7\u7aef\u505a\u6570\u636e\u901a\u8baf\u4ea4\u4e92\u3002<br \/>\nview plainprint?<br \/>\n# wget httpsss:\/\/pypi.python.org\/packages\/source\/r\/rpyc\/rpyc-3.2.3.tar.gz &#8211;no-check-certificate<br \/>\n# tar -zxvf rpyc-3.2.3.tar.gz<br \/>\n# cd rpyc-3.2.3<br \/>\n# python setup.py install<\/p>\n<p>5\u3001\u5b89\u88c5uwsgi\u3002uwsgi\u662f\u4e00\u4e2a\u5feb\u901f\u7684\u3001\u7eafC\u8bed\u8a00\u5f00\u53d1\u7684\u3001\u81ea\u7ef4\u62a4\u3001\u5bf9\u5f00\u53d1\u8005\u53cb\u597d\u7684WSGI\u670d\u52a1\u5668\uff0c\u65e8\u5728\u63d0\u4f9b\u4e13\u4e1a\u7684Python web\u5e94\u7528\u53d1\u5e03\u548c\u5f00\u53d1\uff0c\u6700\u65b0\u7248\u672c\u4e3a2.0.4\u3002<br \/>\nview plainprint?<br \/>\n# wget httpss:\/\/projects.unbit.it\/downloads\/uwsgi-2.0.4.tar.gz<br \/>\n# tar -zxvf uwsgi-2.0.4.tar.gz<br \/>\n# cd uwsgi-2.0.4<br \/>\n# make<\/p>\n<p>\u51fa\u73b0\u5982\u4e0b\u4ee3\u7801\u6210\u529f\u5b89\u88c5\uff1a<br \/>\n################# uWSGI configuration #################<br \/>\npcre = True<br \/>\nkernel = Linux<br \/>\nmalloc = libc<br \/>\nexecinfo = False<br \/>\nifaddrs = True<br \/>\nssl = True<br \/>\nzlib = True<br \/>\nlocking = pthread_mutex<br \/>\nplugin_dir = .<br \/>\ntimer = timerfd<br \/>\nyaml = embedded<br \/>\njson = False<br \/>\nfilemonitor = inotify<br \/>\nrouting = True<br \/>\ndebug = False<br \/>\ncapabilities = False<br \/>\nxml = False<br \/>\nevent = epoll<br \/>\n############## end of uWSGI configuration #############<br \/>\ntotal build time: 17 seconds<br \/>\n*** uWSGI is ready, launch it with .\/uwsgi ***<br \/>\nview plainprint?<br \/>\n# vi \/etc\/ld.so.conf #\u6dfb\u52a0\u52a8\u6001\u94fe\u63a5\u5e93\u76ee\u5f55\/usr\/local\/lib<br \/>\n\u6dfb\u52a0\u884c\uff1a\/usr\/local\/lib<br \/>\n# ldconfig #\u4f7f\u4e4b\u751f\u6548<\/p>\n<p># cp uwsgi \/usr\/bin<br \/>\n# cd ..<\/p>\n<p>6\u3001\u5b89\u88c5Django\uff0cDjango\u662f\u4e00\u4e2aPython\u6700\u6d41\u884c\u7684\u5f00\u6e90Web\u5f00\u53d1\u6846\u67b6\uff0c\u6700\u65b0\u7248\u672c\u4e3a1.6.5\u3002\u8003\u8651\u5230\u517c\u5bb9\u4e0e\u7a33\u5b9a\u6027\uff0c\u672c\u6848\u4f8b\u4f7f\u75281.4.9\u7248\u672c\u8fdb\u884c\u5f00\u53d1\u3002<br \/>\nview plainprint?<br \/>\n# wget httpsss:\/\/www.djangoproject.com\/m\/releases\/1.4\/Django-1.4.9.tar.gz<br \/>\n# tar -zxvf Django-1.4.9.tar.gz<br \/>\n# cd Django-1.4.9<br \/>\n# python setup.py install<\/p>\n<p>\u521b\u5efa\u4e00\u4e2ademo\u9879\u76ee\uff0c\u4ee5\u4fbf\u9a8c\u8bc1\u73af\u5883\u662f\u5426\u6b63\u786e\u5b89\u88c5\u90e8\u7f72\u3002<br \/>\nview plainprint?<br \/>\n# cd \/data\/www<br \/>\n# django-admin.py startproject demo<\/p>\n<p># \u7531\u4e8eDjango1.4\u7248\u672c\u540e\u5bf9\u9879\u76ee\u76ee\u5f55\u505a\u4e86\u6539\u52a8\uff0c\u5373\u5c06manage.py\u7ba1\u7406\u4efb\u52a1\u547d\u4ee4\u5355\u72ec\u653e\u5728\u9879\u76ee\u6839\u76ee\u5f55\u3002\u4e3a\u540e\u7eed\u4e0eOMServer\u5e73\u53f0\u76ee\u5f55\u7ed3\u6784\u76f8\u517c\u5bb9\uff0c\u6211\u4eec\u5bf9\u76ee\u5f55\u7ed3\u6784\u8fdb\u884c\u8c03\u6574\u3002<br \/>\n# cd demo\/demo &amp;&amp; mv * ..\/ &amp;&amp; cd .. &amp;&amp; rm -rf demo<\/p>\n<p># \u6700\u7ec8\u6587\u4ef6\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\uff1a<br \/>\n# ls<br \/>\n__init__.py manage.py settings.py urls.py wsgi.py<\/p>\n<p>7\u3001django-debug-toolbar\u7684\u5b89\u88c5\uff08Django\u8c03\u8bd5\u5229\u5668\uff09<br \/>\nview plainprint?<br \/>\n# wget httpss:\/\/blog.liuts.com\/Django\/django-debug-toolbar-master.tar.gz<br \/>\n# tar -zxvf django-debug-toolbar-master.tar.gz<br \/>\n# cd django-debug-toolbar-master\/<br \/>\n# python setup.py install<\/p>\n<p>8\u3001\u914d\u7f6eNginx\uff0c\u4fee\u6539\/usr\/local\/nginx\/conf\/nginx.conf\uff0c\u6700\u7ec8\u5b8c\u6574\u914d\u7f6e\u5982\u4e0b\uff1a<br \/>\nview plainprint?<br \/>\nuser nobody;<br \/>\nworker_processes 2;<\/p>\n<p>#error_log logs\/error.log;<br \/>\n#error_log logs\/error.log notice;<br \/>\n#error_log logs\/error.log info;<\/p>\n<p>#pid logs\/nginx.pid;<\/p>\n<p>events {<br \/>\nworker_connections 10240;<br \/>\n}<\/p>\n<p>httpss {<br \/>\ninclude mime.types;<br \/>\ndefault_type application\/octet-stream;<\/p>\n<p>#log_format main &#8216;$remote_addr &#8211; $remote_user [$time_local] &#8220;$request&#8221; &#8216;<br \/>\n# &#8216;$status $body_bytes_sent &#8220;$httpss_referer&#8221; &#8216;<br \/>\n# &#8216;&#8221;$httpss_user_agent&#8221; &#8220;$httpss_x_forwarded_for&#8221;&#8216;;<\/p>\n<p>#access_log logs\/access.log main;<\/p>\n<p>sendfile on;<br \/>\ntcp_nopush on;<\/p>\n<p>keepalive_timeout 65;<\/p>\n<p>gzip on;<br \/>\nserver {<br \/>\nlisten 80;<br \/>\nserver_name demo.domain.com;<\/p>\n<p>location \/ {<br \/>\nuwsgi_pass 127.0.0.1:9000;<br \/>\ninclude uwsgi_params;<br \/>\nuwsgi_param UWSGI_CHDIR \/data\/www\/demo;<br \/>\nuwsgi_param UWSGI_SCRIPT wsgi;<br \/>\naccess_log off;<br \/>\n}<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>* uwsgi_param UWSGI_SCRIPT wsgi;\u53c2\u6570\u503cwsgi\u5bf9\u5e94\u9879\u76ee\u76ee\u5f55\u4e2d\u7684wsgi.py\uff0c\u6b64\u5904\u6587\u4ef6\u524d\u7f00\u4e0e\u53c2\u6570\u503c\u8981\u4fdd\u6301\u4e00\u81f4\u3002<\/p>\n<p>9\u3001\u914d\u7f6euwsgi\uff0c\u521b\u5efauwsgi\u914d\u7f6e\u6587\u4ef6\/usr\/local\/nginx\/conf\/uwsgi.ini\uff0c\u8be6\u7ec6\u5185\u5bb9\u5982\u4e0b\uff1a<br \/>\nview plainprint?<br \/>\n[uwsgi]<br \/>\nsocket = 0.0.0.0:9000<br \/>\nmaster = true<br \/>\npidfile = \/usr\/local\/nginx\/uwsgi.pid<br \/>\nprocesses = 8<br \/>\nworkers = 2<br \/>\nchdir = \/data\/www\/demo<br \/>\npythonpath = \/data\/www<br \/>\nprofiler=true<br \/>\nmemory-report=true<br \/>\nenable-threads = true<br \/>\nlogdate=true<br \/>\nlimit-as=6048<br \/>\ndaemonize=\/data\/logs\/django.log<\/p>\n<p>&#8212;\u5173\u952e\u53c2\u6570\u53ca\u8bf4\u660e&#8212;<br \/>\n1\uff09chdir \u6307\u5b9a\u9879\u76ee\u76ee\u5f55\uff1b<br \/>\n2\uff09pythonpath \u6307\u5b9a\u9879\u76ee\u76ee\u5f55\u4e0a\u4e00\u7ea7<br \/>\n3\uff09processes \u6307\u5b9a\u8fdb\u7a0b\u6570<br \/>\n4\uff09workers \u5206\u914dCPU\u7684\u6838\u6570<br \/>\n5\uff09limit-as \u5b50\u8fdb\u7a0b\u5206\u914d\u7684\u5185\u5b58\u5927\u5c0f<br \/>\n6\uff09max-requests \u5206\u914d\u6700\u5927\u7684\u8bf7\u6c42\u6570<\/p>\n<p>\u542f\u52a8uwsgi\u4e0enginx\u670d\u52a1\uff0c\u5efa\u8bae\u914d\u7f6e\u6210\u670d\u52a1\u81ea\u542f\u52a8\u811a\u672c\uff0c\u4fbf\u4e8e\u540e\u7eed\u7684\u65e5\u5e38\u7ef4\u62a4\u3002\u8be6\u7ec6\u542f\u52a8\u811a\u672c\u8fd9\u91cc\u4e0d\u5c55\u5f00\u8bf4\u660e\uff0c\u6709\u5174\u8da3\u7684\u8bfb\u8005\u53ef\u53c2\u9605\u4e92\u8054\u7f51\u4e0a\u5df2\u7ecf\u5b58\u5728\u7684\u76f8\u5173\u8d44\u6e90\u3002<br \/>\n\u6700\u540e\u542f\u52a8uwsgi\u4e0enginx\u670d\u52a1<br \/>\nview plainprint?<br \/>\n# \/usr\/bin\/uwsgi &#8211;ini \/usr\/local\/nginx\/conf\/uwsgi.ini<br \/>\n# \/usr\/local\/nginx\/sbin\/nginx<\/p>\n<p>\u8bbf\u95eehttpss:\/\/demo.domain.com\uff0c\u51fa\u73b0\u5982\u56fe\u6240\u793a\u7684\u9875\u9762\u8bf4\u660eDjango+uwsgi\u73af\u5883\u90e8\u7f72\u6210\u529f\uff01<br \/>\n\u70b9\u51fb\u5728\u65b0\u7a97\u53e3\u4e2d\u6d4f\u89c8\u6b64\u56fe\u7247<\/p>\n<p>\u4e8c\u3001OMServer\u9879\u76ee\u90e8\u7f72<br \/>\n1\u3001\u4fee\u6539Nginx\u914d\u7f6e<br \/>\n\u6dfb\u52a0OMServer\u9879\u76ee\u7ad9\u70b9\u914d\u7f6e\uff0c[server]\u57df\u5177\u4f53\u5185\u5bb9\u5982\u4e0b\uff1a<br \/>\nview plainprint?<br \/>\nserver {<br \/>\nlisten 80;<br \/>\nserver_name omserver.domain.com;<\/p>\n<p>location \/ {<br \/>\nuwsgi_pass 127.0.0.1:9001;<br \/>\ninclude uwsgi_params;<br \/>\nuwsgi_param UWSGI_CHDIR \/data\/www\/OMserverweb;<br \/>\nuwsgi_param UWSGI_SCRIPT django_wsgi;<br \/>\naccess_log off;<br \/>\n}<br \/>\nlocation ^~ \/static {<br \/>\nroot \/data\/www\/OMserverweb;<br \/>\n}<\/p>\n<p>location ~* ^.+\\.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ {<br \/>\nroot \/data\/www\/OMserverweb\/static;<br \/>\naccess_log off;<br \/>\n}<br \/>\n}<\/p>\n<p>1\uff09\u5207\u8bb0\u4fee\u6539UWSGI_SCRIPT\u4e3adjango_wsgi;<br \/>\n2\uff09\u76d1\u542cuwsgi\u7aef\u53e3\u4fee\u6539\u6210127.0.0.1:9001; #\u591a\u4e2a\u7ad9\u70b9\u4f7f\u7528\u4e0d\u540c\u7aef\u53e3\u533a\u5206<\/p>\n<p>2\u3001\u6dfb\u52a0omserver\u9879\u76eeuwsgi\u914d\u7f6e<br \/>\nview plainprint?<br \/>\n# cd \/usr\/local\/nginx\/conf<br \/>\n# vi uwsgi_omserver.ini<br \/>\n[uwsgi]<br \/>\nsocket = 0.0.0.0:9001<br \/>\nmaster = true<br \/>\npidfile = \/usr\/local\/nginx\/uwsgi_omserver.pid<br \/>\nprocesses = 8<br \/>\nchdir = \/data\/www\/OMserverweb<br \/>\npythonpath = \/data\/www<br \/>\nprofiler=true<br \/>\nmemory-report=true<br \/>\nenable-threads = true<br \/>\nlogdate=true<br \/>\nlimit-as=6048<br \/>\ndaemonize=\/data\/logs\/django_omserver.log<\/p>\n<p>3\u3001\u9879\u76ee\u6e90\u7801\u914d\u7f6e<br \/>\n1\uff09\u9879\u76ee\u6e90\u7801\uff1a<br \/>\n# cd \/data\/www<br \/>\n\u4e0b\u8f7d\u5730\u5740\uff1ahttpsss:\/\/github.com\/yorkoliu\/pyauto\/tree\/master\/\u7b2c\u5341\u4e09\u7ae0\/OMserverweb<br \/>\n2\uff09\u5bfc\u5165\u6570\u636e\u5e93\u7ed3\u6784(Mysql)<br \/>\n\u4e0b\u8f7d\u5730\u5740\uff1ahttpsss:\/\/github.com\/yorkoliu\/pyauto\/blob\/master\/\u7b2c\u5341\u4e09\u7ae0\/SQL\/OMServer.sql<br \/>\n3\uff09\u4fee\u6539setting.py\uff08\u6570\u636e\u5e93\u4fe1\u606f\uff09<br \/>\nview plainprint?<br \/>\nDATABASES = {<br \/>\n&#8216;default&#8217;: {<br \/>\n&#8216;ENGINE&#8217;: &#8216;django.db.backends.mysql&#8217;, # Add &#8216;postgresql_psycopg2&#8217;, &#8216;postgresql&#8217;, &#8216;mysql&#8217;, &#8216;sqlite3&#8217; or &#8216;oracle&#8217;.<br \/>\n&#8216;NAME&#8217;: &#8216;OMServer&#8217;, # Or path to database file if using sqlite3.<br \/>\n&#8216;USER&#8217;: &#8216;omserver_user&#8217;, # Not used with sqlite3.<br \/>\n&#8216;PASSWORD&#8217;: &#8216;J8w3jZXSG#y34&#8217;, # Not used with sqlite3.<br \/>\n&#8216;HOST&#8217;: &#8216;192.168.1.10&#8217;, # Set to empty string for localhost. Not used with sqlite3.<br \/>\n&#8216;PORT&#8217;: &#8216;3306&#8217;, # Set to empty string for default. Not used with sqlite3.<br \/>\n}<br \/>\n}<\/p>\n<p>4\uff09\u4fee\u6539\u4e3b\u63a7\u7aefrpyc\u4e3b\u673aIP<br \/>\nOMserverweb\/autoadmin\/views.py<\/p>\n<p>view plainprint?<br \/>\n&#8230; &#8230;<br \/>\ntry:<br \/>\nconn=rpyc.connect(&#8216;192.168.1.20&#8217;,11511) #\u4fee\u6539\u6b64\u5904\u7684rpyc\u4e3b\u673a\u5730\u5740\uff1b<br \/>\nconn.root.login(&#8216;OMuser&#8217;,&#8217;KJS23o4ij09gHF734iuhsdfhkGYSihoiwhj38u4h&#8217;)<br \/>\nexcept Exception,e:<br \/>\nlogger.error(&#8216;connect rpyc server error:&#8217;+str(e))<br \/>\nreturn HttpResponse(&#8216;connect rpyc server error:&#8217;+str(e))<br \/>\n&#8230; &#8230;<\/p>\n<p>\u542f\u52a8\u9879\u76eeuwsgi\u53caNginx\u670d\u52a1<br \/>\nview plainprint?<br \/>\n# \/usr\/bin\/uwsgi &#8211;ini \/usr\/local\/nginx\/conf\/uwsgi_omserver.ini<br \/>\n# killall -9 nginx<br \/>\n# \/usr\/local\/nginx\/sbin\/nginx<\/p>\n<p>4\u3001\u8bbf\u95eehttpss:\/\/omserver.domain.com\uff0c\u51fa\u73b0\u4ee5\u4e0b\u7cfb\u7edf\u754c\u9762\u8bf4\u660e\u90e8\u7f72\u6210\u529f\uff01<br \/>\n\u70b9\u51fb\u5728\u65b0\u7a97\u53e3\u4e2d\u6d4f\u89c8\u6b64\u56fe\u7247<\/p>\n<p>\u4e0b\u4e00\u6b65\u914d\u7f6e\u300apython\u81ea\u52a8\u5316\u8fd0\u7ef4\uff1a\u6280\u672f\u4e0e\u6700\u4f73\u5b9e\u8df5\u300b\u4e4bOMServer\u5e73\u53f0\u73af\u5883\u90e8\u7f72\u8be6\u89e3\u3010\u4e3b\u63a7\u5236\u7aef\u3011<\/p>\n<p>\u8865\uff1a\u5e73\u53f0\u6d89\u53ca\u5f00\u6e90\u7ec4\u4ef6\u5305\u4e0b\u8f7d\uff1a<br \/>\nDjango-1.4.9.tar.gz \u4e0b\u8f7d<br \/>\nuwsgi-2.0.4.tar.gz \u4e0b\u8f7d<br \/>\nrpyc-3.2.3.tar.gz \u4e0b\u8f7d<br \/>\npcre-8.34.tar.gz \u4e0b\u8f7d<br \/>\nnginx-1.5.9.tar.gz \u4e0b\u8f7d<br \/>\nMySQL-python-1.2.5.zip \u4e0b\u8f7d<br \/>\ndjango-debug-toolbar-master.tar.gz \u4e0b\u8f7d<br \/>\nTags: omserver , django\u73af\u5883 , python\u8fd0\u7ef4\u81ea\u52a8\u5316<br \/>\n\u57fa\u4e8ePython\u5b9e\u73b0\u7684\u8f7b\u91cf\u7ea7WebServer-Yorserver1.0 \u4e0d\u6307\u5b9a<br \/>\n\u5218\u5929\u65af , 2013\/04\/09 21:39 , Python , \u8bc4\u8bba(11) , \u9605\u8bfb(47793) , Via \u672c\u7ad9\u539f\u521b<br \/>\n\u51c6\u5907\u5728\u5c0f\u7ec4\u5185\u90e8\u505a\u4e00\u6b21\u300aHTTP\u534f\u8bae\u5206\u6790\u300b\u7684\u57f9\u8bad\uff0c\u4e3a\u4e86\u4e0d\u53d7\u9650\u4e8eRequest header\u4e0eresponse header\u7684\u5185\u5bb9\uff0c\u60f3\u66f4\u6df1\u5165\u4e86\u89e3\u670d\u52a1\u5668\u7aef\u662f\u5982\u4f55\u54cd\u5e94\u3001\u5904\u7406\u4e00\u4e2a\u8bf7\u6c42\u7684\uff0c\u82b1\u4e86\u51e0\u5929\u65f6\u95f4\u5199\u4e86Yorserver\uff0c\u76ee\u524d\u57fa\u672c\u7684\u529f\u80fd\u90fd\u5b9e\u73b0\uff0c\u529f\u80fd\u6e05\u5355\u5982\u4e0b\uff1a<br \/>\n1\u3001\u652f\u6301\u81ea\u5b9a\u4e49response\u670d\u52a1\u53ca\u534f\u8bae\u7248\u672c\uff1b<br \/>\n2\u3001\u652f\u6301Expires\u53camax-age\u7684\u529f\u80fd\uff1b<br \/>\n3\u3001\u652f\u6301\u591a\u8fdb\u7a0b\u6216\u7ebf\u7a0b\u5f00\u542f\uff1b<br \/>\n4\u3001\u652f\u6301\u9519\u8bef\u9875\u53ca\u9ed8\u8ba4\u9875\u914d\u7f6e\uff1b<br \/>\n5\u3001\u652f\u6301access_log\u53caerror_log\u914d\u7f6e\uff1b<br \/>\n6\u3001\u652f\u6301gzip\u538b\u7f29\u914d\u7f6e\uff1b<br \/>\n7\u3001\u652f\u6301\u5b89\u5168\u5957\u8fde\u63a5\u670d\u52a1HTTPS\uff1b<br \/>\n8\u3001\u652f\u6301HTTP MIME\u81ea\u5b9a\u4e49\u914d\u7f6e\uff1b<br \/>\n9\u3001\u652f\u6301php\u3001perl\u3001python\u811a\u672ccgi\u8bbf\u95ee\uff1b<br \/>\n10\u3001\u652f\u6301\u914d\u7f6e\u6587\u4ef6\u3002<br \/>\n(Centos6.*\u73af\u5883\u6d4b\u8bd5\u901a\u8fc7)<\/p>\n<p>\u4e00\u3001\u914d\u7f6e\u6587\u4ef6\u8bf4\u660eyorserver.conf<br \/>\nview plainprint?<br \/>\n# This is the Yorserver configuration file.<br \/>\n# server_version: Add response HTTP header server version information.<br \/>\nserver_version = &#8220;YorServer1.0&#8243;<\/p>\n<p># bind_ip: Allows you to bind yorserver to specific IP addresses.<br \/>\n#<br \/>\nbind_ip=&#8221;0.0.0.0&#8221;<\/p>\n<p># port: Allows you to bind yorserver&#8217;s port, httpss default 80 and Https 443.<br \/>\nport=80<\/p>\n<p># sys_version: Add response HTTP header python version information.<br \/>\nsys_version = &#8220;&#8221;<\/p>\n<p># protocol_version: Add response HTTP header protocol version.<br \/>\nprotocol_version = &#8220;HTTP\/1.0&#8243;<\/p>\n<p># Expires: Add response HTTP header Expires and Max-age version. format:d\/h\/m(Day\/Hour\/Minute).<br \/>\nExpires=&#8221;7d&#8221;<\/p>\n<p># Multiprocess: configure yorserver Multi process support(on\/off).<br \/>\nMultiprocess=&#8221;off&#8221;<\/p>\n<p># Multithreading: configure yorserver Multi threading support(on\/off).<br \/>\nMultithreading=&#8221;on&#8221;<\/p>\n<p># DocumentRoot: configure web server document root.<br \/>\nDocumentRoot=&#8221;\/usr\/local\/yorserver\/www&#8221;<\/p>\n<p># page404: configure web server deafult 404 page.<br \/>\npage404=&#8221;\/404.html&#8221;<\/p>\n<p># indexpage: configure web server deafult index page.<br \/>\nindexpage=&#8221;\/index.html&#8221;<\/p>\n<p># Logfile: configure web server log file path,disable logs Logfile=&#8221;&#8221;.<br \/>\nLogfile=&#8221;\/usr\/local\/yorserver\/logs\/access.log&#8221;<\/p>\n<p># errorfile: configure web server error file path.<br \/>\nerrorfile=&#8221;\/usr\/local\/yorserver\/logs\/error.log&#8221;<\/p>\n<p>[gzip]<br \/>\n# gzip: Enable(on) or Disable(off) gzip options.<br \/>\ngzip=&#8221;on&#8221;<\/p>\n<p># configure compress level(1~9)<br \/>\ncompresslevel=1<\/p>\n<p>[ssl]<br \/>\n# ssl: Enable(on) or Disable(off) HTTPS options,port options must configure &#8220;443&#8221;.<br \/>\nssl=&#8221;off&#8221;<\/p>\n<p># configure privatekey and certificate pem.<br \/>\nprivatekey=&#8221;\/home\/webkey\/privkey.pem&#8221;<br \/>\ncertificate=&#8221;\/home\/webkey\/cacert.pem&#8221;<\/p>\n<p>[cgim]<br \/>\n# cgi_moudle: Enable(on) or Disable(off) cgi support.<br \/>\ncgi_moudle=&#8221;on&#8221;<\/p>\n<p># cgi_path: configure cgi path,multiple cgi path use &#8216;,&#8217; delimited,cgi_path in bin directory.<br \/>\ncgi_path=&#8217;\/cgi-bin&#8217;,<\/p>\n<p># cgi_extensions: configure cgi file extension.<br \/>\ncgi_extensions=&#8221;(&#8216;.cgi&#8217;,&#8217;.py&#8217;,&#8217;.pl&#8217;,&#8217;.php&#8217;)&#8221;<\/p>\n<p># contentTypes: configure file mime support.<br \/>\n[contentTypes]<br \/>\ncss=&#8221;text\/css&#8221;<br \/>\ndoc=&#8221;application\/msword&#8221;<br \/>\ngif=&#8221;image\/gif&#8221;<br \/>\ngz=&#8221;application\/x-gzip&#8221;<br \/>\nhtml=&#8221;text\/html&#8221;<br \/>\nhtm=&#8221;text\/html&#8221;<br \/>\nesp=&#8221;text\/html&#8221;<br \/>\nics=&#8221;text\/calendar&#8221;<br \/>\njpeg=&#8221;image\/jpeg&#8221;<br \/>\njpg=&#8221;image\/jpeg&#8221;<br \/>\njs=&#8221;text\/javascript&#8221;<br \/>\npdf=&#8221;application\/pdf&#8221;<br \/>\npng=&#8221;image\/png&#8221;<br \/>\nrtf=&#8221;application\/rtf&#8221;<br \/>\ntxt=&#8221;text\/plain&#8221;<br \/>\nzip=&#8221;application\/zip&#8221;<br \/>\ncgi=&#8221;text\/html&#8221;<br \/>\npy=&#8221;text\/html&#8221;<br \/>\npl=&#8221;text\/html&#8221;<br \/>\nphp=&#8221;text\/html&#8221;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>pyClamad\u6a21\u5757\u7684\u5b89\u88c5\u65b9\u6cd5\u5982\u4e0b\uff1a # 1\u3001\u5ba2\u6237\u7aef\uff08\u75c5\u6bd2\u626b\u63cf\u6e90\uff09\u5b89\u88c5\u6b65\u9aa4 # yum install -y  [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[545],"tags":[],"class_list":["post-12076","post","type-post","status-publish","format-standard","hentry","category-ch100-dev-operation"],"_links":{"self":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/12076"}],"collection":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12076"}],"version-history":[{"count":9,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/12076\/revisions"}],"predecessor-version":[{"id":12085,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/12076\/revisions\/12085"}],"wp:attachment":[{"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.powenko.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}