美文网首页程序员
Nginx+uwsgi 部署Django 项目

Nginx+uwsgi 部署Django 项目

作者: 蟒蛇爱好者 | 来源:发表于2019-04-01 23:56 被阅读0次

    安装Nginx

        将nginx-1.8.1.tar.gz解压缩并执行以下命令。(需要安装包的请加下方微信公众号二维码回复nginx)

        tar -zxvf nginx-1.8.1.tar.gz

        cd ./nginx-1.8.1

        sudo ./configure --prefix=/usr/local/nginx

        sudo make

        sudo make install

        安装成功之后(如果安装失败可以公众号联系我),进行cd /usr/local/nginx/sbin  

      nginx 运行及停止

            sudo /usr/local/nginx/sbin/nginx               #启动

            sudo /usr/local/nginx/sbin/nginx -s stop    #停止

            sudo /usr/local/nginx/sbin/nginx -s reload  #停止

    安装uwsgi

            安装uwsgi相对简单:

                    pip install uwsgi

    静态页面 

            Django自身有带着很多静态文件(例如:admin的静态页面),但是着生产模式下他就不会着提供这些静态文件。

            我们现在要先收集所有的静态文件,需要着配置文件里面添加配置如下:

                    # 下面是Django提供了收集静态文件的方法,将Django自带的静态文件放到我们自己的front静态文件下面的static (这个目录需要手动创建)

                            STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)),'front/static')  

                    # 下一步就是执行收集命令,执行完static就会出现很多静态文件

                            python manage.py collectstatic

                    使用Nginx服务器作为静态文件服务器                

                    打开Nginx的配置文件

                            sudo vim /usr/local/nginx/conf/nginx.conf

                    在server部分中配置

                        server { 

                                       listen80;

                                       server_name xxxxxxxx;  #这里的xxxxx是你们域名或者ip地址

                                        #当在浏览器访问根路径时候进到这里面来

                                        location / {

                                                root root/project/front;  # 这是我项目静态文件的路径,你们换成你们自己的路径即可

                                                index index.html index.htm;  #返回首页

                                                         }        

                    。。。。。

                                }

                    修改完成保存并退出后重启nginx如下 (没有开起就直接启动命令上前面提到)

                        sudo /usr/local/nginx/sbin/nginx -s reload

    动态接口

            使用uwsgi启动我们的django项目

            这里需要修改项目的配置文件

            DEBUG =True

            ALLOWED_HOSTS = [‘*']  

            CORS_ORIGIN_WHITELIST = (

                    #启动项目的ip

                    ’xxxxxxxx:8080‘ #静态地址

                        )

             在项目目录下创建uwsgi配置文件 uwsgi.ini

                    [uwsgi]

                    #使用nginx连接时使用,Django程序所在服务器地址

                    http=xxx.xxx.xxx.xxx:8000    #这里的IP可以在终端使用ifconfig查看到

                    #项目目录

                    chdir=xxx/xxx/xxx/xxx/   #这是你的项目路径 

                    l#项目中wsgi.py文件的目录,相对于项目目录

                    wsgi-file=xxxxxx/wsgi.py  #这是你项目里wsgi的路径

                    # 进程数

                    processes=8

                    # 线程数

                    threads=4

                    # uwsgi服务器的角色

                    master=True

                    # 存放进程编号的文件

                    pidfile=uwsgi.pid

                    # 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的

                    daemonize=uwsgi.log

                    # 指定依赖的虚拟环境

                    virtualenv=/x x/x x/.x x/x x   #这是你虚拟环境路径  只到虚拟环境名就好

               启动uwsgi服务器 (就可以访问后台接口)

                        uwsgi --ini uwsgi.ini

    Nginx+uwsgi 来访问后台接口

        第一步:

            需要把uwsgi.ini 文件里的http=xx.xx.xx.xx:8000 ,换成socket=xx.xx.xx.xx:8000,

        第二步

            修改Nginx配置文件,让Nginx接收到请求后转发给uwsgi服务器(加上一下配置即可)

            server {

                         listen8000;

                         server_name xx.xx.xx.xx;  # 这里是公网ip  部署本地就直接127.0.0.1

                         location / {

                                 include uwsgi_params;

                                 uwsgi_pass xx.xx.xx.xx:8000;  #这里的ip和端口就是uwsgi.ini 文件里面的socket写的ip

                                    } 

                             }        

           最后重启nginx即可。大功告成   (如果在做Nginx+uwsgi 来访问后台接口这一部分出现什么问题可以联系我联系方式在下面扫描公众号二维码留言即可!)

    微信公众号

    相关文章

      网友评论

        本文标题:Nginx+uwsgi 部署Django 项目

        本文链接:https://www.haomeiwen.com/subject/xiwqjxtx.html