您现在的位置是:网站首页>文章详情文章详情

Django2.1+uwsgi+nginx在centos7.2部署流程的完整过程

inlike2019-06-17 原创文章 浏览(2449) 评论(6) 喜欢(42)

简介随着个人博客的完成开始部署上线,在这个过程中还是遇到了很多坑,下面就来分享Django2.1+uwsgi+nginx在centos7.2部署流程的完整过程,从uwsgi配置和nginx配置两个方面来分享完整的部署过程。

随着个人博客的完成开始部署上线,在这个过程中还是遇到了很多坑,下面就来分享Django2.1+uwsgi+nginx在centos7.2部署流程的完整过程,从uwsgi配置和nginx配置两个方面来分享完整的部署过程。

首先要明白Django采用的是wsgi服务器网关接口,即Python Web Server Gateway Interface,是python网络框架所用的与服务器交互的接口,除暴的理解就是:python程序需要一个命令来运行起来,而wsgi就是这个命令,uswgi就是运行这个命令的库。

image.png

因此我们还需要的一个库uswgi,uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器,并且由C语言编写,能够最大效率的实现接口调动。

至于nginx就不介绍了,这也是一款强大的工具,我们主要用到nginx的反向代理共能,让运行在其他端口上的python网络程序,可以通过HTTP的80端口访问,本篇也主要介绍nginx的反向代理的使用。

image.png

首先还需对Django项目做一些处理:

1.关闭setting.py文件中的DEBUG,同时设置ALLOWED_HOSTS为“*”

DEBUG = ALLOWED_HOSTS = []

2.收集静态资源,收集静态资源的目的是将散落在引入模板中的静态文件,就像xadmin组件有一套自己的静态文件,在该目录下有static文件夹,当我们在nginx中配置了项目的静态文件夹之后,散落在模块中的静态文件不会发送给前端,从而导致样式失效。

首先在setting.py中的条件配置项:STATIC_ROOT = os.path.join(BASE_DIR, 'static'),然后在manage.py同级目录下执行命令:python manage.py collectstatic。

到此Django的配置就完成了。


然后开始uswgi配置

在服务器环境下安装uswgi包,当然服务器得先安装python3版本,同时安装Django所需的其他依赖包。

安装完uswgi之后,还需要给uswgi创建个命令连接,首先是搜索uwsgi的命令路径,输入命令行:

find / -name uwsgi

是的,我们会搜索出Python安装路径,需要创建快捷在usr/bin下创建软连接,命令为:ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

上面是uswgi的安装,下面开始配置,在Django项目文件夹下(manage.py同级目录)下创建uwsgi.ini配置文件,然后在配置文件下输入以下配置项目:


[uwsgi]
socket=127.0.0.1:8000 #(使用nginx连接时,使用socket)
http=0.0.0.0:8000 #(直接做web服务器,使用http)
chdir=/home/project
wsgi-file=project/wsgi.py #文件的目录,相对于项目根目录
processes=4 # 工作进程数
threads=2 # 每个进程线程数
master=True
pidfile=uwsgi.pid # 启动后的pid文件
daemonize=uswgi.log # 日志文件名

其中关注socket和http可以两种方式都配置,也可以只配置一种,在测试的时候可以配置上http,配置后可以直接从浏览器访问,配置完成后我们需要使用测试命令来测试。

uwsgi --http 0.0.0.0:8080 --file priject/wsgi.py

一定要先用测试命令,因为测试命令直接输出运行结果,包括运行中的程序错误,通过这些错误信息我们可以快速修改,运行这条命令后我们可以在浏览器中通过服务器ip+proxy访问服务;然后就是正式运行uswgi,命令为:uwsgi --ini uwsgi.ini(运行)、uwsgi --stop uwsgi.pid(停止)、uwsgi --reload uwsgi.pid(重启),注意有些时候停止和重启没什么效果,那我们先通过

fuser -k 9090/tcp

命令来结束uswgi端口上的进程,然后重新运行即可运行成功日志显示如图:

image.png


最后开始配置nginx

image.png

配置nginx是非常有必要的,你会发现仅仅配置uswgi我们也可以访问网站,但是静态文件加载不出来那是因为静态文件本身就没加载,因为uwsgi只实现了视图的url接口回调函数,静态文件的url回调不会执行,这个时候就需要我们使用nginx来处理静态文件和反向代理到80端口。

在nginx配置文件(/usr/local/nginx/conf/nginx.conf)新增一个server如下:

server {
        listen 80;
        server_name   # 绑定访问域名 
        # Allow file uploads
        client_max_body_size 50M;

        location /static {
            alias /home/newblog/static/; # 静态文件一
        }
        location /media {
            alias /home/newblog/media/;  # 静态文件二

        }

        location = /favicon.ico {
            rewrite (.*) /static/favicon.ico;
        }
        location = /robots.txt {
            rewrite (.*) /static/robots.txt;
        }

        location / {  # 请求转发

    include uwsgi_params;  # 转发给uwsgi
    uwsgi_pass 127.0.0.1:8041; # 转发给uwsgi的socket连接
        }

}

配置后重启nginx,重启不成功就先使用ps -ef | grep nginx查看nginx的进程号,然后结束主进程再使用/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf命令重启。

上面记录的是我的配置过程,其中很多细节的东西可能就要具体分析了。

image.png


很赞哦! ( 42)
    《Python实战进阶》
    None
    None
    夏至已深

站点信息

  • 建站时间:2019-5-24
  • 网站程序:like in love
  • 主题模板《今夕何夕》
  • 文章统计:104条
  • 文章评论:***条
  • 微信公众号:扫描二维码,关注我们
  • 个人微信公众号