最近线上部署运维工单系统,使用django+uwsgi+nginx部署,发现这篇文章,很详细,觉得不错,转载一下:

写了那么长时间的django,一直没跟nginx结合一下,访问的时候老是得加端口号,觉得不爽。故想到部署到nginx上面。

环境:python:2.7.6

nginx:1.0.5 (yum直接安装的,版本好低的说,需要高版本的可以自行编译安装这都不是重点)

uWSGI: 2.0.10 (pip install uwsgi直接安装的,安装完成会提示你安装到哪了,我的是/usr/local/python27/bin/uwsgi,将uwsgi复制到/usr/bin/下面,方便直接运行)

django : 1,7,1

环境介绍完毕,开搞。

首先要有一个django项目,至于怎么创建就不赘述了,既然能找这篇文章看,对django肯定是了得的差不多了。

一。编辑nginx的配置文件

由于我是yum安装的,我的配置文件在/etc/nginx/目录下,自行编译的根据自己实际情况查找。为了方便管理我就放在了/etc/nginx/conf.d/,没错就是放vhosts配置文件的目录里面。

稍微话唠一下:由于yum安装的nginx 会在/etc/nginx/conf.d/

目录下生成default.conf配置文件,防止冲突就把它重命名好了.编辑django.conf(任意起名)

django.conf

server {listen  80;server_name localhost;location / {root /djangoproject/cmdb04;  #这个是我django项目所在的绝对路径,cmdb04是我的项目名,下同include     uwsgi_params;uwsgi_pass   127.0.0.1:9000; #这个要跟之后配置的uwsgi配置文件保持一致uwsgi_param UWSGI_CHDIR  /djangoproject/cmdb04; #这个也是我django项目所在的绝对路径uwsgi_param UWSGI_SCRIPT django_wsgi;#这个要和uwsgi配置文件里module的内容一致,嗯,应该是这样#access_log  off;access_log /var/log/nginx/access.log; #日志存放目录,当然前提是这个目录要事先存在,不然启动nginx会报错,手动创建就好了。}location /statics/ {            #这个statics名称要跟django setting文件里静态目录的配置保持一致,不然的话css等静态文件会找不到。alias /djangoproject/cmdb04/statics/; #这个就是statics所在的目录index index.html;
}
}

二。配置uWSGI。

在nginx目录创建一个uwsgi配置文件(当然了这个配置文件放在哪都行,只要你能找到的就行,那小弟先放/etc/nginx/下了哈)

uwsgi.xml
<uwsgi><socket>127.0.0.1:9000 </socket> #和nginx配置一致<listen>80</listen><master>true </master><pidfile>/usr/local/nginx/uwsgi.pid </pidfile> <processes>8 </processes><pythonpath>/djangoproject/cmdb04 </pythonpath> #我的django项目路径<module>django_wsgi</module> #和nginx里配置一致<profiler>true </profiler><memory-report>true </memory-report><enable-threads>true </enable-threads><logdate>true </logdate><limit-as>6048 </limit-as><daemonize>/tmp/uwsgi.log</daemonize> #日志存放位置
</uwsgi>

uwsgi.xml里其他一些配置暂且保持一致就行了,可根据自己要求修改。

三。创建django应用模块。

1.情况一:如果你的django项目是使用IDE创建的,那么在你的项目下应该会有wsgi.py这个文件,我的是在/djangoproject/cmdb04/cmdb04/(就是两个cmdb04,cmdb04是我的项目名),

直接复制到项目的根目录下,并重命名为django_wsgi.py。为什么是这个文件名呢,因为你在nginx配置文件和uwsgi配置文件的module都是写的这个文件名。如果没找到wsgi.py这个文件,那么别费劲了,直接看情况二吧。

2.情况二:就是没找到那个wsgi.py,那就手动创建吧。在django项目根目录下创建django_wsgi.py文件。

uwsgi.py

i

mport os
os.environ['DJANGO_SETTINGS_MODULE'] = 'cmdb04.settings' #注意cmdb04要改成你的项目名
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

四。写一个uwsgi的启动脚本,方便start,stop,restart

uwsgi
#!/bin/bash
# uwsgi script
# it is v.0.0.1 version.
# chkconfig: - 89 19
# description: uwsgi script
# processname: uwsgi
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATHuwsgi_config=/etc/nginx/uwsgi.xml   #这里要配置对刚才写的uwsgi.xml路径
uwsgi_pn=`ps aux|grep -v "grep"|grep -c "uwsgi"`
uwsgi_pid=`ps -eo pid,comm|grep uwsgi|sed -n 1p|awk '{print $1}'`
uwsgi_PID=/usr/local/nginx/logs/uwsgi.pid
uwsgi=/usr/bin/uwsgi  #最开始就让你复制到这里了,啥?找不到了?那自己用locate命令找吧
RETVAL=0
prog="uwsgi"
# Source function library.
.  /etc/rc.d/init.d/functionsif [ $(id -u) != "0" ]; thenprintf "Error: You must be root to run this script!\n"exit 1
fi# Start nginx daemons functions.
start() {
if [ $uwsgi_pn -gt 5 ];thenaction "uwsgi is running!" /bin/trueexit 0
fidaemon $uwsgi -x ${uwsgi_config}action "uwsgi start ..." /bin/true
}
# Stop nginx daemons functions.
stop() {
if [ $uwsgi_pn -gt 5 ]
thenkill -9 `ps -eo pid,comm|grep uwsgi|sed -n 1p|awk '{print $1}'`RETVAL=$?action "uwsgi stopping ..." /bin/true
elseaction "uwsgi not running!" /bin/false
fi
}# See how we were called.
case "$1" in
start)start;;
stop)stop;;
reload)reload;;
restart)stopstart;;
*)echo $"Usage: $prog {start|stop|restart}"exit 1
esac
exit $RETVAL

