开发者社区> 余二五> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

django+nginx+uwsgi部署web站点

简介:
+关注继续查看

环境:

django:1.8.16  

python:2.7.13

pip:2.7

uwsgi:2.0.15

project路径: /opt/cmdb/


Uwsgi的安装配置

1、安装python2.7 (省略安装过程)

2、安装pip2.7 (省略安装过程)

3、安装uwsgi(注意:要用pip2.7安装)

1
2
3
pip2.7 install uwsgi
pip2.7 install requests
ln -s /usr/local/python2.7/bin/uwsgi /usr/bin/uwsgi


4、配置uwsgi.ini 

路径: /opt/cmdb/uwsgi.ini

文件内容:

[root@localhost cmdb]# cat uwsgi.ini 

1
2
3
4
5
6
7
8
9
10
11
[uwsgi]
socket = 127.0.0.1:8088
chdir=/opt/cmdb
wsgi-file = cmdb/wsgi.py
pidfile = /var/run/uwsgi.pid
daemonize = /var/log/uwsgi.log
perl-auto-reload = 2
#buffer-size = 102400
master = true
processes = 2
threads = 4


Uwsgi:常用参数和选项

关于参数的具体使用,可以阅读官方文档http://uwsgi-docs.readthedocs.org/en/latest/Options.html ,在这里列出一些常用的参数:

  • chdir 项目目录

  • home virtualenv目录(如没有运行virtualenv虚拟环境,则无需设置)

  • socket 套接字文件或TCP套接字,例如:site1.uwsgi.sock 或 127.0.0.1:8000

  • uid 用户id

  • gid 用户组id

  • processes 工作进程数

  • harakiri 进程超过该时间未响应就重启该进程(默认单位为秒)

  • module 要启动的wsgi模块入口,如:mysite.wsgi:application

  • ini 指定ini配置文件

  • xml 指定xml配置文件(与ini类似)

  • file 指定要运行的wsgi程序文件,如:test.py

  • emperor Emperor模式

  • so-keepalive 开启TCP KEEPALIVE(unix套接字方式下无效)


uwsgi服务init脚本 /etc/init.d/cmdb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
# Comments to support chkconfig on Linux
# chkconfig: 35 85 15
# description: uwsgi is an HTTP(S) server, HTTP(S) reverse
#
# author     mail@zhaoyanan.cn
#
# chmod +x /etc/rc.d/init.d/uwsgi
# chkconfig --add uwsgi
# chkconfig --level 2345 uwsgi on
#
# Change History:
# date        author          note
# 2016/11/16  mail@zhaoyanan.cn  create, refer to nginx, and http://uwsgi-docs.readthedocs.io/en/latest/Management.html
  
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="uwsgi daemon"
NAME=uwsgi            
DAEMON=/usr/bin/$NAME  ##指向uwsgi的命令路径
SCRIPTNAME=/etc/init.d/$NAME  ##启动脚本路径
CONFFILE=/opt/cmdb/uwsgi.ini  ##uwsgi.ini配置文件路径
PIDFILE=/var/run/uwsgi.pid   ##pid文件路径
test -x $DAEMON || exit 0
  
d_start(){
    $DAEMON --ini $CONFFILE || echo -n " already running"
}
  
d_stop() {
    $DAEMON --stop $PIDFILE || echo -n " not running"
}
  
d_reload() {
    $DAEMON --reload $PIDFILE || echo -n " counld not reload"
}
  
d_freload() {
    $DAEMON --die-on-term $PIDFILE || echo -n " counld not force reload"
}
  
case "$1" in
start)
    echo -n "Starting $DESC:$NAME"
    d_start
    echo "."
;;
stop)
    echo -n "Stopping $DESC:$NAME"
    d_stop
    echo "."
;;
reload)
    echo -n "Reloading $DESC configuration..."
    d_reload
    echo "reloaded."
;;
force_reload)
    echo -n "The official provision of the parameters, tested and found not to support..."
    # d_freload
    # echo "force reloaded."
    echo "."
;;
restart)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 2
    d_start
    echo "."
