简介
在配置部署前先简单描述一下nginx和uWSGI,只是个人学习和理解的,有不对的地方还望指出。
nginx:
nginx是一个反向代理服务器,客户端对Web服务器的访问需要先经过反向代理服务器,再由代理服务器决定目标服务器,这样可以防止外部程序对Web服务器的直接攻击;其次可根据负载情况去请求不同的目标服务器达到负载均衡;还有可以知己处理客户端对于静态文件的请求,而不用在去请求目标服务器。
uWSGI:
一个服务器或中间件,其实现了uwsgi协议,请求应用程序并返回处理后的信息。
uWSGI是可以完成所有和浏览器的交互过程的,但是还是要使用nginx的原因就是上面讲的nginx的功用,一个uwsgi很可能不够用,即使开了多个process和thread也是不行,毕竟一台机器的cpu和内存都是有限的,有了nginx做代理,一个nginx可以代理多台uwsgi实现负载均衡的。
安装nginx和uwsgi
首先我是基于python3的,ubuntu版本为16.04,你想配置python3的话需先安装python3和pip3,然后执行如下命令安装:
sudo apt-get install nginx
sudo pip3 install uwsgi
如果没有报错基本就安装成功了,这里就不再做测试。细心点会发现nginx是用apt-get安装的,而uwsgi是用pip3,原因就是uwsgi是pyhon包,而nginx是一个类似sql的服务,也就是说nginx可以开机启动,不手动关闭或者关闭服务器是不会停止的。
我们想把项目部署到服务器上就必须使用它,假设我们在本地连接上了我们购买的服务器(远程),然后使用uwsgi拉起我们的项目(后面讲解怎么拉起项目),这时候我们就能通过外网访问了,但是一旦本地的机器断开与服务器的连接后就无法访问了。原因就是用uwsgi拉起项目只是在服务器端创建了一个进程,而这个进程是远程连接的子进程,远程连接断开子进程也就结束了。所以我们需要通过nginx来连接uwsgi,由于nginx是类似sql的服务,所以一旦开启就会一直在后台运行,只要服务器不关闭项目就处于运行状态。
项目上传及环境配置
首先找到你的本地Django项目,比如我的项目名为bsite,绝对路径为:/home/beau/bsite
bsite
bsite
__init__.py
settings.py
urls.py
wsgi.py
apps
...
media
...
static
...
templates
...