《Python部署手记:django, gunicorn, virtualenv, circus, nginx.docx》由会员分享,可在线阅读,更多相关《Python部署手记:django, gunicorn, virtualenv, circus, nginx.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、相关技术点:django , gunicorn , virtualenv , circus , nginx陆续花了一个月时间,先是折腾flask ,完了折腾djang。,再到部署。感觉身 体被掏空。说好的人生苦短,要用python呢。相比之下PHP部署简单多了(主要是傻瓜式的一键安装,很多vps都提供PHP预装环境)。0c 闸口 OllilElD I- & / G D3SG G cd DOG G-ED B Sw*deploying至少翻开了 10倍于上图的tabs。简直丧心病狂。下面记录在部署django中的一些细节。以免以后再google来回折腾。服务器:阿里云ubuntu创立新用户在roo
2、t下创立新的useruseradd -d /home/stay4it -s /bin/bash -m stay4itpasswd stay4itusermod -a -G admin stay4itvi /etc/sudoers#在root权限下添加stay4it权限stay4it ALL=(ALL: ALL) ALLexit尝试用新用户登陆。登陆后会发现你所在的根目录为/home/stay4itpython环境python3.5.2 还是 python2.7.6 ?自行安装要是当初不执着于python3 ,也就不会出那么多幺蛾子了。virtualenv (可选)为每个python app创立
3、一个独立开发环境。(如果确定只用 python3|python2 ,大可不必安装)stay4it: $ pip3 install virtualenv stay4it:飞 pip3 install virtualenvwrapper编辑.bashrcvi .bashrcexport W0RK0N_H0ME=/home/stay4it/. virtualenvsVIRTUALENVWRAPPER_PYTH0N=,/usr/bin/python3, source /usr/local/bin/virtualenvwrapper. shsource .bashrc创立一个开发环境stay4it:飞
4、mkvirtualenv stay4itstay4it:飞 workon stay4itdeactivate创立出来的虚拟环境在 /home/stay4it/.virtualenvs/stay4itgit导入项安装gitmkdir testgit initgit remote add origin s: /git. oschina. net/stay4it/test-deploy. gitgit pull测试 run serverworkon stay4itpip3 install -r requirements.txtpython3 manage, py migratepython3 man
5、age, py runserver 8081能跑起来就算成功gunicornstay4it:飞 workon stay4itpip3 install gunicorncd project/vi gunicorn. conf修改 gunicorn.conf#指定workers的数目,使用多少个进程来处理请求workers = 3#绑定本地端口bind =? 127. 0.0. 1: 8081 gunicorn testdeploy, wsgi -c gunicorn. conf能跑起来也算成功circus监控端口,自动重启如果用 python2 ,可以用 supervisor, circus 是
6、 supervisor 在 python3 上的 替代品。退出 virtualenv(deactivate) pip3 install circusvi /etc/circus.inicircuscheck delay = 5endpoint = tcp: /127.0.0.1: 5555pubsub endpoint = tcp: /127.0.0.1: 5556statsd = truewatcher: testworkingdir = /home/stay4it/test/cmd = gunicornargs = testdeploy, wsgi -c gunicorn. confuid
7、 = stay4itnumprocesses = 3sendhup = trueautostart = truestdout_stream. class = FileStreamstdout_stream. filename = /home/projects/log/test-deploy. logstdout_stream. max_bytes = 10485760stdout_stream. backup_count = 4#使用virtualenv独立开发环境 copy_env = Truevirtualenv = /home/stay4it/. virtualenvs/stay4it/
8、sudo service circus start|stop通过启动circus服务,可以自动去跑circus.ini里的watchero当这个 watcher未启动时,自动启动。cmd+args实际上还是用gunicom来起服务 的。nginx反向代理sudo apt-get install nginx sudo service nginx start|stop|restart向nginx中添加project代理sudo vi /etc/nginx/sites-available/defaultserver listen 80;server name test. stay4it. com;r
9、oot /home/stay4it/test/;error log /home/stay4it/logs/access. log;location / proxy_pass : /localhost: 8081;sudo service nginx start本机自动部署fabricssh到服务器不是那么友好,可以用fabric来完成自动部署。退出 virtualenv(deactivate)python3 版本pip3 install fabric3在本机project根目录添加fabfile.py ,你可以把这个py文件当作一个脚 本,这样就不用在ssh到服务器去部署。本机直接跑fab就可
10、以部署了。# 一*一 coding: utf-8 一*一from fabric, api import *# 服务器登录用户名:env.user = stay4it服务器地址,可以有多个,依次部署:env. hosts = ip,env. passwords = roothostname : ,不用密码也可以用ssh登录# env. key_filename =ssh/id_rsa_REMOTE_BASE_DIR = J/home/stay4it/test,def deploy ():with cd(_REMOTE_BASE_DIR), prefix (source /home/stay4it
11、/. virtualenvs/stay4 it/bin/activate,/):run( git pulT )runC pip3 install -r requirements, txt)run C python3 manage. py migrate,)run (,gunicorn testdeploy, wsgi -c gunicorn. conf,)runC sudo service circus restart)runsudo service nginx restart)fab deploy后续可以再添加ssh rsa ,这样就不用总是用密码登录。看起来蛮简单的,真正配起来问题多多。身边如果有个python大神就好了 (求介绍)。自己折腾太耗时了。期间很多技术选型都被误导了,很多python2的库在python3上都木有。很多部署都有个人偏好。比方不要django选flask ,不要circus选supervisor,同事还给我推荐了 ansible , c叩istranorb。累积的学习本钱超 高。也不知道当时到底哪个筋搭错了,非用python搭服务器。PHP才是最好 的语言啊。