手机
当前位置:查字典教程网 >脚本专栏 >python >Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
摘要:具体环境:Ubuntu14.04Python2.7.6Django1.7.1Virtualenvname:testNginxuwsgi假设项...

具体环境:

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测试不知道为什么不成。明天待续)

【Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程】相关文章:

python类型强制转换long to int的代码

python 七种邮件内容发送方法实例

Python查看多台服务器进程的脚本分享

python目录操作之python遍历文件夹后将结果存储为xml

python通过ElementTree操作XML获取结点读取属性美化XML

python中使用urllib2伪造HTTP报头的2个方法

python3.3使用tkinter开发猜数字游戏示例

python中的一些类型转换函数小结

Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器

Python的ORM框架SQLAlchemy入门教程

精品推荐
分类导航