美文网首页nginx 教程
nginx uwsgi反向代理(20)

nginx uwsgi反向代理(20)

作者: 瓦力博客 | 来源:发表于2019-01-21 12:50 被阅读102次

获取全套nginx教程,请访问瓦力博客

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。fastcgi应用于php语言,
uwsgi应用于Python语言。

WSGI

WSGI是一种WEB服务器==网关接口==。 是一个Web服务器(如nginx)与应用服务器(如uWSGI)通信的一种规范(协议)。

在生产环境中使用WSGI作为python web的服务器。Python Web服务器网关接口,是Python应用程序或框架和Web服务器之间的一种接口,被广泛接受。WSGI没有官方的实现, 因为WSGI更像一个协议,只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行。

uWSGI

uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器。uWSGI代码完全用C编写,效率高、性能稳定。

uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型。

ssl

1.安装基础环境

安装系统基础包

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel -y

安装mysql支持

yum install mysqld mysql-devel

获取phthon源码包

到官方网站,下载最新python源码包

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

解压安装

tar -xvf Python-3.6.2.tgz
cd Python-3.6.2/
./configure --prefix=/opt/python3.6
make
make install
echo "export PATH=/opt/python3.6/bin:\$PATH" > /etc/profile.d/python.sh


echo $PATH
which python
mkdir ~/.python-eggs
chmod +w ~/.python-eggs
echo "export PATH=/opt/python3.6/bin:\$PATH" > /etc/profile.d/python.sh

export PATH=/opt/python3.6/bin:$PATH

python3 -V

安装django

/opt/python3.6/bin/pip3 install django

查看是否安装成功

cd /opt/python3.6/bin/  

是否存在django-admin.py这个文件,存在说明安装成功

安装uwsgi

/opt/python3.6/bin/pip3  install uwsgi
cd /opt/python3.6/bin/  

是否存在uwsgi这个文件,存在说明安装成功

2.启动uwsgi

服务目录

/opt/app/
|-code7/
   |-demo  #这些不需要手动创建,由/opt/python3.6/bin/django-admin.py  startproject demo自动生成
      |-demo
         |-__init__.py
         |-settings.py
         |-urls.py
         |-wsgi.py  
   |-manage.py  
|-conf/
   |-uwsig.ini

/opt/app创建code7conf文件夹。

cd code7
/opt/python3.6/bin/django-admin.py  startproject demo  #用django-admin.py创建一个demo项目

由于启动时需要普通用户启动

useradd uwsgi #创建一个普通用户

uwsig.ini

[uwsgi]
socket = 127.0.0.1:9005
#chdir = /opt/app/code7/demo
workers = 2 
max-requests = 1000
buffer-size = 30000
pidfile = /var/run/uwsgi/uwsgi.pid
daemonize = /var/log/uwsgi.log

由于需要对/var/run/uwsgi/目录进行写入操作

chown -R uwsgi /var/run/uwsgi/

切换普通用户

su - uwsgi
cd /opt/app/conf

启动uwsgi之前需要确保uwsgi没有被启动

ps -ef | grep uwsgi
kill -9 'pid'  #如果检查有启动,需要杀死进程
/opt/python3.6/bin/uwsgi --ini /opt/app/conf/uwsgi.init  #启动uwsgi

如果有错误,请查看日/var/log/uwsgi.log。小菜第一次也没有启动起来,报的是uwsgi用户没有权限,还有就是不存在/var/run/uwsgi/uwsgi.pid文件,如果不存在/var/run/uwsgi/uwsgi.pid
文件就先切到root用户创建,然后在做后面的步骤。

如果成功了,检查一下9005端口是否被监听

ss -luntp | grep 9005

3.nginx配置

服务目录

/etc/nginx/conf.d
|-uwsgi.conf

uwsgi.conf

server {
    listen       80; 
    server_name  localhost;

    #charset koi8-r;
    access_log  /var/log/nginx/host.access.log  main;

    location / { 
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9005;
        uwsgi_param UWSGI_SCRIPT demo.wsgi;
        uwsgi_param UWSGI_CHDIR /opt/app/code7/demo;
        index  index.html index.htm;
        client_max_body_size 35m;
    } 
}

检查语法并重启

nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf

重启nginx后输入域名http://walidream.com

ssl

会发现django报了一个错误,需要将我们的域名添加进白名单

vim /opt/app/code7/demo/demo/settings.py
/ALLOWED_HOSTS = #查找到ALLOWED_HOSTS,将我们的域名添加进白名单

将之前的django进程关闭

ps -ef |grep uwsgi

/opt/python3.6/bin/uwsgi --ini /opt/app/conf/uwsgi.init进程杀死掉

kill -9 'pid'

之后再重启django

/opt/python3.6/bin/uwsgi --ini /opt/app/conf/uwsgi.init 
ssl

出现欢迎界面就说明我们配置好了。

相关文章

  • uwsgi+nginx反向代理项目部署

    在linux下用uwsgi+nginx进行反向代理部署 nginx服务器:1.反向代理,代理uwsgi服务器。2....

  • nginx uwsgi反向代理(20)

    获取全套nginx教程,请访问瓦力博客 uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等...

  • NGINX+uWSGI配置

    一、NGINX和uWSGI介绍 1、NGINX NGINX是一个免费的,开源的,高性能的HTTP服务器和反向代理,...

  • nginx二级目录内uWSGI+Flask应用的socket f

    用nginx作通过内置的uwsgi接口反向代理运行在uWSGI服务器上的Flask应用,是一种安全高效的架构。考虑...

  • 【python面试指北】5.网络

    浏览器输入一个url中间经历的过程 DNS查询——TCP握手——HTTP请求——反向代理Nginx——uwsgi—...

  • nginx做代理上网

    nginx不仅可以来做反向代理,也可以用来做正向代理(透明代理,代理上网),nginx反向代理看这里nginx反向...

  • 二、架构02-Nginx的反向代理、虚拟主机

    一、Nginx反向代理 1、环境:node01:192.168.32.132 Nginx (前端Nginx反向代理...

  • 环境部署

    概述 服务器的操作系统是Ubuntu14.04(64位),使用Nginx作为反向代理,uWSGI作为HTTP服务器...

  • Django+uWSGI+Nginx原理详解

    首先明确整体架构 Nginx 作为反向代理服务器:负责静态资源处理、动态请求转发以及结果的回复; uWSGI 作为...

  • 项目部署[UWSGI+NGINX]

    通过UWSGI服务器部署Django项目, 通过nginx进行反向代理 连接远程服务器,确保工作目录是存在的,同时...

网友评论

    本文标题:nginx uwsgi反向代理(20)

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