背景知识:

uWGSI是一个web服务器,或者wsgi server服务器,他的任务就是接受用户请求,由于用户请求是通过网络发过来的,其中用户到服务器端之间用的是http协议,所以我们uWSGI要想接受并且正确解出相关信息,我们就需要uWSGI实现http协议,没错,uWSGI里面就实现了http协议。
其中的详细内容可以到以下文章进行阅读:
uWSGI、uwsgi、WSGI、之间的关系,为什么要用nginx加uWSGI部署
总之就是虽然 DJango 中自带服务器,但是单进程多线程效率不足所以要有个辅助,那就是uwgsi。

安装

uwgsi的安装需要用到pip,如果没有安装python请自行参考
Python 3.7.3安装学习

pip install uwsgi

简易配置

路径:项目文件根目录或自己建的项目中可以找到的文件夹
文件:uwsgi.ini
示例:

[uwsgi]
uid=www-data # Ubuntu系统下默认用户名
gid=www-data # Ubuntu系统下默认用户组
project=mysite1  # 项目名
base = /home/user1 # 项目根目录home = %(base)/Env/%(project) # 设置项目虚拟环境,Docker部署时不需要
chdir=%(base)/%(project) # 设置工作目录
module=%(project).wsgi:application # wsgi文件位置master=True # 主进程
processes=2 # 同时进行的进程数,一般# 以下uwsgi与nginx通信手段3选一即可
# 选项1, 使用unix socket与nginx通信,仅限于uwsgi和nginx在同一主机上情形
# Nginx配置中uwsgi_pass应指向同一socket文件
socket=/run/uwsgi/%(project).sock# 选项2,使用TCP socket与nginx通信
# Nginx配置中uwsgi_pass应指向uWSGI服务器IP和端口
# socket=0.0.0.0:8000 或则 socket=:8000# 选项3,使用http协议与nginx通信
# Nginx配置中proxy_pass应指向uWSGI服务器一IP和端口
# http=0.0.0.0:8000 # socket权限设置
chown-socket=%(uid):www-data
chmod-socket=664# 进程文件
pidfile=/tmp/%(project)-master.pid# 以后台守护进程运行,并将log日志存于temp文件夹。
daemonize=/var/log/uwsgi/%(project).log # 服务停止时,自动移除unix socket和pid文件
vacuum=True# 为每个工作进程设置请求数的上限。当处理的请求总数超过这个量,进程回收重启。
max-requests=5000# 当一个请求花费的时间超过这个时间,那么这个请求都会被丢弃。
harakiri=60#当一个请求被harakiri杀掉会输出一条日志
harakiri-verbose=true# uWsgi默认的buffersize为4096,如果请求数据超过这个量会报错。这里设置为64k
buffer-size=65536# 如果http请求体的大小超过指定的限制,打开http body缓冲,这里为64k
post-buffering=65536#开启内存使用情况报告
memory-report=true#设置平滑的重启(直到处理完接收到的请求)的长等待时间(秒)
reload-mercy=10#设置工作进程使用虚拟内存超过多少MB就回收重启
reload-on-as=1024

命令简介

#使用uwsgi.ini配置文件启动Django应用程序
uwsgi --ini uwsgi.ini
#重启uWSGI服务器
uwsgi --reload uwsgi.pid
#停止uWSGI
uwsgi --stop uwsgi.pid
#查看所有uWSGI进程
ps aux | grep uwsgi
#停止所有uWSGI进程
sudo pkill -f uwsgi -9

开机自启

不知道为什么
/etc/init.d/ + chkconfig --add 这种方法不能用来开机自启,十分奇怪。所以使用下面这种方法将,uwsgi变成服务直接用systemctl进行管理。
创建service方法

vim /usr/lib/systemd/system/uwsgi.service

[Unit]
Description=uwsgi-uwsgi-support
After=network.target
Before=nginx.service[Service]
ExecStartPre=/bin/sleep 60
ExecStart=/usr/sbin/start_uwsgi.sh
ExecReload=/bin/kill -HUP ( ps -ep | grep uwsgi)
Type=forking[Install]
WantedBy=multi-user.target

开机自启

systemctl enable uwsgi.service

创建其中的shell脚本

vim /usr/sbin/start_uwsgi.sh

#!/bin/sh
/usr/local/python3/bin/uwsgi --ini /home/pj/djgo/uwsgi_conf/uwsgi.ini

给脚本赋权

chmod +x /usr/sbin/start_uwsgi.sh

安装部分bug处理

问题描述:
报错

Collecting uwsgi Using cached uwsgi-2.0.20.tar.gz (804 kB)
Preparing metadata (setup.py) … error error:
subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [1 lines of output]
ERROR: Can not execute setup.py since setuptools is not available in the build environment.
[end of output]

解决:
尝试 更新 pip setuptools 问题解决

