部署spug二次开发环境时常见的故障解决方案
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.环境准备
1>.安装python 3.6
[root@docker201.yinzhengjie.com ~]# pyenv install -l # 查看pyenv支持安装的环境。 [root@docker201.yinzhengjie.com ~]# [root@docker201.yinzhengjie.com ~]# pyenv install 3.6.12 -v # 由于spug基于3.6进行开发的,因此我建议大家就直接使用python 3.6的最新版本即可,如果用最新python 3.9.1版本可能会存在一些不可预测的问题哟~ [root@docker201.yinzhengjie.com ~]#
2>.查看已安装的python版本
[root@docker201.yinzhengjie.com ~]# pyenv versions * system (set by /root/.python-version) # 注意哈,我的CentOS 7.9服务器自带的python环境是python 2.7.5 3.6.12 3.6.12/envs/spug3612 3.9.1 3.9.1/envs/python391 python391 spug3612 [root@docker201.yinzhengjie.com ~]#
3>.关于虚拟环境和python系统版本环境自由切换的命令
[root@docker201.yinzhengjie.com ~]# python -V Python 2.7.5 [root@docker201.yinzhengjie.com ~]# [root@docker201.yinzhengjie.com ~]# pyenv local spug3612 (spug3612) [root@docker201.yinzhengjie.com ~]# (spug3612) [root@docker201.yinzhengjie.com ~]# python -V Python 3.6.12 (spug3612) [root@docker201.yinzhengjie.com ~]# (spug3612) [root@docker201.yinzhengjie.com ~]# pyenv local system [root@docker201.yinzhengjie.com ~]# [root@docker201.yinzhengjie.com ~]# python -V Python 2.7.5 [root@docker201.yinzhengjie.com ~]# 其它常用的命令可参考我之前整理的笔记: https://www.cnblogs.com/yinzhengjie/p/10624755.html https://www.cnblogs.com/yinzhengjie/p/10624755.html 有关部署spug开源的运维平台可参考官网: https://www.spug.dev/docs/install/ 温馨提示: 如果想要快速体验spug的话,我推荐大家使用docker方式安装,如果你的服务器已经部署好docker环境且网络不差的情况下,基本上在2分钟之内就能运行你的spug程序啦~经过体验我觉得该项目还是很不错的,于是有必要参考一下源码来学习下!
二.常见的故障处理
1>.由于没有安装ldap引发的"Modules/constants.h:7:18: 致命错误:lber.h:没有那个文件或目录"异常
报错原因:
缺少open-ldap的依赖环境,我估摸是spug项目调用了ldap相关的模块导致的,因此我们的Linux系统需要有对应的ldap环境哟~
解决方案:
[root@docker201.yinzhengjie.com ~]# yum -y install openldap-devel
温馨提示:
如果在window上安装的spug环境的话,建议直接将"open_codespugspug_api equirements.txt"文件中的"python-ldap==3.2.0"的内容注释,这样就可以暂时先不解决LDAP的问题,但是在Linux上如果你还想支持该功能,推荐大家还是安装相应的环境。
当然,如果我们跳过ldap的安装,直接按照官方的文档来操作项目肯定是运行不起来的,因为在源码中有导入对应的ladp相关的模块,因此在运行代码前,建议先将"import ldap"相关的代码先暂时注释掉,等我们真的需要使用的时候再来搞!
2>.django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
报错原因: SQLite 的版本过低,因为spug依赖的是SQLite 3.8.3 及更高的版本,而CentOS 7.9中仅找到了3.7.17版本,因此会抛出异常。 解决方案: 打开"http://www.sqlite.org/"网址,下载较新的版本安装即可。 我参考网上的解决方案,下载的版本并不是最新的SQLite版本,但的确能解决问题,一下是编译安装的步骤: [root@docker201.yinzhengjie.com ~]# tar zxf sqlite-autoconf-3270200.tar.gz [root@docker201.yinzhengjie.com ~]# cd sqlite-autoconf-3270200 [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# ./configure --prefix=/usr/local/sqlite [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# make -j 4 && make install [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# ll /usr/bin/sqlite3 -rwxr-xr-x. 1 root root 56264 1月 28 2020 /usr/bin/sqlite3 [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# mv /usr/bin/sqlite3 /usr/bin/sqlite3-`date +%F` [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# ll /usr/bin/sqlite3* -rwxr-xr-x. 1 root root 56264 1月 28 2020 /usr/bin/sqlite3-2021-01-19 [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# [root@docker201.yinzhengjie.com ~/sqlite-autoconf-3270200]# cd /usr/local/sqlite/bin/ [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# ll 总用量 5932 -rwxr-xr-x 1 root root 6070384 1月 19 00:06 sqlite3 [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# ln -sv ../local/sqlite/bin/sqlite3 /usr/bin/sqlite3 "/usr/bin/sqlite3" -> "../local/sqlite/bin/sqlite3" [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# ll /usr/bin/sqlite3 lrwxrwxrwx 1 root root 27 1月 19 00:14 /usr/bin/sqlite3 -> ../local/sqlite/bin/sqlite3 [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# vim /etc/profile [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# tail -2 /etc/profile # Add by yinzhengjie export LD_LIBRARY_PATH="/usr/local/sqlite/lib" [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# source /etc/profile [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# sqlite3 --version 3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7 [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# [root@docker201.yinzhengjie.com /usr/local/sqlite/bin]# cd [root@docker201.yinzhengjie.com ~]# [root@docker201.yinzhengjie.com ~]# sqlite3 --version 3.27.2 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7 [root@docker201.yinzhengjie.com ~]#
3>.