Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7114836
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 系统运维

2015-08-10 12:52:56

基于LNMP+uWSGI部署Django应用

[日期:2015-08-09] 来源:Linux社区  作者:Linux [字体:  ]

本文记录 LNMP 1.1环境中集成uWSGI部署Django应用的经过。

测试用的VPS 环境为Ubuntu 14.04 x64 , Python 2.7.6

一、安装平台

1、安装pip

#apt-get install python-gevent python-pip

这里坑比较多,建议先装好pip 然后进行下面的步骤,后面的几个包都可以用pip 安装

2.pip安装应用示例
 (1)安装包

# pip install simplejson

(2)更新包

# pip install --upgrade simplejson

(3)移除包

# pip uninstall simplejson

3、安装MySql-python

#pip install MySql-python

4、安装uWSGI

#pip install uWSGI

5、安装Django

#pip install Django

创建django项目
 项目位置:/home/django/mysite
创建项目方法:

#cd /home/django
#django-admin.py startproject mysite

二、平台配置
1、Nginx相关配置

#mkdir /usr/local/nginx/conf/django
#cd /usr/local/nginx/conf/django
#vi django_uwsgi.conf

内容如下:

# Django project  
server {  
        listen  80;  
        server_name 域名;  
 
        location / {  
            include    uwsgi_params;  
            uwsgi_pass  127.0.0.1:9000;
            uwsgi_param UWSGI_CHDIR  /home/django/mysite;
        uwsgi_param UWSGI_SCRIPT django_wsgi;  
            access_log  off;  
        }  
}

编辑完成后在nginx.conf追加子配置文件django_uwsgi.conf

#cd ..
#vi nginx.conf

内容如下:

http{  
........  
include django/*.conf;  
}

2、UWSGI配置

#mkdir -p /home/uwsgi;
#cd /home/uwsgi
#mkdir -p /home/django/logs
#echo "" > /home/django/logs/django.log
#vi uwsgi.xml

内容如下:

<uwsgi>  
  <socket>127.0.0.1:9000</socket>  
  <listen>200</listen>  
  <master>true</master>  
  <pidfile>/usr/local/nginx/uwsgi.pid</pidfile>  
  <processes>8</processes>  
  <pythonpath>/home/django/mysite</pythonpath>  
  <module>django_wsgi</module>  
  <profiler>true</profiler>  
  <memory-report>true</memory-report>  
  <enable-threads>true</enable-threads>  
  <logdate>true</logdate>  
  <limit-as>6048</limit-as>  
  <daemonize>/home/django/logs/django.log</daemonize>  
</uwsgi>

注意,如果下面几步启动不了可以更改 200 到 20 试试,可能存在端口占用的情况

3、创建django应用模块

#cd /home/django/mysite
#vi django_wsgi.py

内容如下:

import os  
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'  
import django.core.handlers.wsgi  
application = django.core.handlers.wsgi.WSGIHandler()

django 1.7之后 更正为:

import os  
import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'  
import django.core.handlers.wsgi 

if django.VERSION < 1.7:
    from django.core.handlers.wsgi import WSGIHandler
    application = WSGIHandler()
else:
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

 
否则可能出现无休止的502错误

4、启动服务

重启前需要先把所有的uwsgi进程删掉

killall -9 uwsgi

 
重启:

#/usr/local/bin/uwsgi -x /home/uwsgi/uwsgi.xml
#/usr/local/nginx/sbin/nginx -s  reload  #重启nginx服务

5、查看进程

# ps -ef|grep uwsgi|grep -v grep

6、监听端口

# netstat -an|grep 9000

7、访问测试:

输入你刚才绑定的域名 ,注意 django 项目里的 ALLOWED_HOSTS = [] 设置成你的域名  [‘domian’] or [‘*’]

三、uWSGI/Django应用服务自启动

1、uWSGI启动脚本

#cd /home/uwsgi/
#vi uwsgiserver

内容如下:

#!/bin/bash  
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
 
# Check if user is root
if [ $(id -u) != "0" ]; then
    printf "Error: You must be root to run this script!\n"
    exit 1
fi
 
if [ "$1" = "start" ]; then
  psid=`ps aux|grep "uwsgi"|grep -v "grep"|wc -l`  
  if [ $psid -gt 2 ];then  
    echo "uwsgi is running!"  
    exit 0  
  else  
    /usr/local/bin/uwsgi -x /home/uwsgi/uwsgi.xml  
    /usr/local/nginx/sbin/nginx -s reload
  fi  
  echo "Start uwsgi service [OK]"  
elif [ "$1" = "stop" ];then  
  killall -9 uwsgi  
  echo "Stop uwsgi service [OK]"  
elif [ "$1" = "restart" ];then  
  killall -9 uwsgi  
  /usr/local/bin/uwsgi -x /home/uwsgi/uwsgi.xml
  /usr/local/nginx/sbin/nginx -s reload
  echo "Restart uwsgi service [OK]"  
else  
  echo "Usages: uwsgiserver [start|stop|restart]"  
fi

需要注意的是这里需要修改下这个脚本的权限,不然nginx 重启会有问题

则可以通过脚本 /home/uwsgi/uwsgiserver start|stop|restart来 启动|停止|重启 uWSGI服务。

2、开机自启动uWSGI服务
 在/etc/rc.d/rc.local中加入:

/home/uwsgi/uwsgiserver start

如何使用 Docker 组件开发 Django 项目?  

Ubuntu Server 12.04 安装Nginx+uWSGI+Django环境 

Django+Nginx+uWSGI 部署 

Django实战教程 

Django Python MySQL Linux 开发环境搭建 

Django 的详细介绍请点这里
Django 的下载地址请点这里

本文永久更新链接地址

阅读(529) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~