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中的sort方法使用详解
Jul 25 Python
Python压缩和解压缩zip文件
Feb 14 Python
详解python中的 is 操作符
Dec 26 Python
详解Python自建logging模块
Jan 29 Python
python奇偶行分开存储实现代码
Mar 19 Python
解决Python安装后pip不能用的问题
Jun 12 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
Python assert语句的简单使用示例
Jul 28 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 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使用数组实现队列
2012/02/05 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
Node.js console控制台简单用法分析
2019/01/04 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
Zabbix实现微信报警功能
2016/10/09 Python
Python 修改列表中的元素方法
2018/06/26 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
python实现可变变量名方法详解
2019/07/01 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
英文简历中的自我评价用语
2013/12/09 职场文书
2014年会策划方案
2014/05/11 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
毕业感言怎么写
2015/07/31 职场文书
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
JS 基本概念详细介绍
2021/10/16 Javascript