ubuntu+nginx+uwsgi部署django web项目
一 、前言
将本地开发的django项目部署至linux上的uwsgi服务器,并配置nginx,完成基于ubuntu+nginx+uwsgi的上线运行。下面整理相关步骤。
二 、python3环境安装
-
编译源码安装
-
装一些编译源码需要的依赖文件
-
输入:
yum -y install gcc make cmake zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel -
python包扔进去
-
解压缩:
tar -zxvf Python-3.6.5.tgz -
创建个目录,用于一会儿安装py3:
mkdir python3 -
指定编译位置到刚才创建的目录
./configure --prefix=/usr/local/python3/ -
make编译:
mkae -
安装:
make install -
做一个链接,便于访问
ln -s/usr/local/python3/bin/python3.6/usr/local/bin/python3 -
此时,可以在任何位置访问
-
增加pip的链接
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
三 、django安装
-
修改环境配置
vi /etc/profile -
加一句话
PATH=$PATH:$JAVA_HOME/bin:/usr/local/python3/bin/ -
执行生效
. /etc/profile -
安装基础环境配置
yum groupinstall "Development tools" -
安装可能用到的包
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 install --upgrade pip -
指定版本
pip3 install django==1.11 -
pip3安装
pip3 install -i https://pypi.douban.com/simple/ django==版本号
四、virtualenv虚拟环境
-
安装
pip3 install virtualenv -
可以找到包的位置
find /usr/local/python/ -name site-packages -
创建虚拟环境
virtualenv --python=python3 project01 -
进入bin目录,执行如下,可以进入虚拟环境
. activate -
虚拟环境里安装django
pip install django==1.11.26 -i https://pypi.tuna.tsinghua.edu.cn/simple -
退出虚拟环境
deactivate
五 、引入项目依赖模块
-
导出依赖模块
pip3 freeze > requirements.txt -
进入虚拟环境
. activate -
把上面提取的文件模块,导入虚拟环境
pip3 install -i https://pypi.douban.com/simple -r /home/requirements.txt
六 、uWSGI安装
-
之前是这样运行,这样运行实际上调用了py内置的socket模块单进程单线程,效率比较低,uwsgi启动django项目,可以支持多线程,且稳定效率高
-
在虚拟环境里来用
-
安装uwsgi,可以指定个源
pip3 install uwsgi -
查看版本
uwsgi --version -
编辑uwsgi.ini配置文件,写入如下内容
[uwsgi] # 监听的端口 http = :8000 # 指定和nginx进行套接字通信的方式:端口或文件 # socket = 127.0.0.1:8000 # socket = /home/tracer/tracer.sock # 项目所在目录,和manage.py同级 chdir = /home/tracer # 主应用中的wsgi文件 wsgi-file = tracer/wsgi.py # 代理静态资源:路径映射 static-map = /static=/home/tracer/web/static # 启动一个master进程,来管理其余的子进程 master=True processes = 4 threads = 2 # 保存主进程的pid,用来控制uwsgi服务 pidfile=/home/tracer/uwsgi.pid stats=/home/tracer/uwsgi.status # pidfile=%(chdir)/root/tracer/uwsgi.pid # 设置后台运行,保存日志 daemonize=/tmp/uwsgi.log # deamonize=1 ; 用来配置background运行 # 设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏 max-requests=5000 # 服务停止时自动移除unix Socket和pid文件 vacuum=true # 设置自中断时间 harakiri=3600 uwsgi_read_timeout=3600 uwsgi_send_timeout=3600 uwsgi_connect_timeout=3600 -
启动uwsgi:
uwsgi --ini ./uwsgi.ini -
退出虚拟环境
deactivate
七 、supervisor安装
-
是一个py开发进程管理工具
-
作用:你可以用它去启动uwsgi,当uwsgi挂掉了,supervisor帮助自动重启,另外还可以很方便地管理uwsgi进程
-
安装
yum -y install python-setuptools -
生成可执行文件
easy_install supervisor -
生成配置到 /etc下
echo_supervisord_conf > /etc/supervisord.conf -
修改生成的配置文件,文件最后加入如下内容
vi /etc/supervisord.conf注意,第一行修改成自己的项目名,第二行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 -
此时可以查看到运行起来的进程
ps aux | grep supervisorps aux | grep uwsgi -
还可以进入supervisor的终端控制台
supervisorctl -c /etc/supervisord.conf -
控制台里,可以启动或停止你的项目
stop/start 项目名 -
刷新nginx配置
```nginx -s reload``

浙公网安备 33010602011771号