在 cygwin 上安装 uwsgi

zza*_*art 5 cygwin uwsgi

有人设法在 cygwin (python 2.7) 上安装 uwsgi 吗?

\n\n
{ uwsgi-2.0.11.2 }  \xc2\xbb python setup.py install\nrunning install\nusing profile: buildconf/default.ini\ndetected 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\']\nPatching "bin_name" to properly install_scripts dir\ndetected CPU cores: 1\nconfigured 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);"\n*** uWSGI compiling server core ***\n[gcc] core/utils.o\ncore/utils.c: In function \xe2\x80\x98uwsgi_as_root\xe2\x80\x99:\ncore/utils.c:848:4: error: implicit declaration of function \xe2\x80\x98initgroups\xe2\x80\x99 [-Werror=implicit-function-declaration]\n    if (initgroups(uidname, uwsgi.gid)) {\n    ^\ncc1: all warnings being treated as errors\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有 make、automake、gcc (4.9.2) 。我还需要什么吗?

\n

one*_*ree 0

我在 Windows 7gcc (GCC) 4.9.3GNU Make 4.1. 实际上有3个问题需要解决。第一个是通过删除该-Wall标志来禁用 GCC 警告。第二个是在使用 Cygwin 时删除 GCC-rdynamic链接器选项。最后一个问题是您需要libcrypt-devel使用 Cygwin 的安装程序进行安装。

这是我的git diff uwsgiconfig.py样子。请注意,我masterGitHub克隆了分支。

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:
Run Code Online (Sandbox Code Playgroud)

然后make克隆的 uwsgi 目录中的一个简单的内容应该构建所有内容。

app.py我通过创建一个名为以下内​​容的文件来测试它-

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

    return [b'asdasdasd']
Run Code Online (Sandbox Code Playgroud)

然后使用 - 运行服务器

./uwsgi --http :9090 --wsgi-file app.py
Run Code Online (Sandbox Code Playgroud)

当我访问http://localhost:9090/时一切正常。