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数组条件过滤filter函数使用示例
Jul 22 Python
Python 3.x 新特性及10大变化
Jun 12 Python
python中的错误处理
Apr 10 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
Python简单处理坐标排序问题示例
Jul 11 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
numpy的Fancy Indexing和array比较详解
Jun 11 Python
python如何实时获取tcpdump输出
Sep 16 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
python 经纬度求两点距离、三点面积操作
Jun 03 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 disk_free_space 返回目录可用空间
2010/05/10 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php扩展开发入门demo示例
2019/09/23 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
小程序实现多选框功能
2018/10/30 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
编写简单的Python程序来判断文本的语种
2015/04/07 Python
python获得一个月有多少天的方法
2015/06/04 Python
Python连接DB2数据库
2016/08/27 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
python队列原理及实现方法示例
2019/11/27 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
什么是组件架构
2016/05/15 面试题
Ajax主要包含了哪些技术
2014/06/12 面试题
个人担保书范文
2014/05/20 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
表扬信范文
2019/04/22 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
Python破解极验滑动验证码详细步骤
2021/05/21 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers