nginx基于uwsgi部署Django
之前uwsgi配置发布web服务器已经讲了如何配置python环境,今天偶尔看到一个博客,照着做了下,感觉博客写的有点乱,这里来整理一下。
环境准备
因为也在熟练docker中,索性我们就以一个容器为例来进行今天的部署。
宿主机服务器:centos7;ip:172.17.0.1
docker容器服务器:centos7;ip:172.17.0.1(我们运行容器的时候使用了–network=host,所以docker服务器和宿主服务器用的网卡一样了)
关于如何交互运行docker我这里不细说了,详情请看:Docker基础使用
安装扩展包
我们肯定使用uwsgi,所以先安装它及其所需要的扩展
1 | yum groupinstall "Development tools" |
安装django
1 | pip install django==1.11 |
创建项目及应用
1 | cd /www |
修改allowd_host
1 | ALLOWED_HOSTS = ['*'] |
启动测试
启动方式有3种。
使用nginx基于wsgi部署
使用django自带wsgi启动
1 | python manage.py runserver 0.0.0.0:8000 |
我们在172.17.0.1宿主机上使用浏览器访问:http://172.17.0.1:8000(使用http://127.0.0.1:8000访问是一样的),正常运行django
配置宿主机nginx
前面我们docker直接用了宿主机的ip,所以直接用宿主机的ip,就可以访问到docker容器中的django程序。
宿主机nginx做一下配置,做之前记得将域名解析到该宿主机上,以下配置的作用就是有人访问了www.diandian100.cn,我们就直接将其反向代理到我们宿主机的8000端口,因为我们docker容器中的django程序用的就是宿主机的ip,等于是将客户发来的请求直接转发到了我们的django程序上。
1 | server |
重启nginx
1 | nginx -t |
测试访问
此时访问www.diandian100.cn可以看到能够正常访问我们的django程序了,如果你迁移了django数据库,并且创建了超级用户,www.diandian100.cn/admin/也能正常登录,正常对后台数据进行增删改查了
使用nginx基于uwsgi部署
使用uwsgi启动
1 | uwsgi --http :8000 --module visasto.wsgi |
我们在172.17.0.1主机上使用浏览器访问:http://172.17.0.1:8000,正常运行django
使用uwsgi配置文件启动
这次我们要结合nginx了,将nginx默认的80端口给转发到我们的uwsgi上
创建uwsgi配置文件
1 | cd /www/visasto |
修改配置文件内容
1 | [uwsgi] |
ps: nginx 连接uwsgi一共有三种方式
1 | 方式一: |
修改nginx
/etc/nginx/uwsgi_params文件已经默认生成好了
1 | vim /etc/nginx/nginx.conf |
启动uwsgi
1 | uwsgi --ini uwsgi_visasto.ini |
启动nginx
1 | systemctl start nginx |
我们在172.17.0.1主机上使用浏览器访问:http://172.17.0.1,正常运行django