nginx+django1.6.8+uwsgi+virtualenv +virtualenvwrapper 多站点

一、环境搭建

1、安装pip

1)安装easy_install:  $ > wget https://bootstrap.pypa.io/ez_setup.py -O - | python

2)安装pip:   $ easy_install pip


2、安装uwsgi

1)安装必要环境:yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel install libevent-devel python-devel -y


3、安装nginx

1)安装epel yum源: 到官网下载 epel-release-6-8.noarch.rpm 传到空间去,再使用 $ rpm -ivh epel-release-6-8.noarch.rpm  进行安装

2)安装nginx: $ yum install nginx -y


4、安装 virtualenv  virtualenvwrapper

1) pip install virtualenv virtualenvwrapper


ps:因为本人是在docker下centos6操作的安装的 所以安装完virtualenvwrapper 有可能提示找不到 which命令   只要yum 安装一下就好了,

另一个 是bash::  什么什么的错误,这个是环境变量的问题,各位百度一下就有解决方法


2) 启用virtualenvwrapper :$ . /usr/bin/virtualenvwrapper.sh        各位可以把这个启动放在系统启动里,系统一起动就可以自动生效


二、创建django站点

1、 $ mkvirtualenv xxx.com

  ps:当系统自动生成完xxx.com的虚拟环境后 提示符前面加上了(xxx.com) 这个xxx.com随便取,我为方便就用所要建站点的域名了

2、进入python编辑器:

$ python 

    >>import sys

    >>sys.path

此时python编辑器输出刚创建的虚拟环境所使用的python环境

所有的路径前面都有 /root/.virtualenvs/xxx.com  各位记住这个路径,这个是存放虚拟路径文件的地方,一会有用

退出 python编辑器


3、依然留在 xxx.com虚拟环境下操作

1)、装django: $ pip install django==1.6.8

2)、建立django项目 web : 

$ mkdir xxx.com ----> $ cd xxx.com  ---> $ django-admin.py startproject web


4、退出python虚拟环境

$ deactivate


三、nginx操作

本人这里使用的是 nginx  1.0.15 ,其它版本 各位请自动百度补脑,反正就是建立虚拟主机的步骤

1、将默认配置文件删除或切到别的地方

$ mv /etc/nginx/conf.d/default.conf  /etc/nginx/

2、建立django站点的nginx虚拟主机配置文件,内容如下,本人别的配置不懂,这里只是必要的配置项,别的配置项各位自己按需要配置


server {

    listen 80;


    server_name xxx.com, www.xxx.com;

    charset     utf-8;


    location / {

        root /my/www/xxx.com/web/;           #项目目录

        uwsgi_pass unix:///tmp/xxx.com.sock;   #与uwsgi服务 交互的动态端口

        include     uwsgi_params;

    }


    location /static/ {

        alias /my/www/xxx.com/web/static/;     #网站静态文件位置    

        autoindex off;

    }

}


四、uwsgi操作

1、建立存放uwsgi配置文件的目录,本人用的是ini格式的配置文件 存放路径随意,自己记得就好

$ mkdir /root/home/uwsgiini ------> vim /root/home/uwsgiini/xxx.com.ini   

内容如下:


[uwsgi]

socket=/tmp/xxx.com.sock            //与nginx通讯的动态端口

module=web.wsgi:application                 //django项目wsgi应用文件  web是项目名, wsgi:application  django自带的wsgi应用

chdir=/my/www/xxx.com/web/          //uwsgi对哪个项目生效  填的是项目路径   和 django生成的manage.py  同一位置

home=/root/.virtualenvs/xxx.com              //用哪个python环境,这就是刚刚生成虚拟python环境 存放路径



五、uwsgi启动和结束

uwsgi --emperor /home/www/uwsgiini -d /home/www/uwsgiini/uwsgi.log    #启动uwsgi,生成日志

kill -9 uwsgi   #杀掉uwsgi进程(stop)



这样一个django站点就建好了,多站点就重复 二、三、四    三个步骤就行了,就要把域名改掉就好了

部署完后 项目的后台 xxx.com/admin    样式丢失只要以下操作就可以了

#setting 里加上去

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')         

TEMPLATE_DIR = os.path.join(BASE_DIR,'templates/')

在项目路径(和manage.py同一目录)用于存放日后生成的模板文件

$ mkdir templates  



$ python manage.py collectstatic      #同步后台的 静态文件



六、uwsgi 实时生效

由于每次修改完django文件都要重启uwsgi才能效果才生效

以下方法可实现实时生效代码

在views.py文件同一目录下生成一个python文件,文件名随意,这里我用reload.py

注意先进入相应的虚拟环境,pip install uwsgidecorators

reload.py 内容如下



import uwsgi

from uwsgidecorators import timer

from django.utils import autoreload


@timer(1)

def change_code_gracefull_reload(sig):

    if autoreload.code_changed():

        uwsgi.reload()



然后在urls.py文件头部加入

from site01.reload import *       #site01是我的app名  



这样就可以实现效果 了















你可能感兴趣的:(项目,文件夹)