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网络编程之TCP通信实例和socketserver框架使用例子
Apr 25 Python
python进阶教程之函数对象(函数也是对象)
Aug 30 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
Nov 20 Python
python设置值及NaN值处理方法
Jul 03 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
python使用knn实现特征向量分类
Dec 26 Python
详解用Python练习画个美队盾牌
Mar 23 Python
Python面向对象程序设计类的封装与继承用法示例
Apr 12 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
Python数据分析之pandas读取数据
Jun 02 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中preg_match的isU代表什么意思
2015/10/01 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python中星号变量的几种特殊用法
2016/09/07 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
详解python编译器和解释器的区别
2019/06/24 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
2014年党务公开实施方案
2014/02/27 职场文书
简单的项目建议书模板
2014/03/12 职场文书
请假条怎么写
2014/04/10 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
党支部季度考核意见
2015/06/02 职场文书