2017-04-02 56 views
0

我很努力爲django運行apache2服務器。我想嘗試gunicorn,但正如我期望更頻繁地將apache安裝在工作場所中,所以我會堅持下去。 問題目前存在(我認爲)在從apache error.log摘錄中可見的導入錯誤。我已經嘗試了很多可能的配置,並且在它沒有導入django之前。我正在使用虛擬環境。 django的開發人員服務器對於應用程序和數據庫都很好。Django與apache2 mod_wsgi問題,_sql導入錯誤

1 [Sun Apr 02 20:58:52.082706 2017] [wsgi:warn] [pid 13495] mod_wsgi: Compiled for Python/3.4.2rc1+.          
    2 [Sun Apr 02 20:58:52.082907 2017] [wsgi:warn] [pid 13495] mod_wsgi: Runtime using Python/3.4.2.           
    3 [Sun Apr 02 20:58:52.104626 2017] [mpm_prefork:notice] [pid 13495] AH00163: Apache/2.4.10 (Raspbian) mod_wsgi/4.3.0 Python/3.4.2 configu red -- resuming normal operations                          
    4 [Sun Apr 02 20:58:52.104798 2017] [core:notice] [pid 13495] AH00094: Command line: '/usr/sbin/apache2'         
    5 [Sun Apr 02 21:00:18.727276 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0] mod_wsgi (pid=13499): Target WSGI script '/home/pi/d jangoProjects/pidjay/pidjay/wsgi.py' cannot be loaded as Python module.                 
    6 [Sun Apr 02 21:00:18.727660 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0] mod_wsgi (pid=13499): Exception occurred processing  WSGI script '/home/pi/djangoProjects/pidjay/pidjay/wsgi.py'.                    
    7 [Sun Apr 02 21:00:18.727938 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0] Traceback (most recent call last):     
    8 [Sun Apr 02 21:00:18.729807 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0] File "/home/pi/djangoProjects/pidjay/venv/lib/pyth on3.5/site-packages/django/db/backends/mysql/base.py", line 25, in <module>                
    9 [Sun Apr 02 21:00:18.729866 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0]  import MySQLdb as Database      
10 [Sun Apr 02 21:00:18.730794 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0] File "/home/pi/djangoProjects/pidjay/venv/lib/pyth on3.5/site-packages/MySQLdb/__init__.py", line 19, in <module>                   
11 [Sun Apr 02 21:00:18.730848 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0]  import _mysql         
12 [Sun Apr 02 21:00:18.731024 2017] [wsgi:error] [pid 13499] [remote 192.168.1.106:0] ImportError: No module named '_mysql' 

現在從網站可用的文件夾中的配置:

<Directory /home/pi/djangoProjects/pidjay/pidjay> 
    <Files wsgi.py> 
     Require all granted 
    </Files> 
</Directory> 

WSGIDaemonProcess pidjay python-path=/home/pi/djangoProjects/pidjay:/home/pi/djangoProjects/pidjay/venv/lib/python3.5/site-packages 
WSGIProcessGroup pidjay 
WSGIScriptAlias//home/pi/djangoProjects/pidjay/pidjay/wsgi.py 

,你可以看到我指定的虛擬文件夾的env用冒號,其他方式造成的Django是不可能的進口。環境中的python版本是3.5(檢查兩次),安裝了sqlclient和django。當我嘗試在venv(激活)內的python解釋器中導入「_mysql」時,它工作得很好。

這是從項目的settings.py數據庫設置:

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': "pidjay", 
    "USER": "user", 
    "PASSWORD": "password" 
}} 

我說過它的工作原理開發服務器上。請提前幫助我,並且非常感謝您!我會很高興提供任何其他信息!

+0

您的mod_wsgi是爲Python 3.4編譯的。你的Python虛擬環境是Python 3.5。你不能混用這樣的版本。使用Python 3.4重新創建Python虛擬環境,或重新安裝mod_wsgi,以便爲Python 3.5編譯。 –

+0

這是對的!非常感謝你,在日誌中沒有發現! – Nullbyte

回答

0

如上所述,這是一種方法。

wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.14.tar.gz 
tar -zxvf 4.5.14.tar.gz 
cd mod_wsgi-4.5.14 
./configure --with-python=/usr/bin/python3.5 
make 
make install 
chmod 755 /usr/lib64/httpd/modules/mod_wsgi.so 
0

問題出在版本不匹配,因爲格雷厄姆好心指出。在官方文檔的幫助下編譯python 3.5的mod_wsgi並加載到Apache後,它按預期工作。

相關問題