【问题标题】:How to resolve "Internal server error" using mod_wsgi with web.py如何使用带有 web.py 的 mod_wsgi 解决“内部服务器错误”
【发布时间】:2013-10-16 04:44:09
【问题描述】:

我正在尝试配置 mod_wsgi 以使用简单的 web.py python 脚本。我遵循了这本食谱:http://webpy.org/cookbook/mod_wsgi-apache

每次我去https://<server>/appname/ chrome 都会说Internal Server Error

这是我的配置详情:

在 httpd.conf 我有

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias /appname /var/www/webpy-app/cody.py/
Alias /appname /var/www/webpy-app/static/
AddType text/html .py

<Directory /var/www/webpy-app/>
  Order deny,allow
  Allow from all
</Directory>

<Location /appname>
AuthType Basic
AuthName "Authenication Required"
AuthUserFile "/etc/httpd/conf/some_sample_users"
</Location>

代码如下:

  import web

  urls = (
      '/.*', 'hello',
      )

  class hello:
      def GET(self):
          return "Hello, world."

  application = web.application(urls, globals()).wsgifunc()

我检查了错误日志,但没有找到太多内容:

[Wed Oct 09 02:24:50 2013] [notice] caught SIGTERM, shutting down
[Wed Oct 09 02:24:55 2013] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Wed Oct 09 02:24:55 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Wed Oct 09 02:24:55 2013] [warn] module wsgi_module is already loaded, skipping
[Wed Oct 09 02:24:55 2013] [notice] Digest: generating secret for digest authentication ...
[Wed Oct 09 02:24:55 2013] [notice] Digest: done
[Wed Oct 09 02:24:55 2013] [notice] Apache/2.2.15 (Unix) mod_wsgi/3.2 Python/2.6.6 DAV/2 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

我需要进行哪些修改才能使其正常工作?

【问题讨论】:

    标签: python apache mod-wsgi web.py


    【解决方案1】:

    我关注this tutorial,这是在没有 .htaccess 的情况下运行 web.py 的完整步骤, 但请记住,当您复制粘贴 python 代码时,您必须注意缩进,因为它也会显示内部服务器错误。这就是 httpd.conf 的样子

    <VirtualHost _default_ *:80> 
    ServerAdmin admin@project.com 
    DocumentRoot /var/www/project.com/public_html/ 
    ErrorLog /var/www/project.com/logs/error.log 
    CustomLog /var/www/project.com/logs/access.log combined  
    WSGIScriptAlias / /var/www/project.com/production/main.py 
    Alias /static /var/www/project.com/public_html 
    AddType text/html .py 
    WSGIDaemonProcess www-data threads=15 
    WSGIProcessGroup www-data  
        <Directory /var/www/project.com/production/> 
            Order deny,allow 
            Allow from all 
            Options +FollowSymLinks 
            Options -Indexes 
        </Directory>      
    </VirtualHost>
    

    以 main.py 作为索引文件

    【讨论】:

      【解决方案2】:

      一开始就错了:

      WSGIScriptAlias /appname /var/www/webpy-app/cody.py/
      Alias /appname /var/www/webpy-app/static/
      

      Alias 指令优先于 WSGIScriptAlias。您将它们用于相同的安装点,因此 Alias 获胜。我建议先注释掉 Alias。

      除此之外,在子 URL 上挂载时,第二个参数而不是第一个参数带有斜杠可能会导致问题。使用:

      WSGIScriptAlias /appname /var/www/webpy-app/cody.py
      

      下一个问题是:

      [Wed Oct 09 02:24:55 2013] [warn] module wsgi_module is already loaded, skipping
      

      这表明你有:

      LoadModule wsgi_module modules/mod_wsgi.so
      

      在 Apache 配置的不同位置列出了两次,或者您设法包含了两次列出的配置文件。

      首先解决这些问题,然后使用更新的信息编辑您的问题。

      【讨论】:

      • 修复这些会带来更多相关的答案。我使用 yum 安装了 mod_wsgi,但是,它使用了默认的 python2.6。现在我需要删除它并从源代码安装 mod_wsgi 以便它可以使用 python2.7
      猜你喜欢
      • 1970-01-01
      • 2022-10-08
      • 2023-01-09
      • 2011-08-08
      • 2012-08-19
      • 1970-01-01
      • 2013-11-22
      • 2020-04-18
      • 2021-05-14
      相关资源
      最近更新 更多