ubuntu20.04 uwsig 编译安装

一、背景描述

  • python部署环境为python3.6,由于apt-get install uwsgi-plugin-python3,使用python38_plugin.so,python3.8中对应python3.6使用库不兼容,运行不起来
sudo apt-get install uwsgi
sudo apt-get install uwsgi-plugin-python3

在这里插入图片描述

  • 将18.04下python36_plugin.so复制,修改软连接,重启uwsgi也不生效
scp -P 36000 jtserver@172.31.x.x:/home/jtserver/python36_plugin.so .
sudo cp python36_plugin.so /usr/lib/uwsgi/plugins/
cd /etc/alternatives/uwsgi-plugin-python3
sudo mv uwsgi-plugin-python3 uwsgi-plugin-python3.bak # 备份旧文件
sudo ln -sv /usr/lib/uwsgi/plugins/python36_plugin.so /etc/alternatives/uwsgi-plugin-python3
sudo service uwsgi restart

二、获取uwsgi安装文件

  • jtserver@work:~$ wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
    在这里插入图片描述

三、编译安装

  • 解压文件
tar -zxvf uwsgi-latest.tar.gz
cd uwsgi-2.0.20
  • 执行编译,使用对应项目环境python3.6编译
python3.6 uwsgiconfig.py --build
python3 setup.py install`

在这里插入图片描述
在这里插入图片描述

  • 查询目录下文件,已经多出一个uwsgi执行文件
    在这里插入图片描述

四、配置系统环境

sudo mv uwsgi-2.0.20 /usr/local/lib
cd /usr/local/lib/uwsgi-2.0.20
sudo cp uwsgi /usr/local/bin/
sudo ln -sv /usr/local/bin/uwsgi /usr/bin/uwsgi

在这里插入图片描述

五、配置运行环境

  • 将uwsgi挂载到supervisor并启动
sudo vim /etc/supervisor/conf.d/uwsgi_emperor.conf
 
[program:uwsgi_emperor]
directory=/usr/local/bin
command=uwsgi --emperor /etc/uwsgi/vassals --uid www-data --gid www-data
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=600
killasgroup=true
numprocs=1
user=jtserver
redirect_stderr=true
stdout_logfile=/var/log/supervisor/uwsgi_emperor.log
stdout_logfile_backups=15
stdout_logfile_maxbytes=300MB
  • 将python项目配置到uwsgi (若没有vassals则手动新建),配置前请处理好所需目录路径(存放log路径等文件夹新建)
sudo mkdir /etc/uwsgi/vassals
cd /etc/uwsgi/vassals
sudo vim <your-project>.ini


[uwsgi]
socket = /tmp/<your-project>.sock
chdir = /home/jtserver/vhost/<your-project>/
module = manage
callable = app
workers = 2
master = True
vacuum = True
# plugins = python3
enable-threads = True
threads = 20
max-requests = 50000
disable-logging = True
virtualenv = /home/jtserver/virtualenv/<your-project>/
touch-reload = /home/jtserver/vhost/<your-project>/reload
chmod-socket = 666
harakiri = 10    # 如果一个请求花费的时间超过了这个harakiri超时时间10秒,那么这个请求都会被丢弃,并且当前处理这个请求的工作进程会被回收再利用
ignore-write-errors = True

#uwsgi后台运行,日志写到uwsgi.log
daemonize = /home/jtserver/log/<your-project>/uwsgi.log

六、参考

  • http://t.zoukankan.com/pengpengdeyuan-p-14663112.html

版权声明:本文为tianjiewang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。