从来没用过Apache,配置wsgi的时候遇到了各种各样的问题。
1. 首先查看下自己Apache的配置,在terminal输入apachectl -V可以看到版本,安装目录等。os x 自带的Apache配置文件在private/etc/apache2/ 目录下;mod安装好都在/usr/libexec/apache2/ 目录下;log文件在/private/var/log/apache2/ 目录下。
2. 下载wsgi源文件:wsgi。下载完成后terminal进wsgi目录,./configure配置wsgi。配置完成make。在make的时候遇到报错,说是-bash: make: command not found. 这个原因是我升级了xcode, command line tools 需要重新安装下。 安装完command line tools继续make. 新的错误:env: /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc: No such file or directory apxs:Error: Command failed with rc=65536原因是因为安装了Mountain Lion系统后Xcode文件位置被动过了。建symlink可以解决:$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain
3. make 之后, sudo make install就完成安装了。之后可以查看mod目录里生成了mod_wsgi.so就说明安装好了。
4. 在httpd.conf里面加上LoadModule wsgi_module libexec/apache2/mod_wsgi.so。 重启apache, sudo apachectl restart。再去error_log里查看,可以看到Apache/2.2.22 (Unix) DAV/2 mod_wsgi/3.4 Python/2.7.2 mod_ssl/2.2.22 OpenSSL/0.9.8r configured -- resuming normal operations。 mod_wsgi成功load了。
5. 配置wsgi的document root.
WSGIScriptAlias /myapp /Applications/MAMP/htdocs/wsgi/myapp.wsgi
Order allow,deny
Allow from all
Alias后面第一个参数是url入口,后面一个参数就是本地文件入口。之后配置文件夹权限。就完成了。这里如果本地文件目录用的是users/xxxx下面的目录的话会有个权限的问题。Apache好像有admin group的权限,但是users/xxxx目录是staff group的权限。要么把users改成admin, 要么在配置文件中加
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User xxxx
Group staff
这样apache就会以staff的权限启动。
6. 进入http://127.0.0.1/myapp 就能看到hello world了。
7. 测试可以用这个wsgi:
def application(environ, start_response):status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
最后感谢下好基友cixining的帮忙。