代码之家  ›  专栏  ›  技术社区  ›  Biboozz

Apache+Django+WSGI:页面不工作

  •  1
  • Biboozz  · 技术社区  · 7 年前

    我不明白为什么我的apache服务器不能工作。当我尝试连接到该地址时 http://bde.yggdrasil.cafe 对于opera,我有以下信息 This page isn't working bde.yggdrasil.cafe is currently unable to handle this request. 我不明白为什么。

    I启用 mod_wsgi /etc/httpd/conf/http.conf

    以下是我在主配置中导入的配置文件:

    $ cat  /etc/httpd/conf/extra/bdeweb.conf
    <VirtualHost *:80>
        # This is name based virtual hosting. So place an appropriate server name
        #   here. Example: django.devsrv.local
        ServerName  bde.yggdrasil.cafe
        ServerAdmin     my@email.fr
        DocumentRoot    /srv/http/bdeweb
    
        # This alias makes serving static files possible.
        #   Please note, that this is geared to our settings/common.py
        #   In production environment, you will propably adjust this!
        Alias /static/  /hdd/bdeweb/static
    
        # This alias makes serving media files possible.
        #   Please note, that this is geared to our settings/common.py
        #   In production environment, you will propably adjust this!
        Alias /media/   /srv/http/bdeweb/media
    
        # Insert the full path to the wsgi.py-file here
        WSGIScriptAlias /   /srv/http/bdeweb/bdewebsite/wsgi.py
    
    
    
        # PROCESS_NAME specifies a distinct name of this process
        #   see: https://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess
        # PATH/TO/PROJECT_ROOT is the full path to your project's root directory, 
        #   containing your project files
        # PATH/TO/VIRTUALENV/ROOT: If you are using a virtualenv specify the full
        #   path to its directory.
        #   Generally you must specify the path to Python's site-packages.
        #WSGIDaemonProcess   bdewebsite  python-path=/srv/http/bdeweb python-home=/usr/bin/python3
    
        # PROCESS_GROUP specifies a distinct name for the process group
        #   see: https://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIProcessGroup
        WSGIProcessGroup     bdewebsite
    
        <Directory /srv/http/bdeweb/bdewebsite>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>
    
        # Serving static files from this directory
        #   Please note, that this is geared to our settings/common.py
        #   In production environment, you will propably adjust this!
        <Directory /hdd/bdeweb/static>
            Require all granted
        </Directory>
    
        # Serving media files from this directory
        #   Please note, that this is geared to our settings/common.py
        #   In production environment, you will propably adjust this!
        <Directory /srv/http/bdeweb/media>
            Require all granted
        </Directory>
    
        LogLevel debug
    
        # PROJECT_NAME is used to seperate the log files of this application
        ErrorLog    ${APACHE_LOG_DIR}/bdeweb_error.log
        CustomLog   ${APACHE_LOG_DIR}/bdeweb_access.log combined
    </VirtualHost>
    

    我的服务器启动良好,没有任何错误:

    $ sudo systemctl restart httpd && systemctl -l status httpd
    * httpd.service - Apache Web Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
       Active: active (running) since Tue 2017-10-31 10:55:38 UTC; 51ms ago
      Process: 11938 ExecStop=/usr/bin/httpd -k graceful-stop (code=exited, status=0/SUCCESS)
     Main PID: 11943 (httpd)
        Tasks: 1 (limit: 4915)
       CGroup: /system.slice/httpd.service
               `-11943 /usr/bin/httpd -k start -DFOREGROUND
    
    Oct 31 10:55:38 Yggdrasil systemd[1]: Started Apache Web Server.
    

    我在日记中没有错误:

    $ journalctl -xe
    [...]
    -- Subject: Unit httpd.service has begun shutting down
    -- Defined-By: systemd
    -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
    -- 
    -- Unit httpd.service has begun shutting down.
    Oct 31 10:55:38 Yggdrasil systemd[1]: httpd.service: Killing process 11851 (httpd) with signal SIGKILL.
    Oct 31 10:55:38 Yggdrasil systemd[1]: httpd.service: Killing process 11852 (httpd) with signal SIGKILL.
    Oct 31 10:55:38 Yggdrasil systemd[1]: httpd.service: Killing process 11853 (httpd) with signal SIGKILL.
    Oct 31 10:55:38 Yggdrasil systemd[1]: httpd.service: Killing process 11854 (httpd) with signal SIGKILL.
    Oct 31 10:55:38 Yggdrasil systemd[1]: httpd.service: Killing process 11855 (httpd) with signal SIGKILL.
    Oct 31 10:55:38 Yggdrasil systemd[1]: httpd.service: Killing process 11908 (httpd) with signal SIGKILL.
    Oct 31 10:55:38 Yggdrasil systemd[1]: Stopped Apache Web Server.
    -- Subject: Unit httpd.service has finished shutting down
    -- Defined-By: systemd
    -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
    -- 
    -- Unit httpd.service has finished shutting down.
    Oct 31 10:55:38 Yggdrasil systemd[1]: Started Apache Web Server.
    -- Subject: Unit httpd.service has finished start-up
    -- Defined-By: systemd
    -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel
    -- 
    -- Unit httpd.service has finished starting up.
    -- 
    -- The start-up result is RESULT.
    Oct 31 10:55:38 Yggdrasil sudo[11935]: pam_unix(sudo:session): session closed for user root
    

    编辑1:我的错误日志也为空:

    $ cat /var/log/httpd/bdeweb_error.log
    $
    

    编辑2:如果我取消注释该行 WSGIDaemonProcess 我在apache错误日志中有以下错误:

     mod_wsgi (pid=12450): Target WSGI script '/srv/http/bdeweb/bdewebsite/wsgi.py' cannot be loaded as Python module.
     mod_wsgi (pid=12450): Exception occurred processing WSGI script '/srv/http/bdeweb/bdewebsite/wsgi.py'.
     Traceback (most recent call last):
       File "/srv/http/bdeweb/bdewebsite/wsgi.py", line 16, in <module>
         application = get_wsgi_application()
       File "/usr/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
         django.setup(set_prefix=False)
       File "/usr/lib/python3.6/site-packages/django/__init__.py", line 22, in setup
         configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
       File "/usr/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
         self._setup(name)
       File "/usr/lib/python3.6/site-packages/django/conf/__init__.py", line 41, in _setup
         self._wrapped = Settings(settings_module)
       File "/usr/lib/python3.6/site-packages/django/conf/__init__.py", line 110, in __init__
         mod = importlib.import_module(self.SETTINGS_MODULE)
       File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
         return _bootstrap._gcd_import(name[level:], package, level)
       File "<frozen importlib._bootstrap>", line 978, in _gcd_import
       File "<frozen importlib._bootstrap>", line 961, in _find_and_load
       File "<frozen importlib._bootstrap>", line 936, in _find_and_load_unlocked
       File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
       File "<frozen importlib._bootstrap>", line 978, in _gcd_import
       File "<frozen importlib._bootstrap>", line 961, in _find_and_load
       File "<frozen importlib._bootstrap>", line 948, in _find_and_load_unlocked
     ModuleNotFoundError: No module named 'bdewebsite'
    

    我做错了什么?

    解决方案

    我不得不搬走 python-home=/usr/bin/python3 从WSGIDaemonProcess开始,我更改了进程组的名称。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Biboozz    7 年前

    解决方案

    我不得不从WSGIDaemonProcess中删除python home=/usr/bin/python3,并更改了进程组的名称。