uwsgi python3 plugin doesn't work
我用make编译了uwsgi并成功完成了,现在我决定使用python3.3运行django1.5站点。 我已经检查了文档(http://projects.unbit.it/uwsgi/wiki/Guide4Packagers),并通过apt-get设置了python3.3开发标头,然后通过以下方式编译了该插件:
python3.3 uwsgiconfig.py --plugin plugins/python package python33
然后它说:
1 2 3 4 5 | using profile: buildconf/package.ini detected include path: ['/usr/lib/gcc/i686-linux-gnu/4.7/include', '/usr/local/include','/usr/lib/gcc/i686-linux-gnu/4.7/include-fixed', '/usr/include/i386-linux-gnu', '/usr/include'] *** uWSGI building and linking plugin plugins/python *** [i686-linux-gnu-gcc -pthread] /usr/lib/uwsgi/python33_plugin.so *** python33 plugin built and available in /usr/lib/uwsgi/python33_plugin.so *** |
看来一切都做得很好,我确实在该目录中找到了python33_plugin.so。
nginx正在运行并且可以,现在我的uwsgi ini文件是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [uwsgi] socket=0.0.0.0:8000 listen=20 master=true pidfile=/usr/local/nginx/uwsgi.pid processes=2 plugins=python33 module=django_wsgi pythonpath= profiler=true memory-report=true enable-threads=true logdate=true limit-as=6048 |
当我运行" sudo ./uwsgi uwsgi.ini"时,
1 2 3 | [uWSGI] getting INI configuration from uwsgi.ini open("./python33_plugin.so"): No such file or directory [core/utils.c line 3347] !!! UNABLE to load uWSGI plugin: ./python33_plugin.so: cannot open shared object file: No such file or directory !!! |
它找不到.so文件。反正我将.so文件复制到uwsgi目录,然后再次运行,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [uWSGI] getting INI configuration from uwsgi.ini Sun Apr 28 22:54:40 2013 - *** Starting uWSGI 1.9.8 (32bit) on [Sun Apr 28 22:54:40 2013] *** Sun Apr 28 22:54:40 2013 - compiled with version: 4.7.3 on 28 April 2013 21:25:27 Sun Apr 28 22:54:40 2013 - os: Linux-3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:19:42 UTC 2013 Sun Apr 28 22:54:40 2013 - nodename: bill-Rev-1-0 Sun Apr 28 22:54:40 2013 - machine: i686 Sun Apr 28 22:54:40 2013 - clock source: unix Sun Apr 28 22:54:40 2013 - pcre jit disabled Sun Apr 28 22:54:40 2013 - detected number of CPU cores: 4 Sun Apr 28 22:54:40 2013 - current working directory: /media/bill/cloud/cloud/program/kkblog/kkblog Sun Apr 28 22:54:40 2013 - writing pidfile to /usr/local/nginx/uwsgi.pid Sun Apr 28 22:54:40 2013 - detected binary path: /usr/sbin/uwsgi Sun Apr 28 22:54:40 2013 - uWSGI running as root, you can use --uid/--gid/--chroot options Sun Apr 28 22:54:40 2013 - *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** Sun Apr 28 22:54:40 2013 - your processes number limit is 31552 Sun Apr 28 22:54:40 2013 - limiting address space of processes... Sun Apr 28 22:54:40 2013 - your process address space limit is 2046820352 bytes (1952 MB) Sun Apr 28 22:54:40 2013 - your memory page size is 4096 bytes Sun Apr 28 22:54:40 2013 - detected max file descriptor number: 1024 Sun Apr 28 22:54:40 2013 - lock engine: pthread robust mutexes Sun Apr 28 22:54:40 2013 - uwsgi socket 0 bound to TCP address 0.0.0.0:8000 fd 3 Sun Apr 28 22:54:40 2013 - Python version: 2.7.4 (default, Apr 19 2013, 18:35:44) [GCC 4.7.3] Sun Apr 28 22:54:40 2013 - Python main interpreter initialized at 0x973e2d0 Sun Apr 28 22:54:40 2013 - python threads support enabled |
我正在使用ubuntu 13.04,并且预装了python2.7和python3.3。
我设置了PYTHON33插件但UWSGI仍然启动了PYTHON2.7,为什么?
有人遇到过这个问题吗? 顺便说一句,我不喜欢通过apt-get设置uwsgi和插件,因为它不能在任何PaaS上使用。
谢谢!
您已经构建了嵌入式python 2.7的单片uWSGI二进制文件,因此插件无法覆盖该内存区域。 您可以使用以下命令构建一个简单的整体python3二进制文件:
1 | python3 uwsgiconfig.py --build |
或对python3使用pip
否则,您可以使用以下方法构建完全模块化的系统:
1 2 3 | python uwsgiconfig.py --build core python uwsgiconfig.py --plugin plugins/python core python27 python3 uwsgiconfig.py --plugin plugins/python core python33 |