打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
快速使用uwsgi部署

快速使用uwsgi部署

之前尝试在阿里云部署一个bottle.py写的web服务,选择了unbuntu12.04,一穷二白的ubuntu上用uwsgi部署还挺简单的。这里简单记录一下。

先要改一改程序代码,声明一个application

1
application = bottle.app()

然后安装uwsgi,demo.py就是修改过的bottle的代码。

这里我遇到了— unavailable modifier requested: 0 --,要安装uwsgi-plugin-python,并且uwsgi启动时候添加--plugin python

一些uwsgi的操作看这里

12
apt-get install uwsgi uwsgi-plugin-pythonuwsgi --socket :8000 --plugin python --file demo.py --processes 4 --pidfile /tmp/demo.pid --touch-reload=/tmp/restart -d uwsgi.log

安装nginx

1234567
apt-get install libpcre3 libpcre3-dbg libpcre3-devapt-get install zlib1g zlib1g-dbg zlib1g-devapt-get install makecd /path/to/nginx./configuremakemake install

最后配置nginx。默认安装路径在/usr/local/nginx/conf/nginx.conf

1234567891011
server {    listen       80;    server_name  demo.artori.us;    location /static/ { alias /home/root/demo/static/; }    location / {        uwsgi_pass      127.0.0.1:8000;        include         uwsgi_params;    }}

自此搞定

via:

 

 

 

 

 

 

 

 http://2goo.info/blog/panjj/Django/2013/05/16/549

 

Virtualenv+Django+uWSGI+Nginx部署方式备忘录

 

阅读量(1409)  |  发表 于 2013-05-17 00:44:17

Nginx 0.86以后的版本内置了uWSGI模块,用它部署Django应用性能不错,而且很省内存,所以一年前尝试Virtualenv+Django+uWSGI+Nginx这种组合方式去部署2goO网站,因为那时只看到uWSGI的测试结果,很兴奋,什么材料都没有看,直接下载包安装到服务器上折腾了,一时不了解里面的机制原理,过程中竟然遇到了很大的挫折,相比fastCGI,个人感觉难了不少,所以就放下了,终于到了2012年的年底,趁着春节,有点时间,啃了一晚上,终于搞定了。以下作为笔记以备忘。


Virtualenv可以建立一个独立的Python虚拟环境,使Python环境不受另一个环境的干扰。我喜欢这种方式去部署Django应用,因为每个Djanog应用所引用到的第三方库是不完全相同的,隔开后,让环境免遭污染。


Django 1.3以后完全支持wsgi协议,新建的项目myproject文件夹里就有一个wsgi.py文件,我没有修改里面的东西,直接在虚拟环境里安装uWSGI,使用它和wsgi.py文件桥接即可。


安装步骤:

在虚拟环境里安装uWSGI: pip install uwsgi

Virtualenv的安装和建立环境参考之前写的:《Django环境搭建常用的工具及做法》 http://2goo.info/blog/panjj/Django/2011/06/05/521


完整步骤如下:
#先安装pip工具
apt-get install python-pip  
#再安装virtualenv包
pip install -U virtualenv
#直接到/home/www-data/目录下建立一个twogoo的虚拟环境
cd /home/www-data/
virtualenv --no-site-packages --distribute twogoo  
#进入建立好的twogoo环境 安装项目所需的python库,比如uWSGI PIL psycopg2 Django South等等
cd twogoo  
source bin/activate
#在虚拟环境twogoo里安装uWSGI
pip install uwsgi


#安装其他库
pip install Django==1.4.5
pip install South
...

 

在虚拟环境里新建项目myproject:

django-admin.py startproject myproject


这时候,/home/www-data/twogoo/ 这个文件夹就是我建立的虚拟环境了,twogoo里面的结构如下:
twogoo
..lib
..local
..include
..myproject #我建立的项目
....myproject
......wsgi.py
......settings.py
......urls.py
...... ...
....static
....media
....templates
....manage.py


安装uwsgi后,需要简单的配置启动参数,这次使用ini文件配置,当然可以使用其他的文件格式,参考官方文档吧。
我在twogoo文件夹里建立一个配置文件 twogoo_uwsgi.ini,twogoo_uwsgi.sock
cd /home/www-data/twogoo/ 
touch twogoo_uwsgi.ini
touch twogoo_uwsgi.sock


这时twogoo里面的结构如下:
twogoo
..lib
..local
..include


..myproject #我建立的项目
....myproject
......wsgi.py
......settings.py
......urls.py
...... ...
....static
....media
....templates
....manage.py


..twogoo_uwsgi.ini #刚才建立的配置文件
..twogoo_uwsgi.sock #配置文件用到的sock文件


twogoo_uwsgi.ini 文件里的内容如下:


[uwsgi]
vhost = false #注意多个项目的时候不能true哦,否则多个项目都共用这个配置参数了,这个很折腾人
plugins = python
#socket = 127.0.0.1:9000 #这个注释掉了,我采用sock的方式,当然你可以使用端口方式,nginx配置的时候修改一下即可
socket = /home/www-data/twogoo/twogoo_uwsgi.sock #配置文件用到的sock文件
master = true
enable-threads = true
workers = 6 #进程数
wsgi-file = /home/www-data/twogoo/myproject/myproject/wsgi.py  #这是项目wsgi.py文件的路径
virtualenv = /home/www-data/twogoo/   #twogoo虚拟环境的路径
chdir = /home/www-data/twogoo/myproject  #twogoo下myproject项目的路径


配置文件已经好了,在twogoo_uwsgi.ini(/home/www-data/twogoo/)同级目录下可以启动uwsgi了:


nohup uwsgi --ini twogoo_uwsgi.ini&


好,ctrl+c 
tail -f -n 1000 nohup.ou 可以看到uwsgi是否启动成功了。


剩下就是配置nginx,让nginx代理uwsgi进程:


我那时是通过apt-get安装nginx的,默认路径在/etc/nginx/下,配置步骤:


新建twogoo.conf文件,并配置参数
touch /etc/nginx/sites-enabled/twogoo.conf
nano /etc/nginx/sites-enabled/twogoo.conf


配置参数如下:
server {
    listen 80;
    server_name 2goo.info www.2goo.info;

    access_log /home/www/twogoo/logs/access.log;
    error_log /home/www/twogoo/logs/error.log;

    root /home/www/twogoo/myproject;
    index index.html index.htm;

    charset utf-8;

    location ~ ^/static/
    {
      root /home/www/twogoo/myproject/;
      expires 24h;
      access_log   off;
    }

    location ~ ^/media/
    {
      root /home/www/twogoo/myproject/;
      expires 24h;
      access_log   off;
    }


    location / {
        uwsgi_pass unix:/home/www/twogoo/twogoo_uwsgi.sock;
        # uwsgi_pass 127.0.0.1:9000;
        include /etc/nginx/uwsgi_params;
        proxy_http_version 1.1;
    }
  }


配置完成了,重启nginx:
/etc/init.d/nginx restart

(完)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Django Vue前后端分离项目部署
基于Python的自动化测试平台开发你要理解的:uWSGI
如何在uwsgi和nginx上部署Django项目?
Flask + Gunicorn + Nginx 部署 - Ray Liang - 博客园
linux下使用nginx + uWSGI运行flask程序
python nginx+uwsgi+WSGI 处理请求详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服