Virtualenv 中 Nginx + uWSGI 部署 Django 实战备忘

一、为什么会有这篇文章

第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路。
本来在 Ubuntu14.04 上 搭建好了环境,然后到 CentOS7.4 就遇到了一堆问题。下面把步骤记录下来,中间会记录遇到的问题及解决方案。

二、开发环境搭建

安装 Python3

我的 centos7.4 预装了 python2.7.5 ,首先安装 python3,这里我选择 python3.4。
 添加epel源:
yum install epel-release

安装Python3.4:
yum install python34

安装 pip3
yum install python34-setuptools
easy_install-3.4 pip

安装 django

版本选择:
Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3
 Django 1.6.x 支持 Python 2.6.X, 2.7.X, 3.2.X 和 3.3.X
 Django 1.7.x 支持 Python 2.7, 3.2, 3.3, 和 3.4 (注意:Python 2.6 不支持了)
Django 1.8.x 支持 Python 2.7, 3.2, 3.3, 3.4 和 3.5. (长期支持版本 LTS)
 Django 1.9.x 支持 Python 2.7, 3.4 和 3.5. 不支持 3.3 了
Django 1.10.x 支持 Python 2.7, 3.4 和 3.5
 Django 1.11.x 支持 Python 2.7, 3.4, 3.5 和 3.6(长期支持版本 LTS) 最后一个支持 Python 2.7 的版本
Django 2.0.x 支持 Python 3.4, 3.5 和 3.6 (注意,不再支持 Python 2)

安装 django 1.11.13 :
pip3 install Django==1.11.13

验证 django 是否安装成功,终端上输入 python3 ,点击 Enter,进入 python3 环境:
>>> import django
>>> django.VERSION
(1, 11, 13, 'final', 0)
>>> django.get_version()
'1.11.13'

安装 Virtualenv (虚拟环境依赖)

1. 为什么要安装虚拟环境依赖

在开发Python应用程序的时候,我系统安装的 Python3 只有一个版本:3.4。所有第三方的包都会被pip3 安装到 Python3 的 site-packages 目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python3 ,就是安装在系统的Python 3。如果应用A应用需要 django1.11,而应用B需要 django 2.0 怎么办?
 这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv 就是用来为一个应用创建一套“隔离”的Python运行环境。
virtualenv 用的时候参数比较复杂,本文不细说了,可以上网搜索了解一下,这里在再安装 virtualenvwrapper ,顾名思义,virtualenvwrapper 就是对 virtualenv 的一个包装,让其用起来更简单。

2. pip安装虚拟环境依赖
pip3 install virtualenv
pip3 install virtualenvwrapper

3.配置环境变量

修改 ~/.bashrc 配置环境变量:
centos7.4 中:
if [ -f /usr/bin/virtualenvwrapper.sh ]; then
  export WORKON_HOME=$HOME/virtualenvs
  export PROJECT_HOME=$HOME/workspace
  export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
  source /usr/bin/virtualenvwrapper.sh
fi


ubuntu 14.04中:
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
  export WORKON_HOME=$HOME/.virtualenvs
  export PROJECT_HOME=$HOME/workspace
  export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
  source /usr/local/bin/virtualenvwrapper.sh
fi

修改后使之立即生效(也可以重启终端使之生效):
source ~/.bashrc

这是第一个坑:在 Ubuntu 14.04 中,virtualenvwrapper.sh 文件路径和 centos7.4 中不一样在,这个坑很容易发现,因为下面,你执行命令的时候会报错,找不到文件,这个坑容易填。

3. 虚拟环境使用方法:

mkvirtualenv env1:创建运行环境 env1
workon env1: 工作在 env1 环境 或 从其它环境切换到 env1 环境
deactivate: 退出终端环境
 其它的:
rmvirtualenv ENV:删除运行环境ENV
mkproject mic:创建mic项目和运行环境mic
mktmpenv:创建临时运行环境
lsvirtualenv: 列出可用的运行环境
lssitepackages: 列出当前环境安装了的包

创建的环境是独立的,互不干扰,无需sudo权限即可使用 pip 来进行包的管理。

三、部署环境搭建

安装 nginx

1.安装 nginx

ubuntu 中:
apt-get install nginx

centos中:
yum install epel-release
yum install nginx

2.验证 nginx 是否安装成功

查看 nginx 配置文件:
cat /etc/nginx/nginx.conf

截取部分内容如下:

Virtualenv 中 Nginx + uWSGI 部署 Django 实战备忘

截图第二行,配置了 nginx 错误日志保存地址,

重点关注 http 下的 server 中 listen 显示了默认监听的端口是 80 ,可以修改端口号。
server 上面有一行: include /etc/nginx/conf.d/*.conf;,这样我们可以将自定义的配置文件,放到 /etc/nginx/conf.d/ 目录下,以 .conf 后缀命名即可。

验证 nginx 是否安装成功,则启动 nginx :
service start nginx

通过浏览器访问 该 ip 80 端口,能正确返回下面页面,说明 nginx 安装成功。

Virtualenv 中 Nginx + uWSGI 部署 Django 实战备忘

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f7703eabfd81947935f120442b994799.html