Nginx+uwsgi+Django项目部署

* 1. 项目部署 *

1 uwsgi

遵循wsgi协议的web服务器。

1.1 uwsgi的安装

pip install uwsgi

1.2 uwsgi的配置

项目部署时,需要把settings.py文件夹下的:

DEBUG=FALSE

ALLOWED_HOSTS=[‘*’]
配置uWSGI,在项目目录下创建uwsgi.ini文件,配置如下:

[uwsgi]
#使用nginx连接时使用 
#socket=127.0.0.1:8080
#直接做web服务器使用 python manage.py runserver ip:port
http=127.0.0.1:8080
#项目目录
chdir=/Users/smart/Desktop/dj/bj17/dailyfresh
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=dailyfresh/wsgi.py
#指定启动的工作进程数
processes=4
#指定工作进程中的线程
threads=2
master=True
#保存启动之后主进程的pid
pidfile=uwsgi.pid
#设置uwsgi后台运行,uwsgi.log保存日志信息
daemonize=uwsgi.log
#设置虚拟环境的路径
virtualenv=/Users/smart/.virtualenvs/dailyfresh

1.3 uwsgi的启动和停止

启动:uwsgi –-ini 配置文件路径 例如:

uwsgi –-ini uwsgi.ini

停止:uwsgi --stop uwsgi.pid路径 例如:

uwsgi –-stop uwsgi.pid


2 nginx

使用nginx的作用主要包括负载均衡、反向代理。
默认安装到/usr/local/nginx/目录,进入此目录。

cd /usr/local/nginx/

启动。

sudo sbin/nginx

停止。

sudo sbin/nginx -s stop

2.1 nginx 配置转发请求给uwsgi

打开conf/nginx.conf文件。

sudo gedit conf/nginx.conf

在server节点下添加新的location项,指向uwsgi的ip与端口。

        location / {
            #将所有的参数转到uwsgi下
            include uwsgi_params;
            #uwsgi的ip与端口
            uwsgi_pass 127.0.0.1:8080;
        }

代码效果如下图:


image.png

2.2 nginx配置处理静态文件

在服务器上创建如下目录。

sudo mkdir -vp /var/www/dailyfresh/static

修改目录权限。

sudo chmod 777 /var/www/test6/static/

django settings.py中配置收集静态文件路径:

STATIC_ROOT=收集的静态文件路径 例如:/var/www/dailyfresh/static;

STATIC_ROOT='/var/www/test6/static/'
STATIC_URL='/static/'

django 收集静态文件的命令:

python manage.py collectstatic

执行上面的命令会把项目中所使用的静态文件收集到STATIC_ROOT指定的目录下。

收集完静态文件之后,让nginx提供静态文件,需要在nginx配置文件中增加如下配置:
打开conf/nginx.conf文件。

sudo gedit conf/nginx.conf

在server节点下添加新的location项,用于处理静态文件

location /static {

alias /var/www/dailyfresh/static/;

}

2.3 nginx转发请求给另外地址

在location 对应的配置项中增加 proxy_pass 转发的服务器地址。

如当用户访问127.0.0.1时,在nginx中配置把这个请求转发给172.16.179.131:80(nginx)服务器,让这台服务器提供静态首页。

配置如下:

location = /{
    proxy_pass http://172.16.179.131;
}

2.4 nginx配置upstream实现负载均衡

ngnix 配置负载均衡时,在server配置的前面增加upstream配置项。

upstream dailyfresh {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

部署项目流程图

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容