阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于LNMP+uWSGI部署Django应用

129次阅读
没有评论

共计 3696 个字符,预计需要花费 10 分钟才能阅读完成。

本文记录 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 项目?http://www.linuxidc.com/Linux/2015-07/119961.htm

Ubuntu Server 12.04 安装 Nginx+uWSGI+Django 环境 http://www.linuxidc.com/Linux/2012-05/60639.htm 

Django+Nginx+uWSGI 部署 http://www.linuxidc.com/Linux/2013-02/79862.htm 

Django 实战教程 http://www.linuxidc.com/Linux/2013-09/90277.htm 

Django Python MySQL Linux 开发环境搭建 http://www.linuxidc.com/Linux/2013-09/90638.htm 

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-08/121385.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计3696字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中