Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)

60 篇文章 0 订阅

这个部署,我真的是爬了好久的坑,才爬出来,所以给大家分享一下,避免入坑。

首先我们先了解一下相关知识:
wsgi:
 
一种实现python解析的通用接口标准/协议,是一种通用的接口标准或者接口协议,实现了python web程序与服务器之间交互的通用性。 
利用它,web.py或bottle或者django等等的python web开发框架,就可以轻松地部署在不同的web server上了;
 
uwsgi:
 
同WSGI一样是一种通信协议 
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。
 
uWSGI :一种python web server或称为Server/Gateway 
uWSGI类似tornadoweb或者flup,是一种python web server,uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。 
因为apache、nginx等,它们自己都没有解析动态语言如php的功能,而是分派给其他模块来做,比如apache就可以说内置了php模块,让人感觉好像apache就支持php一样。 
uWSGI实现了wsgi协议、uwsgi协议、http等协议。 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
其次了解一下项目流程:
1.首先客户端请求服务资源,
 
2.nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,
 
如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,
 
如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;uWSGI 将接收到的包进行处理,并转发给wsgi,
 
3.wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,
 
4.wsgi将返回值进行打包,转发给uWSGI,
 
5.uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。
 
*注:不同的组件之间传递信息涉及到数据格式和协议的转换
接下来请看详细的安装与配置步骤:
1.检测yum是否完好:yum list

2.安装python需要的依赖包:yum  -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make    (手敲,任何地方都别复制)


3.下载python包:

linux系统默认安装了python

我们需要的版本是python 3.6.2,在centos上进行python2和3并存

wget https://www.python.org/ftp/python /3.6.2/Python-3.6.2.tar.xz

在根目录的opt下可以查看下载好的python3.6.2的压缩包

4.在opt下解压python包: tar -Jxvf Python3.6.2.tar.xz

5.进行安装路径配置并编译安装:

首先切换路径:cd Python3.6.2

其次进行路径配置: ./configure prefix=/usr/local/python3

最后编译安装:make && make instal  (需要挺长时间的)

6.进入根目录下的usr/local下创建爱你python3和pip3的软链接:

7.安装django

8.安装uwsgi

9.创建uwsgi的软链接:

先切入到opt下,然后创建uwsgi的软链接:

10.迁移我们自己的django项目:(我的项目是MyBlog)

我用的是xftp工具:

11.测试uwsgi和django的契合:

1.首先下关闭防火墙和selinux

2.切入到我们的项目目录下,然后用uwsgi命令启动项目:

 --http  ip端口传递

   --file   uwsgi文件位置

   --static-map  静态文件路由

 

上面我们采用的是命令的方式使用uwsgi启动django,但是,不够完美。我们可以构造配置文件进行操作。

12.使用uwsgi脚本启动django

1.在/opt下创建script目录

2.在script目录下创建uwsgi.ini文件

3.配置uwsgi.ini文件

4.给uwsgi授权:

5.在script下启动项目: uwsgi --ini uwsgi.ini

可以看到这样也能启动此项目:

13.安装nginx:wget  http://nginx.org/download/nginx-1.12.2.tar.gz

下载成功:

14.解压 nginx压缩包

15.编译安装nginx

16.进入/usr/local下查看nginx

17.创建nginx软链接

18.nginx和uwsgi通讯示意图:

19.修改nginx的配置文件:

配置内容:(红色的是与要修改的)

http {

    include       mime.types;

    default_type  application/octet-stream;

 

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"'; 日志的格式

 

    #access_log  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

 

    #gzip  on;

server {

        listen       80;

        server_name  Qshop; 服务的名称

 

        charset utf-8; 编码格式

 

        access_log  logs/host.access.log  main; 访问日志

 

        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;  访问内容的类型

 

        error_log /var/log/nginx/error.log error; 错误日志,默认没有,需要手动创建

 

        location / {

             include uwsgi_params; 加载uwsgi_params

             uwsgi_connect_timeout 30; 连接的超时时间 不要加冒号不要加冒号不要加冒号

             uwsgi_pass unix:/opt/script/uwsgi.sock; uwsgi.sock通讯的文件地址

        }

 

        location = /static/{

            alias /opt/Qshop/static; 静态文件的目录

            index index.html index.htm;

        }

19.启动uwsgi和nginx(先杀死当前状态下的uwsgi和nginx)

kill -9 uwsgi

kill -9 nginx

先启动uwsgi

再启动nginx:

 

20.整个过程整理下来了,我觉得是非常详细了,希望大家不要入坑。
————————————————
版权声明:本文为CSDN博主「赵小七--」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43567965/article/details/89364046

来源:https://blog.csdn.net/weixin_43567965/article/details/89364046

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值