一、环境搭建
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名
这样就可以实现效果 了