在nginx环境使用uwsgi部署Django项目

本文是在centos7下的一次部署试验,简要记录 Django + uwsgi + Nginx 部署过程,主要思路是各个服务能独立运行,再层层递进、逐步加码完善。首先在服务器环境下启动Django进行开发测试,然后集成在uwsig环境下测试,最后配置在nginx服务中。
本文假定已安装python3,nginx和mysql等,在pycharm开发时已使用虚拟环境venv。

开发环境下固化依赖包

在pycharm的Terminal窗口,即:项目的虚拟环境下,可以很方便的执行pip freeze命令,生成安装包清单

pip freeze > requirements.txt

freeze: Output installed packages in requirements format.
freeze

生产服务器

以下步骤均是在生产服务器或生产模拟环境下进行

激活虚拟环境

如果开发时没有使用虚拟环境,建议使用virtualenv创建,激活虚拟环境。
由于在windows下开发,将代码上传centos7后,激活虚拟环境失败,需要使用dos2unix命令将activate文件转换为unix格式。
代码上传路径:/home/centos/modules/mysite
激活命令,如下:

source activate
安装依赖包

pip或者pip3命令,使用依赖清单安装

pip install -r requirements.txt
创建数据库表

除了django自带命令外,也可以使用SQL脚本直接创建,或者导入等。

python3 manage.py migrate
创建静态文件

把所有STATICFILES_DIRS目录下的文件,都复制到STATIC_ROOT中

# 收集、复制相关静态文件
python3 manage.py collectstatic

启动开发模式部署

开发模式带有debug,可以快速查找问题原因,减少其他不必要因素造成干扰

python manage.py runserver 0.0.0.0:8000 --insecure

如果浏览器访问一切正常,继续下一步。

集成uwsgi部署

使用pip3 install uwsgi可安装

# 通过uwsgi访问django需要配置成http
uwsgi --http :8000 --chdir /home/centos/modules/mysite/ --wsgi mysite.wsgi --static-map /static=/home/centos/modules/mysite/static/

如果浏览器访问一切正常,继续下一步。

集成nginx部署

通过nginx请求uwsgi访问django时,uwsgi启动需要配置成socket协议,而上一步中直接访问时,则需要使用http协议。
1、使用socket协议重启django服务:
uwsgi --socket :8000 --chdir /home/centos/modules/mysite/ --wsgi mysite.wsgi --static-map /static=/home/centos/modules/mysite/static/
2、在nginx.conf文件配置uwsgi服务
nginx.conf
3、重启nginx服务

/usr/local/webserver/nginx/sbin/nginx -s reload

4、打开浏览器访问,程序运行正常

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值