;;
*)
    echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force_reload}" >&2
    exit 3
;;
esac
  
exit 0



Nginx安装配置

1、安装nginx

1
yum -y install nginx


2、配置nginx

[root@localhost cmdb]# cat /etc/nginx/conf.d/cmdb.conf 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
upstream django {
    server 127.0.0.1:8088;
    }
server {
    listen      80;
    server_name 172.16.42.128;
    charset     utf-8;
    client_max_body_size 10M;
    location /static {
        alias /opt/cmdb/static;
    }
    location / {
        uwsgi_send_timeout 300;
        uwsgi_connect_timeout 300;
        uwsgi_read_timeout 300;
        uwsgi_pass  django;
        include     /etc/nginx/uwsgi_params;
    }
}


启动站点

1、启动nginx服务

/etc/init.d/nginx start (删除默认的default.conf配置)


2、启动uwsgi

/etc/init.d/cmdb start


排错:

1、在实际操作中发现,启动uwsgi服务后,访问站点出现“502 Bad Gateway”的报错,后来发现是在settings中设置了不允许访问站点

1
ALLOWED_HOSTS = []

改成

1
ALLOWED_HOSTS = [‘*’]

后问题解决。


2、由于python2.6 不支持django1.8 ,所以需要在服务器上安装python2.7,并且在安装之前,最好输入以下命令,将可能用到的包都装上,否则出现问题时,需要重新编译安装python2.7

1
2
3
4
yum -y install zlib-devel bzip2-devel openssl-devel 
yum -y install ncurses-devel sqlite-devel readline-devel 
yum -y install tk-devel gdbm-devel db4-devel libpcap-devel
yum -y install xz-devel libffi-devel


3、用pip安装uwsgi时,一定要用pip2.7(用python2.7安装的pip) 进行安装


4、invalid request block size: 4161 (max 4096)...skip报错解决

在访问站点时,出现了invalid request block size: 4161 (max 4096)...skip报错解决的报错。

解决办法是在uwsgi.ini配置文件中增加一条配置:buffer-size = 102400

将buffer-size设置大一些










本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1930346,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
DjangoORM 操作 | 学习笔记
快速学习 DjangoORM 操作
50 0
django的orm中F对象的使用
今天不巧就用上了。 就是将数据库的字段,自增1的场景。 from django.db.models import F DeployPool.objects.filter(name=deployversion_id).
1219 0
Django中的ORM
1. 数据库的配置 Django可以配置使用sqlite3,mysql,oracle,postgresql等数据库 在一个Django项目中,默认使用的是sqlite3数据库 DATABASES = { 'default': { 'ENGINE': 'django.
949 0
Django学习(第四天:ORM&Model)
ORM,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。 Model from django.utils import timezone # Create your models here.
958 0
Django ORM模型:想说爱你不容易
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。   使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational mapping)模型。
1162 0
这篇 感觉很实用--DJANGO ORM
Django之model F/Q以及多对多操作 http://www.cnblogs.com/ccorz/p/5882400.html model之F/Q操作 F操作,使用查询条件的值 打个比方吧,有一张表,保存着公司员工的工资,公司普涨工资,如何在model中操作,这就用到了F,首先需要导入此模块: from django.
1273 0
实用型的DJANGO ORM
比较深入一点的内容,需要用时,用心看看。 URL:   https://www.sitepoint.com/doing-more-with-your-django-models/ https://www.
1012 0
作DJANGO ORM时的一些最佳实践
还是国外的正规,都在作DJANGO ORM的解藕化工作了。 外键不用,多对多,一对多,不用。   参考URL: http://scottlobdell.me/2015/01/sql-database-best-practices-django-orm/ ==========这个网站有很多D...
994 0
【转】建立一个更高级别的查询 API:正确使用Django ORM 的方式
这个就比较深入啦。。。 http://www.oschina.net/translate/higher-level-query-api-django-orm 结论: 在视图和其他高级应用中使用源生的ORM查询代码不是很好的主意。
820 0
+关注
20377
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载