installing uwsgi on cygwin

≯℡__Kan透↙ 提交于 2019-12-21 17:51:27

问题


Have anyone managed to install uwsgi on cygwin (python 2.7) ?

{ uwsgi-2.0.11.2 }  » python setup.py install
running install
using profile: buildconf/default.ini
detected include path: ['/usr/lib/gcc/i686-pc-cygwin/4.9.2/include', '/usr/lib/gcc/i686-pc-cygwin/4.9.2/include-fixed', '/usr/include', '/usr/lib/gcc/i686-pc-cygwin/4.9.2/../../../../include/w32api']
Patching "bin_name" to properly install_scripts dir
detected CPU cores: 1
configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_ZLIB -DUWSGI_LOCK_USE_WINDOWS_MUTEX -DUWSGI_EVENT_USE_POLL -DUWSGI_EVENT_TIMER_USE_NONE -DUWSGI_EVENT_FILEMONITOR_USE_NONE -DUWSGI_UUID -DUWSGI_VERSION="\"2.0.11.2\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="11" -DUWSGI_VERSION_REVISION="2" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_SSL -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"
*** uWSGI compiling server core ***
[gcc] core/utils.o
core/utils.c: In function ‘uwsgi_as_root’:
core/utils.c:848:4: error: implicit declaration of function ‘initgroups’ [-Werror=implicit-function-declaration]
    if (initgroups(uidname, uwsgi.gid)) {
    ^
cc1: all warnings being treated as errors

I have got make, automake , gcc (4.9.2) . Do I need anything else ?


回答1:


I ran into the exact same issue under Windows 7, gcc (GCC) 4.9.3 and GNU Make 4.1. There actually 3 issues that needed to be resolved. The first being to disable the GCC warnings by removing the -Wall flag. The second is to remove the GCC -rdynamic linker option when using Cygwin. The last issue is that you need to install libcrypt-devel using Cygwin's setup installer.

Here is is what my git diff uwsgiconfig.py looks like. Note that I cloned the master branch from GitHub.

diff --git a/uwsgiconfig.py b/uwsgiconfig.py
index 3279777..cca00cf 100644
--- a/uwsgiconfig.py
+++ b/uwsgiconfig.py
@@ -1,5 +1,6 @@
 # uWSGI build system

+
 uwsgi_version = '2.1-dev'

 import os
@@ -621,7 +622,7 @@ class uConf(object):
         self.cflags = [
             '-O2',
             '-I.',
-            '-Wall',
+            # '-Wall',
             '-Werror',
             '-D_LARGEFILE_SOURCE',
             '-D_FILE_OFFSET_BITS=64'
@@ -842,6 +843,9 @@ class uConf(object):
             if GCC in ('clang',):
                 self.libs.remove('-rdynamic')

+        if uwsgi_os.startswith('CYGWIN'):
+            self.libs.remove('-rdynamic')
+
         # compile extras
         extras = self.get('extras', None)
         if extras:

Then a simple make within the cloned uwsgi directory should build everything.

I tested it by creating a file called app.py with the following -

def application(env, start_response):
    start_response('200 OK', [('content-type', 'text/html')])

    return [b'asdasdasd']

Then run the server with -

./uwsgi --http :9090 --wsgi-file app.py

Everything worked fine when I accessed http://localhost:9090/.




回答2:


I am successed with only using latest uwsgi and latest Cygwin. The core is step 2

step:

  1. dowload Cygwin
  2. install: when you install, you must choose to install pip and python (my is python2.7.16) ==> this is python for Cygwin, not the python installed on Windows and use in Cygwin shell(REF TO)
  3. dowload uwsgi
  4. install cd {YOUR uwsgi}; python2.7.exe setup install(python2.7.exe is that created by python for Cygwin that you choose in step2, your may diff, find at /bin/pythonX.x.exe, add it to PATH just like in linux(/etc/profile or ~/.bash_profile))
  5. if error in step 4 occurred, like 'xxx/ld not found -lintl`, go to step2 find it(usually xxx-devel) and install
  6. use uwsig: python and most cmd in Cygwin can only run at Cygwin console(else access denial), but you can use uwsgi, add it to your WINDOWS PATH, and install package like django in at Cygwin console.


来源:https://stackoverflow.com/questions/33012225/installing-uwsgi-on-cygwin

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!