virtualenv无法映射共享对象的段:权限被拒绝

当SELinx处于permissive ,Django webapp运行正常,没有警报。 一旦SELinux设置为强制执行,Apache错误日志中将出现以下错误,但不会向audit.loglogging警报。

 [wsgi:error] import psycopg2 as Database [wsgi:error] File "/mnt/data/venv/app/lib/python3.4/site-packages/psycopg2/__init__.py", line 50, in <module> [wsgi:error] from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID [wsgi:error] ImportError: /venv/app/lib/python3.4/site-packages/psycopg2/_psycopg.cpython-34m.so: failed to map segment from shared object: Permission denied 

系统运行CentOS 7,Apache httpd 2.4 2.4.6(已安装rpm),Python 3.4.2(已安装源代码),并安装了pip:mod_wsgi 4.4.5,virtualenv 12.0.5,psycopg2 2.5.4和Django 1.7。 2。

Django没有logging任何内容。

virtualenv目录的当前文件上下文types是httpd_sys_content_t

httpd_sys_script_exec_t似乎是要使用的最好的文件上下文types,只需要应用于涉及的共享对象文件。

 <virtualenv/path/>lib/python3.4/site-packages/psycopg2/_psycopg.cpython-34m.so‌​. 

作为超级用户或超级用户:

 semanage fcontext -a -t httpd_sys_script_exec_t </full-path-to-file/_psycopg.cpython-34m.so‌> restorecon -v </full-path-to-file/_psycopg.cpython-34m.so‌> 

上下文更改将通过重新启动和文件系统重新标记持续。

基于堆栈溢出这个错位的问题。