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