最近两天做了一个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
那么小伙汁/小姑凉,恭喜你!你成功啦!
那咱们就有缘再见叭~