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根据文件大小打log日志
Oct 09 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
python中执行shell的两种方法总结
Jan 10 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
django 在原有表格添加或删除字段的实例
May 27 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
Python简单I/O操作示例
Mar 18 Python
python使用minimax算法实现五子棋
Jul 29 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
python实现从ftp服务器下载文件
Mar 03 Python
django创建css文件夹的具体方法
Jul 31 Python
浅析python 字典嵌套
Sep 29 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中执行系统外部命令
2006/10/09 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
python导入库的具体方法
2020/06/18 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
进程的查看和调度分别使用什么命令
2013/12/14 面试题
优秀班干部事迹材料
2014/01/26 职场文书
公司经理聘任书
2014/03/29 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
感恩老师主题班会
2015/08/12 职场文书
Python基本数据类型之字符串str
2021/07/21 Python