首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mac : LoadModule wsgi_module不像docs中提到的那样工作

Mac : LoadModule wsgi_module不像docs中提到的那样工作
EN

Stack Overflow用户
提问于 2017-11-16 09:40:21
回答 2查看 813关注 0票数 0

由于Mac的安全原因,我将apache从2.4.25升级到2.4.29。还通过pip安装了mod_wsgi。

现在在重新启动apache服务器时面临困难!

我按照mod_wsgi 文档运行了这个命令,

代码语言:javascript
复制
> mod_wsgi-express module-config
LoadModule wsgi_module "/Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so"
WSGIPythonHome "/System/Library/Frameworks/Python.framework/Versions/2.7"

复制apache.conf文件中的上述两行并尝试启动apache服务器,但得到了以下错误:

代码语言:javascript
复制
> sudo apachectl start
/usr/local/apache/bin/apachectl: line 79: 51863 Illegal instruction: 4  $HTTPD -k $ARGV

任何帮助都将不胜感激。谢谢!

根据格雷厄姆的回答,编辑

代码语言:javascript
复制
# I upgraded the mod_wsgi
> sudo pip install --upgrade --no-cache-dir mod_wsgi
Collecting mod_wsgi
  Downloading mod_wsgi-4.5.21.tar.gz (2.5MB)
    100% |████████████████████████████████| 2.5MB 2.1MB/s 
Installing collected packages: mod-wsgi
  Found existing installation: mod-wsgi 4.5.20
    Uninstalling mod-wsgi-4.5.20:
      Successfully uninstalled mod-wsgi-4.5.20
  Running setup.py install for mod-wsgi ... done
Successfully installed mod-wsgi-4.5.21

但当我试着:

代码语言:javascript
复制
> mod_wsgi-express start-server
Traceback (most recent call last):
  File "/Library/WebServer/Documents/DSFENV/bin/mod_wsgi-express", line 11, in <module>
    load_entry_point('mod-wsgi==4.5.21', 'console_scripts', 'mod_wsgi-express')()
  File "/Library/WebServer/Documents/DSFENV/lib/python2.7/site-packages/mod_wsgi/server/__init__.py", line 3484, in main
    cmd_start_server(args)
  File "/Library/WebServer/Documents/DSFENV/lib/python2.7/site-packages/mod_wsgi/server/__init__.py", line 3332, in cmd_start_server
    config = _cmd_setup_server('start-server', args, vars(options))
  File "/Library/WebServer/Documents/DSFENV/lib/python2.7/site-packages/mod_wsgi/server/__init__.py", line 2999, in _cmd_setup_server
    language, encoding = locale.getdefaultlocale()
  File "/Library/WebServer/Documents/DSFENV/lib/python2.7/locale.py", line 543, in getdefaultlocale
    return _parse_localename(localename)
  File "/Library/WebServer/Documents/DSFENV/lib/python2.7/locale.py", line 475, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

得到上面的错误。此外,我还安装了Apache2.4.29以下的博客

第二版I已经解决了ValueError: unknown locale: UTF-8,现在mod_wsgi-express start-server的输出显示:

代码语言:javascript
复制
> mod_wsgi-express start-server
Server URL         : http://localhost:8000/
Server Root        : /tmp/mod_wsgi-localhost:8000:501
Server Conf        : /tmp/mod_wsgi-localhost:8000:501/httpd.conf
Error Log File     : /tmp/mod_wsgi-localhost:8000:501/error_log (warn)
Request Capacity   : 5 (1 process * 5 threads)
Request Timeout    : 60 (seconds)
Startup Timeout    : 15 (seconds)
Queue Backlog      : 100 (connections)
Queue Timeout      : 45 (seconds)
Server Capacity    : 20 (event/worker), 20 (prefork)
Server Backlog     : 500 (connections)
Locale Setting     : en_US.UTF-8

但是,当我尝试进行配置测试时,仍然会显示相同的错误:

代码语言:javascript
复制
> sudo apachectl configtest
/usr/local/apache/bin/apachectl: line 79: 53944 Illegal instruction: 4  $HTTPD -t

xcode版本:

代码语言:javascript
复制
> xcodebuild -version
Xcode 8.3.2
Build version 8E2002

第三版按注释编辑

代码语言:javascript
复制
> /usr/local/apache/bin/httpd
Illegal instruction: 4

> /Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so
-bash: /Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so: cannot execute binary file

> sys.prefix
'/System/Library/Frameworks/Python.framework/Versions/2.7'

> sys.version
'2.7.10 (default, Feb  7 2017, 00:08:15) \n[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)]'

我跟随这个博客安装Apache2.4.29:http://mac-dev-env.patrickbougie.com/apache/

-带有-ssl选项,因为我们需要为网站进行https。

4编辑

代码语言:javascript
复制
> file /usr/local/apache/bin/httpd
/usr/local/apache/bin/httpd: Mach-O 64-bit executable x86_64

> file /Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so
/Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so: Mach-O universal binary with 2 architectures: [x86_64: Mach-O 64-bit bundle x86_64] [i386: Mach-O bundle i386]
/Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so (for architecture x86_64):   Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so (for architecture i386): Mach-O bundle i386

请告诉我如何前进。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-16 10:51:59

如果您已经以某种方式更新了Apache安装,那么通常来自较早版本的mod_wsgi.so二进制文件仍然可以工作,因为Apache在补丁级别的更新中维护ABI的兼容性。

如果它不能工作,那么您可能需要重新构建mod_wsgi。如果没有更新版本的mod_wsgi,则需要强制进行完全重新构建,以确保不使用来自pip缓存的缓存二进制文件。

代码语言:javascript
复制
pip install --upgrade --no-cache-dir mod_wsgi

然而,下一个问题是,如果你升级到Xcode 9.1,苹果已经彻底删除了apxs,这意味着我以前的苹果故障解决方案不再起作用。在这种情况下,您需要确保正在安装mod_wsgi 4.5.21或更高版本。该版本只是刚刚发布的补丁,以适应Xcode 9.1

因此,请尝试上面的pip命令,并通过运行以下命令确保mod_wsgi-express仍然工作:

代码语言:javascript
复制
mod_wsgi-express start-server

然后再次运行,验证要在Apache配置中使用的配置片段:

代码语言:javascript
复制
mod_wsgi-express module-config

如果仍然存在主要Apache的问题,那么请确保完全停止Apache,然后启动,而不仅仅是重新启动。告诉我这一切是怎么回事。

更新1

以上假设您正在使用Apple提供的Apache对Xcode 9.1的评论。你好像在用自己的Apache,也许是自制的。还是尝试同样的方法。

票数 3
EN

Stack Overflow用户

发布于 2017-11-21 07:19:51

格雷厄姆建议:

代码语言:javascript
复制
pip install --upgrade --no-cache-dir mod_wsgi

升级到mod_wsgi 4.5.22成功了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47326201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档