首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mod_wsgi:无法统计Python和ImportError:没有名为“编码”的模块

mod_wsgi:无法统计Python和ImportError:没有名为“编码”的模块
EN

Stack Overflow用户
提问于 2016-09-16 10:45:40
回答 1查看 12.6K关注 0票数 10

我试图在Apache2.4上使用Django和Python3.5.2上的mod_wsgi构建一个网站。但是,当apache守护进程httpd启动时,下面的错误消息将输出到/var/log/httpd/ error _log上。

2016年5月16日17:44:57.145900 pid 20593权限被拒绝: mod_wsgi (pid=20593):无法统计Python / home /EC2-user/..pyenv/version/3.5.2。Python解释器可能无法正确初始化。验证整个path.Fatal Py_Initialize错误的提供路径和访问权限: Py_Initialize:无法获得区域设置encodingImportError:没有名为“编码”的模块

因此,我探讨了一些关于类似问题的文章。

但上述错误消息的原因尚未解决。

请注明要核对的要点或阅读的文件等。

我的开发环境如下。

(1)主机和操作系统

  • 托管服务: Amazon EC2
  • 操作系统:版本2016.03

(2) Django项目

我在目录/home/ec2-user/django-sites中创建了名为testprj的Django项目,它的用户帐户为ec2- user

代码语言:javascript
复制
[ec2-user@MyEC2 django-sites]$ pwd
/home/ec2-user/django-sites
[ec2-user@MyEC2 django-sites]$ ls -l
total 4
drwxrwxr-x 3 ec2-user ec2-user 4096 Sep 16 14:50 testprj

testprj使用的数据库已经设置好了。因此,Django提供的开发服务器是成功启动的,没有如下所示的错误。

代码语言:javascript
复制
[ec2-user@MyEC2 testprj]$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
September 16, 2016 - 14:23:47
Django version 1.10.1, using settings 'testprj.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

(3) Python环境

我用pyenv install 3.5.2安装了Python3.5.2。然后我设置了pyenv virtualenv 3.5.2 django-sites。我将/home/ec2-user/django-站点的本地设置为env django-sites,如下所示。

代码语言:javascript
复制
[ec2-user@MyEC2 django-sites]$ pwd
/home/ec2-user/django-sites
[ec2-user@MyEC2 django-sites]$ pyenv versions
  system
  3.5.2
  3.5.2/envs/django-sites
* django-sites (set by /home/ec2-user/django-sites/.python-version)
[ec2-user@MyEC2 django-sites]$ python -V
Python 3.5.2

我通过pip命令安装了以下模块。

代码语言:javascript
复制
[ec2-user@MyEC2 django-sites]$ pwd
 /home/ec2-user/django-sites
[ec2-user@MyEC2 django-sites]$ pip list
configparser (3.5.0)
Django (1.10.1)
mod-wsgi (4.5.7)
pip (8.1.2)
PyMySQL (0.7.9)
setuptools (27.2.0)

(4)网络服务器

我使用的服务器是Apache2.4,如下所示。

代码语言:javascript
复制
[ec2-user@MyEC2 ~]$ httpd -v
Server version: Apache/2.4.23 (Amazon)
Server built:   Jul 29 2016 21:42:17

Apache用户和执行apache组都是/etc/httpd/conf/httpd.conf中的下一行

代码语言:javascript
复制
User apache
Group apache 

(5) Django项目testprj的附加conf文件

我打算配置这样的URL

代码语言:javascript
复制
http://[MyEC2 domain]/testprj/

可以访问位于/home/ec2-user/ Django -site/testprj的django项目的顶层。

上面的MyEC2 2域类似于

代码语言:javascript
复制
ec2-XX-XX-XX-XX.us-west-2.compute.amazonaws.com

所以,我用testprj.conf/etc/httpd/conf.d中写了下面的内容。

代码语言:javascript
复制
[ec2-user@MyEC2 conf.d]$ pwd
/etc/httpd/conf.d
[ec2-user@MyEC2 conf.d]$ cat -n testprj.conf 
代码语言:javascript
复制
 1  LoadModule wsgi_module /home/ec2-user/.pyenv/versions/django-sites/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so
 2  
 3  WSGIPythonHome /home/ec2-user/.pyenv/versions/3.5.2
 4  WSGIScriptReloading On
 5  WSGIScriptAlias  /testprj/ /home/ec2-user/django-sites/testprj/testprj/wsgi.py
 6  WSGIPythonPath /home/ec2-user/django-sites/testprj:/home/ec2-user/.pyenv/versions/django-sites/lib/python3.5/site-packages
 7  
 8  <VirtualHost *:80>
 9  
10    ServerName http://ec2-XX-XX-XX-XX.us-west-2.compute.amazonaws.com
11    SuexecUserGroup apache apache
12  
13    <Directory /home/ec2-user/django-sites/testprj/testprj>
14      <Files wsgi.py>
15      Require all granted
16      </Files>
17    </Directory>
18  
19    Alias /static/ "/home/ec2-user/django-sites/testprj/static/"
20  
21    <Directory /home/ec2-user/django-sites/testprj/static>
22      <Files *>
23      Require all granted
24      </Files>
25    </Directory>
26  
27  </VirtualHost>
28  
代码语言:javascript
复制
[ec2-user@MyEC2 conf.d]$

诚挚的问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-16 11:44:57

有几件事要检查。

  • 默认情况下,pyenv工具不使用共享库安装Python。这可能会导致问题,因为mod_wsgi需要一个共享库。您需要显式地告诉pyenv使用共享库构建Python。
  • 许多Linux系统上的主目录对其他用户来说是不可读的。当mod_wsgi被初始化时,它将作为Apache用户运行,并且无法在主目录中看到。当mod_wsgi模块作为根用户运行时,Apache加载该模块时不存在任何问题。

您的配置还有其他问题,没有遵循最佳实践,但是上面的问题,特别是第二项可能是问题的原因。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39529574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档