- 服务器分为Nginx和uWSGI
- 浏览器发送请求时,如果是静态文件,如html\js\css\png等,则读取磁盘并返回
- 如果不是静态文件,则将所有请求信息转发给uWSGI
- uWSGI调用django框架,接受请求,处理应答,并返回响应给Nginx,由Nginx返回给浏览器
- 部署时要关闭调试,并允许任何机器进行访问,在settings.py中设置
- DEBUG = False
- ALLOW_HOSTS = ['*',]
- 搭建服务器的虚拟环境
- pip freeze > plist.txt 将本机虚拟环境的包列表导出
- 通过ftp或者scp将项目代码和plist.txt上传到服务器 scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
- 服务器上创建虚拟环境,并安装包 pip install -r plist.txt
- 项目默认会生成一个wsgi.py文件,确定了settings模块\application对象
- application对象:在python模块u中使用该对象与应用服务器进行交互
- settings模块:用于进行项目配置
uWSGI 实现了WSGI的所有接口,但用C编写效率更高,性能更稳当
- 安装uWSGI: pip install uwsgi
- 配置uWSGI,在项目目录(和manage.py一层)下创建uwsgi.ini, 配置如下
[uwsgi]
#使用nginx连接时使用
#socket=127.0.0.1:8080
#直接做web服务器使用
http=0.0.0.0:8080
#项目目录
chdir=/home/python/Desktop/pytest/test6
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=test6/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
- 启动: uwsgi --ini uwsgi.ini
- 停止: uwsgi --stop uwsgi.pid
- 查看: ps ajx|grep uwsgi
Nginx 用户负载均衡,反向代理
- Nginx使用:
- 下载nginx: wget http://nginx.org/download/nginx-1.6.3.tar.gz
- 下载后解压缩 tar -zxvf nginx-1.6.3.tar.gz
- 进入nginx-1.6.3目录, 依次执行以下命令安装
- ./configure
- make
- sudo make install
- 默认安装到/usr/local/nginx,进入此目录
- 启动: sudo sbin/nginx
- 停止: sudo sbin/nginx -s stop /-s reopen 重启c /usr/local/nginx/sbin/nginx -s stop
- 查看: ps ajx|grep nginx
- 将nginx指向uwsgi服务
- 打开配置文件 sudo gedit conf/nginx.conf
- 在server节点下添加新的location项,指向uwsgi的ip和端口,然后重启nginx
location / {
#将所有的参数转到uwsgi下
include uwsgi_params;
#uwsgi的ip与端口
uwsgi_pass 127.0.0.1:8080;
}
- 转移静态文件
- 打开配置文件 sudo gedit conf/nginx.conf
- nginx.conf的server_name 要设置为网站的ip:47.93.30.98
- 在server节点下添加新的location项,用于处理静态文件
location /static {
alias /var/www/test6/static/; # 在该路径新建该文件夹
}
- 在服务器上创建目录:sudo mkdir -vp /var/www/test6/static/ # 如果已存在不需要操作
- 修改目录权限: sudo chomd 777 /var/www/test6/static/
- 修改settiongs.py文件
- STATIC_ROOT='/var/www/test6/static/' # 设置为nginx静态文件存放的地址 与步骤2中的地址一致
- STATIC_URL='/static/'
- 收集所有静态文件到指定目录:python manage.py collectstatic
- 重启nginx服务
都部署之后要打开nginx和uwsgi服务才能访问网站