sam*_*amb 10 apache2 python3 14.04
在 Ubuntu 14.04 上,使用安装了 libapache2-mod-wsgi-py3 包的 Apache2 会在 /var/log/apache2/error.log 中出现错误
重现的方法很简单:
sudo apt-get install apache2
sudo service apache2 restart
# /var/log/apache2/error.log is "clean"
sudo apt-get install libapache2-mod-wsgi-py3
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
/var/log/apache2/error.log 给出以下错误:
[Mon Jan 05 16:51:53.641332 2015] [:error] [pid 3141:tid 140703516379008] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Mon Jan 05 16:51:53.643563 2015] [:error] [pid 3141:tid 140703516379008] Traceback (most recent call last):
[Mon Jan 05 16:51:53.643633 2015] [:error] [pid 3141:tid 140703516379008] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Mon Jan 05 16:51:53.644350 2015] [:error] [pid 3141:tid 140703516379008] assert tlock is not None
[Mon Jan 05 16:51:53.643449 2015] [:error] [pid 3140:tid 140703516379008] Exception ignored in: <module 'threading' from '/usr/lib/python3.4/threading.py'>
[Mon Jan 05 16:51:53.644456 2015] [:error] [pid 3140:tid 140703516379008] Traceback (most recent call last):
[Mon Jan 05 16:51:53.644514 2015] [:error] [pid 3140:tid 140703516379008] File "/usr/lib/python3.4/threading.py", line 1288, in _shutdown
[Mon Jan 05 16:51:53.645052 2015] [:error] [pid 3140:tid 140703516379008] assert tlock is not None
[Mon Jan 05 16:51:53.645119 2015] [:error] [pid 3141:tid 140703516379008] AssertionError:
[Mon Jan 05 16:51:53.647513 2015] [:error] [pid 3140:tid 140703516379008] AssertionError:
Run Code Online (Sandbox Code Playgroud)
如何让它无错误地工作?
sam*_*amb 15
Ubuntu 14.04 带有 mod_wsgi 3.4。根据https://code.djangoproject.com/ticket/22948#comment:2我们需要为 Python 3.4 使用 mod_wsgi 4.2+ 版。
将 mod_wsgi 安装到最新版本的最佳方法是使用 pip(可以在 virtualenv 中)获取它,然后将其模块安装到 apache 系统范围内。在我的情况下,我使用 virtualenv 设置在/venv_path
.
1) 删除有问题的包并安装依赖
sudo apt-get remove libapache2-mod-wsgi-py3
sudo apt-get install apache2-dev
Run Code Online (Sandbox Code Playgroud)
2)使用pip在virtualenv中安装mod_wsgi
. /venv_path/bin/activate
pip install mod_wsgi
Run Code Online (Sandbox Code Playgroud)
3)安装到Apache(系统范围)
sudo /venv_path/bin/mod_wsgi-express install-module
sudo vi /etc/apache2/mods-available/wsgi_express.load /etc/apache2/mods-available/wsgi_express.conf
Run Code Online (Sandbox Code Playgroud)
内容 /etc/apache2/mods-available/wsgi_express.load
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi-py34.cpython-34m.so
Run Code Online (Sandbox Code Playgroud)
内容 /etc/apache2/mods-available/wsgi_express.conf
WSGIPythonHome /venv_path
Run Code Online (Sandbox Code Playgroud)
4) 启用模块并重启Apache。
sudo a2enmod wsgi_express
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
5)检查是否有错误 /var/log/apache2/error.log
归档时间: |
|
查看次数: |
11146 次 |
最近记录: |