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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
用Python编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
django实现前后台交互实例
Aug 07 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
python实现简单的井字棋
May 26 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.MVC的模板标签系统(二)
2006/09/05 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
简单的vuex 的使用案例笔记
2018/04/13 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
python中正则表达式与模式匹配
2019/05/07 Python
Python-接口开发入门解析
2019/08/01 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
银行门卫岗位职责
2013/12/29 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
入党介绍人考察意见
2015/06/01 职场文书
公司费用报销管理制度
2015/08/04 职场文书
员工规章制度范本
2015/08/07 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers
MySQL主从切换的超详细步骤
2022/06/28 MySQL