五.万事大吉了,可以启动测试了

server nginx start

server uwsgi start

注意查看端口中是否存在uwsgi的9000端口

linuxcmd:   netstat -antpl | grep uwsgi

linuxout:   tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      6780/uwsgi

六。如果没成功,请从头排查一遍。

转载于:https://blog.51cto.com/6252961/1687547

django+uwsgi+nginx部署相关推荐

  1. Centos django+uwsgi+nginx部署

    Centos django+uwsgi+nginx部署 安装Python CentOS 7 Linux发行版默认包含Python 2.但是,Python 2将于2020年1月1日停产.尽管一些遗留应用 ...

  2. 【django云服务器部署】django+uwsgi+nginx 部署的完整流程

    本篇博客完整地记录了我从购买服务器到完成部署的全过程,需要的朋友可以参考一下我的流程,看这一篇文章就能成功部署项目啦. 写这个的本意是为备忘( 保姆级步骤),同时由于我在最开始部署项目时,没有找到一个 ...

  3. Ubuntu下Django+uWSGI+nginx部署

    本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...

  4. virtualvenv+django+uWSGI+nginx 部署 踩坑记录

    原创博文 转载请注明出处! uwsgi: unrecognized option '--http:8089' uwsgi: unrecognized option '--http' uwsgi trk ...

  5. django+uwsgi+nginx部署访问出现问题(无法解决寻求帮助)

    字体文件已经进行压缩

  6. 如何让nginx执行python代码_生产环境部署Python语言代码(django+uwsgi+nginx)

    本文主要向大家介绍了生产环境部署Python语言代码(django+uwsgi+nginx),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 基础环境不做介绍,在django开发w ...

  7. [转]Docker部署Django由浅入深系列(下): 八步部署Django+Uwsgi+Nginx+MySQL+Redis

    在上篇教程中,我们手动构建了两个容器,一个容器放Django + Uwsgi,另一个容器放Nginx,成功部署了一个简单的Django项目.然而在实际的生产环境中,我们往往需要定义数量庞大的 dock ...

  8. Django扩展 —— uwsgi+nginx部署

    -- uwsgi+nginx部署(django) -- 服务器环境配置 -- 导出虚拟环境的所有包 pip freeze > list.txt -- 通过ftp软件将项目以及list.txt文件 ...

  9. Django + Uwsgi + Nginx 实现生产环境部署1

    项目开发完毕后,需要将代码放到服务器上,这样用户才能访问.接下来我们一步一步来进行一波部署操作. 1. 简单粗暴 项目开发完毕,在部署之前需要再配置文件中将 ALLOWED_HOSTS配置设置为:当前 ...

最新文章

  1. 使用dom4j解析XML例子
  2. 飙着车学「机器学习」?要不是380万人围观我都不敢相信
  3. Flutter Text或者RichText不换行的问题
  4. sklearn自学指南(part50)--独立成分分析(ICA)
  5. Page directive: illegal to have multiple occurrences of contentType with different values
  6. 最新 Unity3D鼠标滑轮控制物体放大缩小 [
  7. 设计自己的高并发架构
  8. 【设计模式笔记】代理模式
  9. 数据库习题(填空题五)
  10. 在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
  11. 俞敏洪:把眼前的做好,一切就都好了
  12. 股票分时量能分析 概念定义
  13. Facebook分享动态内容
  14. 面试官:测试计划和测试方案有什么区别?
  15. 报错:Vue.js not detected
  16. IP-SAN和FC-SAN存储的区别
  17. mysql允许连接表为空_mysql – 选择一个表中的所有项并与另一个表连接,允许空值...
  18. 路由器接自己家的网络可以上网,接公司的网络不没有网络
  19. 读研期间发84篇SCI!研究生被怀疑有“背景”和学术造假,本人回应!
  20. docker及私有仓库harbor安装实践

热门文章

  1. Linux下内存buffer和cache的区别
  2. 什么是Web Service
  3. Windows用户模式下的线程同步
  4. duilib CPaintManagerUI的WM_PAINT消息
  5. C++_sizeof关键字_实型(也叫浮点型)---C++语言工作笔记011
  6. 微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试
  7. 人脸识别运行之前需要处理的问题
  8. java做法_Java方法
  9. 随想录(关于signal的实验)
  10. 随想录(简单的windows驱动代码)