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 测试实现方法
Dec 24 Python
跟老齐学Python之从格式化表达式到方法
Sep 28 Python
pymongo实现多结果进行多列排序的方法
May 16 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
Python 创建空的list,以及append用法讲解
May 04 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
python统计多维数组的行数和列数实例
Jun 23 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
Python实战之实现简易的学生选课系统
May 25 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中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
PHPThumb图片处理实例
2014/05/03 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
JQuery标签页效果的两个实例讲解(4)
2015/09/17 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
基于JS设计12306登录页面
2016/12/28 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
JS实现数组按升序及降序排列的方法
2017/04/26 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
React实现阿里云OSS上传文件的示例
2020/08/10 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
tornado捕获和处理404错误的方法
2014/02/26 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python实现常见的回文字符串算法
2018/11/14 Python
详解python中init方法和随机数方法
2019/03/13 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
keras之权重初始化方式
2020/05/21 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
Shell如何接收变量输入
2012/09/24 面试题
给同事的道歉信
2014/01/11 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
简单的辞职信模板
2015/05/12 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
担保书格式范文
2015/09/22 职场文书
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android