nginx与uwsgi的简单配置

nginx

nginx的认识

web服务器软件

windows

  • IIS服务器

linux

  • nginx服务器
  • apache服务器(收费)
  • lighthttp
# linux下
curl -I #域名  可以查看网站的响应头头部信息 ,包括服务器类型

web服务器和web框架的关系

  • web服务器(nginx):接受http请求,并返回数据
  • web框架(django,flask):开发web应用程序,处理接收到的数据

NGINX

nginx是一个开源,支持高性能,高并发的www服务和代理服务器软件,nginx比apache性能改进了许多,nginx占用的系统资源更少,支持更高的并发连接,有更高的访问效率,nginx不仅是一个优秀的服务器软件还可以作为反向代理,负载均衡,以及缓存服务使用,安装也简单,方便,灵活。

安装配置nginx软件

  1. 下载
    apt-get install nginx

进入nginx工作目录
一般为/etc/nginx/


nginx.conf

worker_processes 4 # nginx工作进程数,根据cpu核数定义
events{
    worker_connections 1024;   #连接数
}
# http代码块,定义nginx的核心web功能
http{

   log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                   '$status $boby_bytes_sent "$http_referer"'
                   '"$http_user_agent" "$http_x_forwarded_for"';  # 日志格式 
   access_log /opt/logs/access.log main;   # 开启日志访问功能的参数
   keepalive_timeout 65;  # 保持长连接的时间
   gzip on;   # 支持图片gif等压缩 减少网络带宽
    # server是控制nginx的虚拟主机(web站点)  若想要多虚拟主机(多个域名对应一个服务器但指向不同的页面)就多写一个server块 在里面配置,server_name 写域名
   server{
        listen 80;   # 监听的端口
        server_name localhost;   # 填写域名,没有域名则写ip地址
        charset utf-8  # 定义编码
        location /{
            # deny 192.168.1.1 禁止某一ip访问
            root html; # 参数定义网站根目录
            index index.html index.htm;  #定义网页的首页文件的名字的
        }
        error_page 404 /404.html;   # 定义404错误页面

   }
}

实时检查access.log的日志信息
tail -f access.log
会根据名字进行匹配杀进程
pkill nginx

反向代理

在 location块中 配置反向代理

        location /{
            proxy_pass http://192.168.1.25
        }

与django配置

   location /static {
       alias /home/mysite/static;  #静态文件配置,uwsgi不提供静态资源服务
   }
    location /media {
       alias /home/mysite/media;
   }
       location /{
           uwsgi_pass 127.0.0.1:8001;  # 程序运行的地址和端口
           include /etc/nginx/uwsgi_params;   # nginx与uwsgi交互的参数
       }

负载均衡

集群;一堆服务器做一件事

负载均衡:请求的分发,负载压力的分担

在http块中写上以下代码

# 负载均衡池
 upstream webserver{
     server 192.168.13.79;
     server 192.168.13.11;
 }

在location块中添加反向代理给负载均衡池
proxy_pass http://webserver;
默认为按顺序轮询
可以加权值
如下列代码

# 负载均衡池
 upstream webserver{
     server 192.168.13.79 weight=10;
     server 192.168.13.11 weight=1;
 }

也可以ip_hash配置
根据客户端的ip进行hash 不能和weight一起用
如下列代码所示

# 负载均衡池
upstream webserver{
    ip_hash; 
    server 192.168.13.79;
    server 192.168.13.11;
}

其他的方法还有url_hash(根据访问的url结果进行hash转发),least_conn(最少链接数) 等

部署的准备

部署需要准备

python3 的运行环境

uwsgi 实现了wsgi(web服务网关接口)标准的一个接口(实现了python web应用的协议)

nginx+uwsgi(常用)
apache+mode_wsgi

virtualenvwrapper 虚拟环境管理包

后端 python程序,也就是我们的django服务器应用程序

前端 比如vue.js的代码

nginx (对nginx对静态文件处理的优秀性能,以及nginx的反向代理功能和默认的80端口)

mysql

redi

supervisor linux下的进程管理工具

uwsgi的使用

1.安装uwsgi

pip install uwsgi

2. uwsgi如何使用

通过uwsgi启动一个django项目,并且支持热加载项目,不启动项目,自动生效

uwsgi --http :8000 --module aa.wsgi --py-autoreload=1
–module 指定找到django项目下的wsgi.py文件

使用文件写入配置启动wsgi

touch uwsgi.ini
内容为

[uwsgi]
chdir = /opt/mysite
module = mysite.wsgi
home = /opt/venv
master = true
processes =1
socket = 0.0.0.0:8000  # 当你使用nginx时必须使用的参数,启动一个socket连接
# http = 0.0.0.0:8000  # 启动一个http连接,当你不用nginx只用uwsgi时使用这个参数
vacum = true

3.supervisor进程管理工具

  1. 命令后加上&
  2. 使用nohup命令
  3. 使用进程管理工具supervisor 在配置文件中设置运行的参数

你可能感兴趣的:(python,Linux)