1

を使用してアプリケーションをapache実行しようとすると、エラー ログ ファイルにこのエラーが記録されます。共有ホスティングに正常にインストールされ、ローカルにインポートできることを確認できます。web.pymod_wsgiweb.py

>>> import web
>>> web.application(('/', 'test'), globals())
<web.application.application instance at 0x1f8d3b0>

また、組み込みサーバーを実行して、サイトにページを正常に提供することもできます。

アプリの手動コーディングを使用してページを提供できるため、mod_wsgiモジュールも機能していることを確認できます。apachewsgi

ドキュメントhttp://webpy.org/install#apachemodwsgiImportError: No module named webのエラーメッセージに対して推奨される方法を試しました。つまり、次を追加します。web.py

abspath = os.path.dirname(__file__)
sys.path.append(abspath)
os.chdir(abspath)

import web

Fileshttp.conf ファイルで提案されているタグも追加しましたが、htdocsディレクトリが既にセットアップされているため、冗長に見えますが、とにかく。私のhttpd.confファイルは以下のとおりです。Apache を再起動しましたが、まだインポート エラー メッセージが表示されます。

ServerRoot "/home/usr1/webapps/test/apache2"

LoadModule dir_module        modules/mod_dir.so
LoadModule env_module        modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module       modules/mod_mime.so
LoadModule rewrite_module    modules/mod_rewrite.so
LoadModule setenvif_module   modules/mod_setenvif.so
LoadModule wsgi_module       modules/mod_wsgi.so

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/usr1/webapps/test/logs combined
DirectoryIndex index.py
DocumentRoot /home/usr1/webapps/test/htdocs
ErrorLog /home/usr1/webapps/test/apache2/logs/error_test.log
KeepAlive Off
Listen 21708
MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 1
SetEnvIf X-Forwarded-SSL on HTTPS=1
ThreadsPerChild 5
WSGIDaemonProcess test processes=5 python-path=/home/usr1/webapps/test/lib/python3.1 threads=1
WSGIProcessGroup test
WSGIRestrictEmbedded On
WSGILazyInitialization On

<Directory /home/usr1/webapps/test/htdocs>
    AddHandler wsgi-script .py
</Directory>

<Files /home/usr1/webapps/test/htdocs/index.py>
   SetHandler wsgi-script
   Options ExecCgi FollowSymLinks
</Files>
4

1 に答える 1

1

まず第一に、Apache mod_wsgi は web.py でサポートされていない python 3 でコンパイルされているようです。

あなたのApache confは、私がWebfactionで持っているものとよく似ているようです.python 2.7でmod_wsgiのインストーラーがある場合は、python 3の代わりにそれを選択する必要があります.

これは私の典型的なconfがどのように見えるかです:

ServerRoot "/home/username/webapps/projectname/apache2"

LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module       modules/mod_mime.so
LoadModule rewrite_module    modules/mod_rewrite.so
LoadModule alias_module modules/mod_alias.so
LoadModule wsgi_module       modules/mod_wsgi.so

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/username/logs/user/access_projectname.log combined
ErrorLog /home/username/logs/user/error_projectname.log
KeepAlive Off
Listen 21708
MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 1
WSGIPythonOptimize 2
ThreadsPerChild 5
WSGIDaemonProcess projectname processes=5 threads=1
WSGIPythonHome /home/username/lib/python2.7 # your python home dir where libraries are installed
WSGIProcessGroup projectname
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /home/username/webapps/projectname/htdocs/code.py/
Alias /static /home/username/webapps/projectname/htdocs/static

これは code.py の例です

#!/usr/bin/env python
import os
import sys
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
from app import app

if __name__ == "__main__":
    app.run()
else:
    application = app.wsgifunc()
于 2013-01-27T21:37:10.513 に答える