Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程


Posted in Python onNovember 18, 2014

具体环境:
Ubuntu 14.04 Python 2.7.6 Django 1.7.1 Virtualenv name:test Nginx uwsgi

假设 项目文件夹位于 /data/www/ts 设置保存在 ./conf

virtualenv name = test

domain name = example.com

django+uwsgi的部署实在是太蛋疼了..网上已有的教程似乎有新版本的兼容问题。最后跑到uwsgi官网上找的教程终于跑通了..
不过官网的教程似乎有引导教学性质,部署的时候就显得很绕弯路,在这里记录下来精简内容

http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html

首先,需要一个uwsgi_params文件,放在项目的conf文件夹里面。之后需要指向它。文件内容如下:

uwsgi_param QUERY_STRING $query_string;

uwsgi_param REQUEST_METHOD $request_method;

uwsgi_param CONTENT_TYPE $content_type;

uwsgi_param CONTENT_LENGTH $content_length;

uwsgi_param REQUEST_URI $request_uri;

uwsgi_param PATH_INFO $document_uri;

uwsgi_param DOCUMENT_ROOT $document_root;

uwsgi_param SERVER_PROTOCOL $server_protocol;

uwsgi_param HTTPS $https if_not_empty;

uwsgi_param REMOTE_ADDR $remote_addr;

uwsgi_param REMOTE_PORT $remote_port;

uwsgi_param SERVER_PORT $server_port;

uwsgi_param SERVER_NAME $server_name;

创建一个叫做ts_nginx.conf 的文件,内容如下

# ts_nginx.conf
# the upstream component nginx needs to connect to

upstream django {

    # server unix:///path/to/your/mysite/mysite.sock; # for a file socket

    server 127.0.0.1:8001; # for a web port socket (we'll use this first)

}
# configuration of the server

server {

    # the port your site will be served on

    listen 80;

    # the domain name it will serve for

    server_name .example.com; # substitute your machine's IP address or FQDN

    charset utf-8;
    # max upload size

    client_max_body_size 75M; # adjust to taste
    # Django media

    location /media {

        alias /data/www/ts/media; # your Django project's media files - amend as required

    }
    location /static {

        alias /data/www/ts/static; # your Django project's static files - amend as required

    }
    # Finally, send all non-media requests to the Django server.

    location / {

        uwsgi_pass django;

        include /data/www/ts/conf/uwsgi_params; # the uwsgi_params file you installed

    }

}

把这个conf文件连接到nginx的搜索目录里面。

sudo ln -s /data/www/ts/conf/ts_nginx.conf /etc/nginx/sites-enabled/

先决条件:这里要设置好django项目的settings里面static files

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

and then run
python manage.py collectstatic

之后:

service nginx restart

应该就可以看到
http://example.cn:8000/media/1.gif
了(事先放进去一个静态文件)

之后的blabla步骤都是废话,跳到这里:

Configuring uWSGI to run with a .ini file

ts_uwsgi.ini 在项目根目录

[uwsgi]

# Django-related settings

# the base directory (full path)

chdir = /data/www/ts

# Django's wsgi file

module = ts.wsgi

# the virtualenv (full path)

home = /root/.envs/test

# process-related settings

# master

master = true

# maximum number of worker processes

processes = 10

# the socket (use the full path to be safe

socket = 127.0.0.1:8001

# ... with appropriate permissions - may be needed

# chmod-socket = 664

# clear environment on exit

vacuum = true

# set an environment variable

env = DJANGO_SETTINGS_MODULE=conf.settings 

uwsgi --ini mysite_uwsgi.ini # the --ini option is used to specify a file

这里环境变量设置env需要conf文件夹有init.py,否则conf不会被认为是module

(目前除了80端口,其他端口都可以通过地址:端口访问。已经测试8000,81.80测试不知道为什么不成。明天待续)

Python 相关文章推荐
用Python输出一个杨辉三角的例子
Jun 13 Python
Python标准库与第三方库详解
Jul 22 Python
Python中几个比较常见的名词解释
Jul 04 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
python3转换code128条形码的方法
Apr 17 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
python科学计算之narray对象用法
Nov 25 Python
python 用Matplotlib作图中有多个Y轴
Nov 28 Python
python服务器与android客户端socket通信实例
Nov 12 #Python
Python访问MySQL封装的常用类实例
Nov 11 #Python
python实现ipsec开权限实例
Nov 11 #Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
Nov 11 #Python
python实现在目录中查找指定文件的方法
Nov 11 #Python
Python实现list反转实例汇总
Nov 11 #Python
用python实现面向对像的ASP程序实例
Nov 10 #Python
You might like
php类
2006/11/27 PHP
在同一窗体中使用PHP来处理多个提交任务
2008/05/08 PHP
preg_match_all使用心得分享
2014/01/31 PHP
提高php编程效率技巧
2015/08/13 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
使用JS实现图片展示瀑布流效果的实例代码
2016/09/12 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
印度购物网站:TATA CLiQ
2017/11/23 全球购物
测绘工程个人的自我评价
2013/11/10 职场文书
历史专业个人求职信范文
2013/12/07 职场文书
美容院考勤制度
2014/01/30 职场文书
贷款担保申请书
2014/05/20 职场文书
建设工地安全标语
2014/06/07 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
教师学习心得体会范文
2016/01/21 职场文书