在Linux上使用mod_wsgi时为什么会出错?

时间:2017-03-20 13:43:52

标签: django mod-wsgi apache-modules

我按照django教程和mod_wsgi安装指南在LinuxMint18.1上使用Apache和mod_wsg,但是当我运行apache2ctl start时出现错误。

Current thread 0x00007f88c10c7780 (most recent call first):
[Mon Mar 20 21:23:28.781270 2017] [core:notice] [pid 32458:tid 140225331099520] AH00052: child pid 7962 exit signal Aborted (6)
Fatal Python error: Py_Initialize: can't initialize sys

我有什么问题?

我按照以下步骤安装Apache和mod_wsgi:

  1. apt-get install apache2
  2. apt-get install apache2-dev
  3. apt-get install python3.5-dev
  4. wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.15.tar.gz
  5. tar -zxvf mod_wsgi-4.5.15.tar.gz
  6. cd mod_wsgi-4.5.15
  7. ./ configure --with-python = / usr / bin / python3.5
  8. 使
  9. make install
  10. ls /usr/bin/ -aoh |grep python的输出为:

    lrwxrwxrwx  1 root    26 3月  18 09:40 dh_pypy -> ../share/dh-python/dh_pypy
    -rwxr-xr-x  1 root  1.1K 12月 10  2015 dh_python2
    lrwxrwxrwx  1 root    29 3月  18 09:40 dh_python3 -> ../share/dh-python/dh_python3
    lrwxrwxrwx  1 root    23 3月  18 09:40 pdb2.7 -> ../lib/python2.7/pdb.py
    lrwxrwxrwx  1 root    23 3月  18 09:40 pdb3.5 -> ../lib/python3.5/pdb.py
    lrwxrwxrwx  1 root    31 3月  18 09:40 py3versions -> ../share/python3/py3versions.py
    lrwxrwxrwx  1 root    26 3月  18 09:40 pybuild -> ../share/dh-python/pybuild
    lrwxrwxrwx  1 root    18 3月  20 18:36 python -> /usr/bin/python2.7
    lrwxrwxrwx  1 root     9 3月  18 09:40 python2 -> python2.7
    -rwxr-xr-x  1 root  3.4M 11月 19 17:35 python2.7
    lrwxrwxrwx  1 root     9 3月  18 09:40 python3 -> python3.5
    -rwxr-xr-x  1 root  4.3M 11月 18 03:23 python3.5
    lrwxrwxrwx  1 root    33 11月 18 03:23 python3.5-config -> x86_64-linux-gnu-python3.5-config
    -rwxr-xr-x  1 root  4.3M 11月 18 03:23 python3.5m
    lrwxrwxrwx  1 root    34 11月 18 03:23 python3.5m-config -> x86_64-linux-gnu-python3.5m-config
    lrwxrwxrwx  1 root    10 3月  18 09:40 python3m -> python3.5m
    lrwxrwxrwx  1 root    29 3月  18 09:40 pyversions -> ../share/python/pyversions.py
    lrwxrwxrwx  1 root    34 11月 18 03:23 x86_64-linux-gnu-python3.5-config -> x86_64-linux-gnu-python3.5m-config
    -rwxr-xr-x  1 root  3.2K 11月 18 03:20 x86_64-linux-gnu-python3.5m-config
    

    /etc/apache2/apache2.conf

    LoadModule wsgi_module  /usr/lib/apache2/modules/mod_wsgi.so
    
    WSGIScriptAlias / /home/jeffrey/桌面/Workspace/django-env/hello_django/hello_django/wsgi.py
    WSGIPythonHome /home/jeffrey/桌面/Workspace/django-env
    WSGIPythonPath /home/jeffrey/桌面/Workspace/django-env/hello_django
    
    <Directory /home/jeffrey/桌面/Workspace/django-env/hello_django/hello_django>
    <Files wsgi.py>
    Require all granted
    </Files>
    </Directory>
    

    项目文件结构:

    django-env
    ├── hello_django
    │   ├── hello_django
    │   │   └── wsgi.py
    

1 个答案:

答案 0 :(得分:0)

我遇到了许多类似的问题,花了很多时间解决它们。最后,我写了以下指令来处理RHEL7。您可能正在使用Ubuntu,因此请阅读下面的配方并进行相应更改。这可能有所帮助。

Setup: RHEL 7, Apache 2.4, Python3.5
-------------------------------------------------------------------------
1. mod_wsgi--------------------------------------------------------------
-------------------------------------------------------------------------
See how I used my python3.5 interpreter to install mod_wsgi. 
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

-------------------------------------------------------------------------
2. conf file-------------------------------------------------------------
-------------------------------------------------------------------------
My website conf file in /etc/httpd/conf.d dir
portal.conf

LoadModule wsgi_module /usr/lib64/httpd/modules/mod_wsgi.so
<VirtualHost *:80>
  ServerAdmin admin@portal.com
  ServerName portal
  ServerAlias portal.com
  DocumentRoot /var/www/html/portal/src/

  WSGIDaemonProcess portal python-path=/var/www/html/portal/src:/var/www/html/portal/venv/lib/python3.5/site-packages
  WSGIApplicationGroup portal
  WSGIScriptAlias / /var/www/html/portal/src/portal/wsgi.py process-group=portal

  <Directory /var/www/html/portal/src>
    Require all granted
  </Directory>

  <Directory /var/www/html/portal/src/portal>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>

  Alias /static /var/www/html/portal/src/static
  <Directory /var/www/html/portal/src/static>
    Require all granted
  </Directory>

  Alias /static /var/www/html/portal/src/templates
  <Directory /var/www/html/portal/src/templates>
    Require all granted
  </Directory>

  Alias /static /var/www/html/portal/src/media
  <Directory /var/www/html/portal/src/media>
    Require all granted
  </Directory>

</VirtualHost>
-------------------------------------------------------------------------
Correct permissions on /var/www/html/------------------------------------
-------------------------------------------------------------------------
chgrp -R apache /var/www/html
find /var/www/html -type d -exec chmod g+rx {} +
find /var/www/html -type f -exec chmod g+r {} +

chown -R user1 /var/www/html/
find /var/www/html -type d -exec chmod u+rwx {} +
find /var/www/html -type f -exec chmod u+rw {} +

find /var/www/html -type d -exec chmod g+s {} +