django项目部署
一、 规划
l nginx+uWSGI+django+virtualenv+supervisor发布web服务器
二、 部署
1. python3环境
l 编译源码安装
l 装一些编译源码需要的依赖文件
l 输入 yum -y install gcc make cmake zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
python包扔进去
解压缩
创建个目录,用于一会儿安装py3
指定编译位置到刚才创建的目录
./configure --prefix=/usr/local/python3/
make编译
安装
安装完成
做一个链接,便于访问
ln -s /usr/local/python3/bin/python3.6 /usr/local/bin/python3
此时,可以在任何位置访问
增加pip的链接
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
2. django安装
修改环境配置
加一句话
执行生效
安装基础环境配置
yum groupinstall "Development tools"
l 安装可能用到的包
yum -y install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
l 指定清华源的下载包,安装 virtualenv,提高速度
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
升级pip3
指定版本
pip3安装
pip3 install -i https://pypi.douban.com/simple/ django==版本号
创建个站点
修改配置,允许外面访问
运行
访问
3. virtualenv虚拟环境
安装
查看安装了哪些包pip3 list
可以找到包的位置
创建虚拟环境
virtualenv --python=python3 app01
进入bin目录,执行如下,可以进入虚拟环境
查看用的哪个虚拟环境
虚拟环境里安装django
pip install django==1.11.26 -i https://pypi.tuna.tsinghua.edu.cn/simple
当前位置创建个项目
修改配置
运行
python3 app01_dj/manage.py runserver 0.0.0.0:8080
访问
退出虚拟环境
4. 引入项目依赖模块
导出依赖模块
pip3 freeze > requirements.txt
进入虚拟环境
把上面提取的文件模块,导入虚拟环境
pip3 install -i https://pypi.douban.com/simple -r /home/requirements.txt
若出现以下问题,安装它给的版本指定就可以
5. uWSGI安装
之前是这样运行,这样运行实际上调用了py内置的socket模块
单进程单线程,效率比较低
uwsgi启动django项目,可以支持多线程,且稳定效率高
在虚拟环境里来用
安装uwsgi,可以指定个源
查看版本
l 编辑uwsgi.ini配置文件,写入如下内容
标红的地方注意跟自己路径一样
[uwsgi]
# Django-related settings
# the base directory (full path)
# 项目第一层绝对路径
chdir = /home/mysite
# Django's wsgi file
# 项目第二层相对路径
module = mysite.wsgi
# the virtualenv (full path)
# 指定虚拟环境位置,写虚拟环境第一层绝对路径
home = /home/app01/
# process-related settings
# 主进程
master = true
# maximum number of worker processes
# 代表uwsgi运行的多进程数量,官方建议 2*CPU核数+1
processes = 3
# the socket (use the full path to be safe
# 通过什么访问,后边用nginx,打开socket注释
# socket = 0.0.0.0:8080
http = 0.0.0.0:8080
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
# 服务停止时,自动清除pid之类的
vacuum = true
通过uwsgi,启动项目
uwsgi --ini ./uwsgi.ini
正常访问
退出虚拟环境
6. supervisor安装
是一个py开发进程管理工具
作用:你可以用它去启动uwsgi,当uwsgi挂掉了,supervisor帮助自动重启,另外还可以很方便地管理uwsgi进程
安装
yum -y install python-setuptools
生成可执行文件
easy_install supervisor
生成配置到 /etc下
echo_supervisord_conf > /etc/supervisord.conf
l 修改生成的配置文件,文件最后加入如下内容
注意,第一行修改成自己的项目名,第二行command根据自己路径修改
[program:mysite]
command= /home/app01/bin/uwsgi --ini /home/app01/bin/uwsgi.ini ;
autostart=true ;
startsecs=10 ;
autorestart=true ;
stopasgroup=true ;
killasgroup=true ;
启动supervisor,会自动把uwsgi启动
supervisord -c /etc/supervisord.conf
此时可以查看到运行起来的进程
还可以进入supervisor的终端控制台
supervisorctl -c /etc/supervisord.conf
控制台里,可以启动或停止你的项目
7. 整合nginx
不能让用户直接访问项目,要通过nginx跳转过去,nginx需要做反向代理
需要修改uwsgi配置
vi /home/app01/bin/uwsgi.ini
注释一个,打开一个
进入控制台,启动项目
此时是无法通过http访问到
修改nginx配置如下
刷新nginx配置