设为首页 收藏本站
查看: 830|回复: 0

[经验分享] uwsgi python ssl编译问题记录

[复制链接]

尚未签到

发表于 2017-4-29 14:21:17 | 显示全部楼层 |阅读模式
uwsgi python ssl编译问题记录
发表于6个月前(2013-12-10 10:54)   阅读(187) | 评论(0) 2人收藏此文章, 我要收藏
赞0
python uwsgi ssl compile

昨天,因为在运行gevent时说ssl没找到,是因为缺省编译python 2.7.6时没带ssl的编译。那么为什么没带呢?主要原因是python没找到。因为我是把相关的软件都安装在用户目录下,所以缺省的位置是根本找不到的。于是在网上搜了一下如何编译时,将ssl编译进去,找了半天的结果基本上都是要修改Modules/Setup.dist下有关ssl的内容,好象没有通过设置环境变量就可以解决的方法,于是乎只能修改这个文件,大约修改是这样的:

SSL=/home/ap/xxxx
_ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib64 -lssl -lcrypto
一个是把上面的 SSL 的路径改为我的用户目录,另一个是把 -L的路径改为lib64,因为我的环境是x86_64的,所以openssl是放在$HOME/lib64下的。

make的时候说 Modules/Setup.dist 比 Modules/Setup 要新,于是我覆盖了一下。make之后还是说 _ssl 没找到:

Python build finished, but the necessary bits to build these modules were not found:
_bsddb _curses _curses_panel
_sqlite3 _ssl _tkinter
bsddb185 bz2 dbm
dl gdbm imageop
readline sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
可以看到最后一行有个建议,说是看一下setup.py是如何检查模块的。

于是我编译setup.py首先在501左或添加了一行:

inc_dirs = self.compiler.include_dirs[:]
    lib_dirs = self.compiler.library_dirs[:]
    lib_dirs.append('/home/ap/xxxx/lib64')
最后一行是我加的,把lib的目录加进去了。然后又在844行左右,加了一行:

if have_any_openssl:
    if have_usable_openssl:
        ssl_libs.append('/home/ap/xxxx/lib64')
        # The _hashlib module wraps optimized implementations
        # of hash functions from the OpenSSL library.
ssl_libs.append('/home/ap/xxxx/lib64') 这一行。

然后再编译就成功了。再执行make install来安装到用户目录下。进入python环境, import ssl就正确了。

但是,我再编译uwsgi时发现了问题。在编译最后报错了:

/home/ap/xxxx/src/packages/build/Python-2.7.6/./Modules/_ssl.c:1280: undefined reference to `SSL_get_error'
/home/ap/xxxx/lib/python2.7/config/libpython2.7.a(_ssl.o): In function `_ssl_threadid_callback':
/home/ap/xxxx/src/packages/build/Python-2.7.6/./Modules/_ssl.c:1661: undefined reference to `CRYPTO_THREADID_set_numeric'
collect2: ld returned 1 exit status
网上查了查,原来是 -lssl 没自动加进去。但是为什么没自动加进去呢?还是因为我把openssl装到了用户目录下。于是经过试验,可以在编译时添加一些环境变量来解决这一问题,编译命令如下:

LDFLAGS="-L$HOME/lib64" UWSGI_INCLUDES=$HOME/include python uwsgiconfig.py --build
这回就正确了。然后把编译好的uwsgi拷贝到你想放的地方,比如$HOME/bin下。

如果一些包不在常见的目录下,编译的确是件麻烦的事。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-370873-1-1.html 上篇帖子: 分享python怎么调用解释器 下篇帖子: Python学习笔记一(数据类型、变量)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表