OS X上apache2 + django(mod_wsgi)的适当文件系统权限

时间:2017-04-09 02:21:43

标签: django apache mod-wsgi

我在apache error.log中获得了大量的以下内容:

Current thread 0x00007fff730d2000 (most recent call first):
[Sat Apr 08 19:49:59.958559 2017] [core:notice] [pid 38953] AH00052: child pid 38968 exit signal Abort trap (6)
[Sat Apr 08 19:49:59.960853 2017] [wsgi:warn] [pid 38969] (13)Permission denied: mod_wsgi (pid=38969): Unable to stat Python home /Users/user/Documents/VirtualEnvs/securedash. Python interpreter may not be able to be initialized correctly. Verify the supplied path and access permissions for whole of the path.
Fatal Python error: Py_Initialize: unable to load the file system codec
ImportError: No module named 'encodings'

我已经根据google搜索的各种建议尝试了无数的文件系统权限和所有权组合,但到目前为止还没有任何工作。大约一个星期前我通过chmod -R 777 ~/进行了这项工作,我不想再这样做了。一旦意识到这是一个坏主意,我修复了我的主目录的权限,并被其他东西分心。既然我已经重新开始工作了,我就无法再次运行该应用了。那么apache需要什么权限1.我的virtualenv和2. django项目本身?我还需要其他任何区域才能访问我错过的apache吗?谢谢!

编辑重新安装mod_wsgi并从头开始设置virtualenv:

$ which python3
    /usr/local/bin/python3

$ virtualenv -p python3 secureDash
    Running virtualenv with interpreter /usr/local/bin/python3
    Using base prefix '/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5'
    New python executable in /Users/user/Documents/VirtualEnvs/secureDash/bin/python3.5
    Also creating executable in /Users/user/Documents/VirtualEnvs/secureDash/bin/python
    Installing setuptools, pip, wheel...done.

(secureDash) user VirtualEnvs $ python --version
    Python 3.5.2

(secureDash) user VirtualEnvs $ pip --version
    pip 9.0.1 from /Users/user/Documents/VirtualEnvs/secureDash/lib/python3.5/site-packages (python 3.5)

$ ./configure --with-python=/usr/local/bin/python3
    checking for apxs2... no
    checking for apxs... /usr/sbin/apxs
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables...
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking for prctl... no
    checking Apache version... 2.4.18
    configure: creating ./config.status
    config.status: creating Makefile

$ make
    ./apxs -c -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -Wc,-g -Wc,-O2  -Wc,'-arch x86_64' src/server/mod_wsgi.c src/server/wsgi_*.c -L/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/lib -L/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/config-3.5m  -arch x86_64 -lpython3.5 -ldl  -framework CoreFoundation
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/mod_wsgi.lo src/server/mod_wsgi.c && touch src/server/mod_wsgi.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_apache.lo src/server/wsgi_apache.c && touch src/server/wsgi_apache.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_buckets.lo src/server/wsgi_buckets.c && touch src/server/wsgi_buckets.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_convert.lo src/server/wsgi_convert.c && touch src/server/wsgi_convert.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_daemon.lo src/server/wsgi_daemon.c && touch src/server/wsgi_daemon.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_interp.lo src/server/wsgi_interp.c && touch src/server/wsgi_interp.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_logger.lo src/server/wsgi_logger.c && touch src/server/wsgi_logger.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_memory.lo src/server/wsgi_memory.c && touch src/server/wsgi_memory.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_metrics.lo src/server/wsgi_metrics.c && touch src/server/wsgi_metrics.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_restrict.lo src/server/wsgi_restrict.c && touch src/server/wsgi_restrict.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_server.lo src/server/wsgi_server.c && touch src/server/wsgi_server.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_stream.lo src/server/wsgi_stream.c && touch src/server/wsgi_stream.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_thread.lo src/server/wsgi_thread.c && touch src/server/wsgi_thread.slo
    ./libtool --silent --mode=compile /usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.Internal.sdk/usr/include/apr-1  -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -arch x86_64 -I/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/include/python3.5m -DNDEBUG  -c -o src/server/wsgi_validate.lo src/server/wsgi_validate.c && touch src/server/wsgi_validate.slo
    ./libtool --silent --mode=link /usr/bin/cc    -o src/server/mod_wsgi.la  -rpath /usr/libexec/apache2 -module -avoid-version    src/server/wsgi_validate.lo src/server/wsgi_thread.lo src/server/wsgi_stream.lo src/server/wsgi_server.lo src/server/wsgi_restrict.lo src/server/wsgi_metrics.lo src/server/wsgi_memory.lo src/server/wsgi_logger.lo src/server/wsgi_interp.lo src/server/wsgi_daemon.lo src/server/wsgi_convert.lo src/server/wsgi_buckets.lo src/server/wsgi_apache.lo src/server/mod_wsgi.lo -L/usr/local/opt/python3/Frameworks/Python.framework/Versions/3.5/lib -L/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/config-3.5m -arch x86_64 -lpython3.5 -ldl -framework CoreFoundation

$ sudo make install LIBEXECDIR=/usr/local/httpd/modules
Password:
    ./apxs -i -S LIBEXECDIR=/usr/local/httpd/modules -n 'mod_wsgi' src/server/mod_wsgi.la
    /usr/share/httpd/build/instdso.sh SH_LIBTOOL='./libtool' src/server/mod_wsgi.la /usr/local/httpd/modules
    ./libtool --mode=install install src/server/mod_wsgi.la /usr/local/httpd/modules/
    libtool: install: install src/server/.libs/mod_wsgi.so /usr/local/httpd/modules/mod_wsgi.so
    libtool: install: install src/server/.libs/mod_wsgi.lai /usr/local/httpd/modules/mod_wsgi.la
    libtool: install: install src/server/.libs/mod_wsgi.a /usr/local/httpd/modules/mod_wsgi.a
    libtool: install: chmod 644 /usr/local/httpd/modules/mod_wsgi.a
    libtool: install: ranlib /usr/local/httpd/modules/mod_wsgi.a
    libtool: install: warning: remember to run `libtool --finish /usr/libexec/apache2'
    chmod 755 /usr/local/httpd/modules/mod_wsgi.so

1 个答案:

答案 0 :(得分:0)

我通过从符号链接的目录中删除我的项目来解决这个问题。正如我在上面的上一条评论中所提到的,我的项目位于我的iCloud目录中,所以我的所有机器都可以轻松访问它,直到我在github上完成项目。要更轻松地访问iCloud目录, 我设置了一个符号链接:

~/icloud -> Library/Mobile Documents/com~apple~CloudDocs/

过了一会儿,我注意到上面报告的错误中存在以下错误:

AH00037: Symbolic link not allowed or link target not accessible: /Users/user/icloud

所以,一旦我在github上获得了我的项目,我将其拉入~/projects并将我的apache配置指向正确的位置并开始工作。

可能还有其他一些解决办法让apache遵循符号链接,但经过一些调查后,这似乎比将项目移动到apache可以遵循的常规目录更困难。