python -m pip install --upgrade pip
python -m pip install --upgrade setuptools

uwsgi2.0.2 安装及自启动相关推荐

  1. 【CNMP系列】CentOS7.0下安装Nginx服务

    [CNMP系列]CentOS7.0下安装Nginx服务 话步前言,CNMP之路,系统起步:http://www.cnblogs.com/riverdubu/p/6425028.html 这回我来讲解下 ...

  2. yum 源没有php7.0,yum安装最新版php7的操作方法

    yum安装最新版php7的操作方法 发布时间:2021-01-12 10:28:17 来源:亿速云 阅读:96 作者:栢白 这篇文章主要介绍了yum安装最新版php7的操作方法,具有一定借鉴价值,需要 ...

  3. mysql 8.0.28安装教程(超简单)

    背景:目前在网络上的mysql安装教程,针对的mysql版本较老,或者安装教程使用的mysql软件多是解压版本,解压过程简单,但是后续配置相对比较麻烦,并且可能因为缺少某些C++依赖包而导致程序无法正 ...

  4. Android实现APK智能安装且安装后自启动,亲测有用!

    一.智能安装 (一)什么是智能安装? 最近因为公司需求需要实现智能安装,apk从服务器上下载后,自动打开安装,安装完后自己打开,难了我好长时间才实现的,记录一下. 首先实现有两种方式: 静默安装: 在 ...

  5. mysql8.0安装设置密码_mysql8.0.11安装配置方法图文教程 MySQL8.0新密码认证方式

    本文为大家分享了mysql8.0.11安装配置方法图文教程.MySQL8.0新密码认证方式,供大家参考,具体内容如下 1.前言 Oracle已经发布了MySQL8.0GA,GA在外国就是release ...

  6. RedHat Linux 9.0的安装+下载+入门指南(图文并茂)

      转自: http://www.360doc.com/myindex.aspx?login=1     [系统]RedHat Linux 9.0的安装+下载+入门指南(图文并茂) 2007-09-2 ...

  7. Kafka-Eagle 2.0.5安装

    Kafka-Eagle 2.0.5安装 Kafka Eagle是一款由国内公司开源的Kafka集群监控系统,可以用来监视kafka集群的broker状态.Topic信息.IO.内存.consumer线 ...

  8. docker安装及自启动

    docker很火,据说是一个能够在任何平台运行的类似沙箱环境,具体原理我也还没搞懂,但完全不影响我研究的热情,先用起来再说.搜了很多,发现国内的文章,很多都不知道啥用,我直接去官网看文档了.现在写一个 ...

  9. 【Linux】在VirtualBox-6.0中安装Manjaro18.0

    1.参考博客: VMware虚拟机下Manjaro17.1.6安装详细教程 2.在VirtualBox-6.0中安装Manjaro18.0 1)基本步骤和博客中安装17.1.6相同,下面只记录不同的. ...

最新文章

  1. Android 解决 No static method in class La/a/a/a; or its super classes
  2. 即将开源 | 2亿用户背后的Flutter应用框架Fish Redux
  3. MySQL性能优化的最佳20+条经验(转)
  4. 分析nat穿越(未完成)
  5. 网站如何接入第三方登录,微信登录和QQ登录:注册认证篇
  6. w550官方例程_急!求索爱w550的刷机所需要的所有文件! 全部分送上!
  7. Inflater与findViewById()区别
  8. Web前端面试指导(十四):如何居中一个元素(正常、绝对定位、浮动元素)?
  9. memcached可视化客户端工具
  10. Python爬虫下载网易云音乐歌曲
  11. Redis云管理平台CacheCloud
  12. 【自然语言处理】【实体匹配】PromptEM:用于低资源广义实体匹配的Prompt-tuning
  13. 2022年度上半年河南省建筑工程安全文明标准化示范工地认定意见公示
  14. Word文档中怎么删除空白页?删除空白页的五种方法
  15. 实战Nagios NSCA方式监控Linux系统资源使用情况 -- Nagios配置篇 -- 被监控端
  16. 阿里代运营一定要掌握的几大技能!
  17. Ubuntu安装texlive
  18. F7弹出界面模糊查询
  19. 软件测试方法和技术实验-佣金问题
  20. Cisco Nexus vPC之Sticky Master

热门文章

  1. 降龙十八掌-程序员篇
  2. nvm安装使用及卸载
  3. 多态之父类引用指向子类对象
  4. 什么样的企业需要舆情优化系统?什么样的企业需要手工监测?
  5. 互联网快讯:极米投影仪获用户青睐;粉笔科技创新OMO模式谋突围;华虹半导体拟科创板上市
  6. 使用axios发送get和post请求
  7. android.bp 编译,Android编译系统中的Android.bp
  8. 108颗佛珠的含义,每颗佛珠都有含义
  9. 必考题系列--十种常见的运行时异常
  10. Python 中的 astype() 和 .dtype