uwsgi2.0.2 安装及自启动

7 篇文章 0 订阅
6 篇文章 0 订阅
背景知识:

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Systemctl 可以用来配置 uwsgi 开机自启动,你需要在/etc/systemd/system/ 下创建一个 uwsgi.service 文件,然后用 systemctl start uwsgi 启动服务,用 systemctl enable uwsgi 让服务开机自启动。 ### 回答2: 要配置uwsgi开机自启动,需要进行以下步骤: 1. 首先,确保已经正确安装uwsgi和systemctl工具。 2. 打开终端并以root用户身份登录。 3. 创建一个uwsgi启动脚本文件。可以使用任意文本编辑器,如vi或nano。 ```shell $ sudo nano /etc/systemd/system/uwsgi.service ``` 4. 在打开的文件中,输入以下内容: ```shell [Unit] Description=uWSGI After=network.target [Service] ExecStart=/usr/bin/uwsgi --ini /path/to/your/uwsgi.ini Restart=always Type=simple [Install] WantedBy=multi-user.target ``` 将`/path/to/your/uwsgi.ini`替换为uwsgi配置文件的实际路径。 5. 保存并关闭文件。 6. 启用uwsgi服务,并设置开机自启动。 ```shell $ sudo systemctl enable uwsgi ``` 7. 启动uwsgi服务。 ```shell $ sudo systemctl start uwsgi ``` 8. 验证uwsgi服务是否成功启动。 ```shell $ sudo systemctl status uwsgi ``` 如果状态显示为"active (running)",则表示uwsgi已成功启动,并且已配置为开机自启动。 现在,uwsgi将会在系统启动时自动启动,并保持运行状态。 ### 回答3: 要配置uwsgi开机自启动,可以使用systemctl命令来完成。下面是配置的步骤: 1. 创建一个uwsgi.service文件:在终端中使用文本编辑器(如nano或vim),创建一个uwsgi.service文件。可以使用以下命令来创建文件并进入编辑器: ``` sudo nano /etc/systemd/system/uwsgi.service ``` 2. 在uwsgi.service文件中输入以下内容: ``` [Unit] Description=uWSGI Service After=network.target [Service] ExecStart=/usr/bin/uwsgi --ini /path/to/your/uwsgi.ini Restart=always User=username Group=groupname Environment=PATH=/usr/local/bin [Install] WantedBy=multi-user.target ``` 将"/path/to/your/uwsgi.ini"替换为uwsgi.ini文件的实际路径。将"username"替换为uwsgi运行的用户名称,将"groupname"替换为uwsgi运行的用户组名称。 3. 保存并关闭文件:使用快捷键"Ctrl+X",然后输入"Y"来保存并退出编辑器。 4. 重新加载systemctl:在终端中使用以下命令重新加载systemctl的配置文件: ``` sudo systemctl daemon-reload ``` 5. 启用uwsgi服务:使用以下命令来启用uwsgi服务,使其开机自启动: ``` sudo systemctl enable uwsgi.service ``` 这样,uwsgi服务将被配置为开机自启动。 6. 启动uwsgi服务:使用以下命令来启动uwsgi服务: ``` sudo systemctl start uwsgi.service ``` 您还可以使用"status"命令来检查uwsgi服务的运行状态: ``` sudo systemctl status uwsgi.service ``` 现在,uwsgi将在系统启动时自动启动,并且会在系统重启后继续运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值