`

uwsgi python ssl编译问题记录

 
阅读更多
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下。

如果一些包不在常见的目录下,编译的确是件麻烦的事。
分享到:
评论

相关推荐

    uwsgi-2.0.21

    9. **日志和监控**:uwsgi提供详细的日志记录,并可以与各种监控工具(如Prometheus、Grafana)集成,帮助开发者追踪和分析应用性能。 10. **可扩展性**:uwsgi的设计允许开发者自定义行为,通过编写插件或使用内置...

    uwsgi-2.0.18.tar.gz

    同时,确保正确设置日志记录,以便于问题排查和性能分析。 uwsgi的灵活性和强大功能使其成为Django部署的首选,它能适应各种规模的项目,从小型个人博客到大型企业级应用。了解并熟练掌握uwsgi的配置和使用,对于...

    离线部署uwsgi和nginx所需包

    首先,uwsgi是一个高效且可扩展的Python应用服务器,它允许我们将Python应用程序(如Django)作为服务运行。uwsgi提供了多种功能,包括进程管理、负载均衡、缓存以及与其他服务器(如nginx)的接口。在离线环境下,...

    阿里云部署python+flask+uwsgi+gevent+nginx

    这里以Python 3.7为例,先安装必要的编译工具,如`gcc`和`Development tools`,然后下载Python源码,解压并编译安装。注意使用`--prefix`参数指定安装路径,最后创建软链接使系统能够识别新安装的Python版本。 安装...

    uWSGI-2.0.19.1.rar

    Nginx通常作为反向代理服务器使用,负责处理静态文件和SSL/TLS等任务,而动态内容的处理则交给uWSGI。HttpUwsgiModule能够解析uwsgi协议,将来自客户端的请求传递给uWSGI服务器,然后接收并返回uWSGI处理后的响应。...

    flask+uwsgi+nginx部署.pdf

    根据提供的信息,本文档将详细介绍如何通过CentOS安装Python 3.7,并结合使用uWSGI和Nginx来部署一个基于Flask的应用。 ##### 1.1 安装Python 3.7 **步骤一:准备服务器** - 登录阿里云账户并创建一个新的ECS实例...

    详解Django+uwsgi+Nginx上线最佳实战

    - 下载Python 3.6.0源码,取消`Modules/Setup.dist`文件中关于Socket模块和SSL支持的注释,然后编译和安装Python。 - 关闭或调整防火墙规则,允许3306(MySQL)、8000(Django默认端口)和80(HTTP)端口的访问。 - ...

    Python库 | pyuwsgi-2.0.19.1-cp35-cp35m-macosx_10_13_intel.whl

    10. **扩展性**: `uWSGI`拥有丰富的插件系统,可以添加额外的功能,如Nginx反向代理、静态文件处理、SSL支持等。 总之,`pyuwsgi`是Python开发者在构建高性能Web服务时的重要工具,它结合了`uWSGI`的强大功能,使得...

    详解centos7+django+python3+mysql+阿里云部署项目全流程

    注意,在安装`mysqlclient`时,可能遇到问题,需要使用Python 2的`pip`来安装,以避免与Python 3的冲突。 4. **安装MySQL** - 从MySQL官方网站获取RPM安装包,然后使用`yum`来安装MySQL社区版。 - 设置MySQL的...

    django-vue-admin发布教程.docx

    确保服务器上已安装必要的软件和服务,如 Python、uWSGI、Nginx 等。 #### 三、项目打包与上传 1. **项目打包**:将本地开发好的项目打包成压缩文件。可以使用 Windows 上的工具如 WinSCP 或者命令行工具 rz、sftp...

    Ubuntu部署Django项目方法详解

    我们将使用一系列工具和服务来完成部署,包括Python 3.6.5、Nginx-1.13.7以及uWSGI (2.0.17.1)。 #### 二、环境准备 首先确保您的Ubuntu系统是最新的,并且进行了必要的软件安装。 ##### 安装网络工具包与重启...

    阿里云服务器配置nginx+https

    如果未发现`--with-http_ssl_module`,则需要重新编译Nginx,添加SSL模块。找到之前的编译目录,重新配置并编译: ```bash ./configure --with-http_ssl_module make ``` 由于这是升级过程,不执行`make install`...

    Django多并发处理

    - **下载并编译Nginx**:从官网下载Nginx源码包,解压后执行配置命令如: ```sh ./configure --user=nginx --group=nginx --prefix=/data/application/nginx-1.10.3 --with-...

    Linux系统上Nginx+Python的web.py与Django框架环境

    这里我们将详细介绍如何编译Nginx,以及如何配置它来与Python的web.py和Django框架协同工作。 **一、编译Nginx** 在编译Nginx时,我们通常需要添加额外的模块来支持特定的功能,例如HTTPS和URL重写。首先,你需要...

    文章《本地Web网站部署与发布》所需的安装包

    如果是Python的Django或Flask应用,就需要Python环境和相应的WSGI服务器(如uWSGI)。 3. **数据库**:许多Web应用依赖数据库存储数据,如MySQL、PostgreSQL或MongoDB。确保数据库引擎正确安装和配置是部署的关键...

    Django在Ubuntu14.04的部署方法

    首先安装Python3的开发包和pip,然后使用pip3安装uwsgi。在安装uwsgi前,可以更换pip源以加快下载速度,例如设置为豆瓣的镜像源。 **第四步:测试uwsgi** 创建一个简单的uwsgi测试应用,编写一个名为`test.py`的...

    Flash+gunicorn+django.pdf

    Django自带了一个简单的WSGI服务器,但不推荐用于生产环境,因此通常会与Gunicorn或uWSGI等高性能服务器一起使用。 在描述中提到了部署环境的搭建,这部分主要涉及了Linux系统上的软件安装和配置,包括Nginx。Nginx...

    nginx-1.10.3.tar.gz

    此外,Nginx还支持FastCGI、uWSGI、SCGI协议,能够与PHP、Python、Ruby等后端语言无缝协作。 总之,`nginx-1.10.3.tar.gz`提供了一个可定制的高性能Web服务器平台,允许开发者根据具体需求调整配置,优化性能,并与...

    最新版linux nginx-1.20.0.tar.gz

    此外,Nginx 还支持FastCGI、uwsgi、SCGI等协议,可以与PHP、Python、Ruby等后端语言无缝集成,为动态网站提供服务。 Linux是Nginx最常见的操作系统平台,因为它提供了稳定、高效和安全的运行环境。Nginx-1.20.0....

    Nginx开发从入门到精通

    7. **动态内容处理**:虽然Nginx主要处理静态内容,但通过FastCGI、uWSGI等模块,可以配合PHP、Python等后端语言处理动态请求。 8. **Nginx模块开发**:对于有编程基础的读者,深入学习Nginx模块开发可以定制自己的...

Global site tag (gtag.js) - Google Analytics