Ubuntu+Django+uWSGI+Nginx部署Django项目

  • 安装uWSGI,pip依据自己要使用的python版本自行选择,python2.x版本使用pip进行安装,python3.x版本使用pip3进行安装
pip install uwsgi
  • 配置uWSGI,在项目中新建文件uwsgi.ini,即在含有manage.py文件的文件夹下新建uwsgi.ini文件,编写如下配置
[uwsgi]
socket=外网ip:端口(使用nginx连接时,使用socket)
http=外网ip:端口(直接做web服务器,使用http)
chdir=项目根目录
wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
  • 启动:uwsgi --ini uwsgi.ini
  • 停止:uwsgi --stop uwsgi.pid
  • 重启:uwsgi --reload uwsgi.pid
  • 使用http协议查看网站运行情况,运行正常,但是静态文件无法加载,会发现布局会乱。
  • uwsgi.ini中可以使用;(英文状态下的分号)注释掉不需要的行
  • 配置到这时,可以先注释掉socket方式,使用浏览器先查看一下Django项目是否可以正常访问

nginx

  • 使用nginx的作用
    • 负载均衡:多台服务器轮流处理请求
    • 反射代理:隐藏真实服务器
  • 实现构架:客户端请求nginx,再由nginx请求uwsgi,运行django框架下的python代码
  • nginx+uwsgi也可以用于其它框架的python web代码,不限于django
  • 到官网下载nginx压缩文件或通过命令安装,此处通过命令进行安装
sudo apt-get nginx

 

  • 进入/usr/sbin/目录执行命令
  • 查看版本:sudo sbin/nginx -v
  • 启动:sudo sbin/nginx
  • 停止:sudo sbin/nginx -s stop
  • 重启:sudo sbin/nginx -s reload
  • 通过浏览器查看nginx运行结果
  • 指向uwsgi项目:进入/etc/nginx/编辑nginx.conf文件
# 在nginx.conf的文件中新加一个server
server{
       listen       80;
       server_name  www.****.com;    # 服务名,可以写域名
       client_max_body_size 75m;
       #charset koi8-r;
  
       #access_log  logs/host.access.log  main;
  
       location / {
               include   uwsgi_params;# 将所有的参数转到uwsgi下
               uwsgi_pass ip:port;    # uwsgi中的ip和端口,此处的端口要和uwsgi.ini文件中的端口一致
       }
  
       location /static {
               alias 静态文件路径;#css,js,图片之类的文件
       }
}
  • 修改uwsgi.ini文件,启动socket,禁用http
  • 重启nginx、uwsgi
  • 在浏览器中查看项目,发现静态文件加载不正常,接下来解决静态文件的问题

创建一个新的目录 用来存放静态文件,在之前配的server中的alias添加上静态文件的路径,同时在Django项目下的中setting.py中添加

STATIC_ROOT='新建的静态文件目录'
STATIC_URL='/static/'

 

  • 收集所有静态文件到static_root指定目录:python3 manage.py collectstatic
  • 重启nginx、uwsgi

 

 

posted @ 2018-12-09 16:17  June_King  阅读(278)  评论(0编辑  收藏  举报