IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 阿里云ECS服务器离线部署uwsgi爬坑总结 -> 正文阅读

[Python知识库]阿里云ECS服务器离线部署uwsgi爬坑总结

因工作需要,自己要开发一个django项目上线,采用架构:
Nginx+uwsgi+Django

这里重点讲uwsgi的离线安装部署

阿里云ECS服务器自带的python是3.6,我本地开发环境是3.9,所以在线上环境使用anaconda管理环境。

我要解决的问题是uwsgi安装的时候报库文件not found错误。比如,第一种情况这样:
lib58
另外一种情况:
lib60
第二种情况属于缺失文件比较多的。

一开始我在部署的时候搞了很多办法,比如去这个网站找缺失的库文件;也去试过不同版本的uwsgi,uwsgi离线安装包下载地址,下面是我试过的版本:
uwsgilist

弄来弄去,就是版本不兼容的问题,这里涉及到2种不兼容:python版本和uwsgi,uwsgi和Linux系统。

  • python版本和uwsgi版本问题:因为我ECS服务器anaconda的base环境基于python 3.9,所以我想当然的去找了uwsgi-2.0.20-py39和uwsgi-2.0.19.1-py39,安装后发现还是库文件not found,直到我试了很多py39的版本包,都不行,我意识到是系统层面的问题了,当前ECS服务器不够兼容py39版的uwsgi。
  • uwsgi版本和Linux系统的关系:前面讲了ECS的python版本是3.6,所以 Linux系统环境肯定是以python3.6为基础的,所以我就尝试了很多py36不同版本的uwsgi,最后让我找到了一些规律。
    uwsgi2.0.18
    把这些包全部解压到文件夹里,挨个去看它们缺失哪些库文件,会发现规律:
    uwsgi_x
    解压缩xxx_1.tar.bz2到uwsgi_1文件夹,xxx_2.tar.bz2到uwsgi_2文件夹,以此类推。你会发现其实就是库文件版本不一样,这里有三个版本:so.58, so.64, so.67。那么,本地 Linux系统提供的环境是什么版本,看/usr/lib64/下:
    lib64-linux
    Linux系统提供的库文件是so.60
    到这里基本上水落石出了:只要选择uwsgi版本和so.60兼容的版本就可以。,选so.58的那个版本,记住兼容永远都是向后兼容,so.60肯定兼容so.58,但它不一定能兼容so.64和so.67。思路通了,后面的操作就简单了,加软链就可以了。
    ruanlian
    ldd看一下:
    test
    搞定!
    上面的就是整个解决过程,正式安装部署uwsgi的时候建议重新安装一下。
    用conda离线安装方式:
1. 在 https://anaconda.org/conda-forge/uwsgi/files  下载uwsgi包,注意本地部署的python版本对应不同的安装包
2. 上传到conda install的缓存文件路径 /root/anaconda/pkgs;如果要安装到虚拟环境,对应路径为 /root/anaconda/envs/xxx/
3. 安装命令:conda install --use-local uwsgi包名

最终采用的环境是python3.6,uwsgi-2.0.18

总结一下

  1. 开发项目一定要注意环境。保持开发环境和部署环境一致
  2. 软件最新不一定是合适的。我这里用python3.9开发确实是草率了,没考虑到服务器部署的环境。一开始用uwsgi-2.0.20最新版也不靠谱,没考虑到系统环境支不支持。
  3. 耐心,胆大心细。发现问题就解决问题,会比较,找差异,看规律。
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:09:05  更:2022-05-07 11:09:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:20:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码