django项目部署、创建虚拟环境、uwsgi安装、supervisor安装、整合nginx

django项目部署

一、 规划

l nginx+uWSGI+django+virtualenv+supervisor发布web服务器

 

二、 部署

1. python3环境

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

指定清华源的下载包,安装 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配置

 

原文地址:https://www.cnblogs.com/zhang-da/p/13045488.html