macos apache中mod_wsgi的配置

最近两天做了一个Django的即时聊天小网站,想搭在apache上,被这个mod_wsgi的问题折磨了半天,终于配置成功,遇到相同问题的看官请往下看。

首先

pip install mod_wsgi

#pip用不了的童鞋可以用pip3试一下,要是pip3还不行,那就用python -m pip install mod_wsgi

别着急, 我们并不使用pip下来的这个,只是为了得到一个配置信息模版

接下来,打开终端,输入如下

mod_wsgi-express module-config

你应该会获得类似这样的结果

LoadFile "/opt/anaconda3/lib/libpython3.7m.dylib"
LoadModule wsgi_module "/opt/anaconda3/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-darwin.cpython-37m-darwin.so"
WSGIPythonHome "/opt/anaconda3"

我python3使用的anaconda安装的,所以用的自己安装的python的同学不要觉得自己获得的结果奇怪

这个终端不要关掉,待会要复制这段结果

然后轮到apache了

众所周知,mac是自带apache的,但是这个apache并没有apxs工具,而编译mod_wsgi必须有它

所以,我们马上要着手的就是删除这个自带的apache

rm -rf 你的apache目录

不要犹豫,按下你的回车键!

接下来有分支了:

1. 你已经安装了Homebrew

2.你还没有安装Homebrew

1的同学请直接跟我往下走

2的同学请出门左转,找到我的上一篇文章,进行brew的安装(安装完后换个国内镜像吧!)

来,同学我们继续

新建一个终端

输入

brew install httpd

正常来说几分钟就好啦,耐心等吧!

安装完后先放一边,我们开始下载mod_wsgi源码

进入mod_wsgi官网下载源码压缩包(我下的zip)

按照官方文档编译mod_wsgi

文档入口帮大家写在下面啦

https://modwsgi.readthedocs.io/en/develop/user-guides/installation-on-macosx.html

完成后应会有以下类似结果

/usr/local/bin/apxs -i -S LIBEXECDIR=/usr/local/lib/httpd/modules -n 'mod_wsgi' src/server/mod_wsgi.la
/usr/local/opt/httpd/lib/httpd/build/instdso.sh SH_LIBTOOL='/usr/local/opt/apr/libexec/build-1/libtool' src/server/mod_wsgi.la /usr/local/lib/httpd/modules
/usr/local/opt/apr/libexec/build-1/libtool --mode=install install src/server/mod_wsgi.la /usr/local/lib/httpd/modules/
libtool: install: install src/server/.libs/mod_wsgi.so /usr/local/lib/httpd/modules/mod_wsgi.so
libtool: install: install src/server/.libs/mod_wsgi.lai /usr/local/lib/httpd/modules/mod_wsgi.la
libtool: install: install src/server/.libs/mod_wsgi.a /usr/local/lib/httpd/modules/mod_wsgi.a
libtool: install: chmod 644 /usr/local/lib/httpd/modules/mod_wsgi.a
libtool: install: ranlib /usr/local/lib/httpd/modules/mod_wsgi.a
chmod 755 /usr/local/lib/httpd/modules/mod_wsgi.so

记住这句 

/usr/local/lib/httpd/modules/mod_wsgi.so

进入自己电脑上apache的目录

编辑httpd.conf

sudo vim httpd.conf

#翻到文件最下面
#这时候第一个打开的终端就有用啦!将刚才的结果复制过来
#就是这段,将第二句话中双引号扩起来的部分改成我刚刚让你们记住的那句话/usr/local/lib/httpd/modules/mod_wsgi.so记得去掉双引号(PS:别傻乎乎的复制我的啊!要把你们终端里打印出来的替换过来!!!)

LoadFile "/opt/anaconda3/lib/libpython3.7m.dylib" LoadModule wsgi_module "/opt/anaconda3/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-darwin.cpython-37m-darwin.so" WSGIPythonHome "/opt/anaconda3"

接下来保存退出文件

终端输入以下命令测试

sudo apachectl configtest

若结果为

Syntax OK

那么小伙汁/小姑凉,恭喜你!你成功啦!

那咱们就有缘再见叭~