AmazonのEC2インスタンスでサイトを公開しようとしていますが、500エラーが引き続き表示されます。なぜだかわからない。
//ログファイル
[Sun Feb 17 23:12:48.066802 2013] mod_wsgi (pid=2102): Target WSGI script '/srv/www/app/poka/Apache/wsgi.py' cannot be loaded as Python module.
[Sun Feb 17 23:12:48.066840 2013] mod_wsgi (pid=2102): Exception occurred processing WSGI script '/srv/www/app/poka/Apache/wsgi.py'.
[Sun Feb 17 23:12:48.066864 2013] Traceback (most recent call last):
[Sun Feb 17 23:12:48.066889 2013] File "/srv/www/mysite/poka/Apache/wsgi.py", line 26, in <module>
[Sun Feb 17 23:12:48.066920 2013] from Django.core.wsgi import get_wsgi_application
[Sun Feb 17 23:12:48.066945 2013] ImportError: No module named Django.core.wsgi
// Apache構成ファイル
WSGIScriptAlias / /srv/www/app/mysite/Apache/wsgi.py
WSGIDaemonProcess mysite python-path=/srv/www/app/mysite:/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages
WSGIProcessGroup mysite
<Directory /srv/www/app/mysite/Apache/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
<Directory /srv/www/app/mysite/Apache/>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/static>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/media>
Order deny,allow
Allow from all
</Directory>
//wsgi.py
import os
import sys
import site
site.addsitedir('/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages')
os.environ.setdefault("Django_SETTINGS_MODULE", "mysite.settings")
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
path = '/srv/www/app/mysite'
if path not in sys.path:
sys.path.append(path)
私はこれが古いスレッドであることを知っていますが、私は同じ問題にぶつかりました。これはパッケージの欠落が原因ではないと思います。 Django=コアディストリビューションにはすでに正しいwsgiハンドラが含まれています。
ここでの問題は、wsgi.pyを実行すると、virtualenvからsite-packagesのパッケージが欠落することです。 (virtualenvをアクティベートし、pip install Djangoを実行した場合、すべてが正常です。必要なDjangoパッケージ)があります。
私の関係では、Path/to/Project/Project/wsgi.pyファイルのsys.pathを変更する問題を修正しました。
プロジェクトディレクトリとvirtualenvサイトパッケージをsys.pathリストに追加する必要があります。これは私のプロジェクトに含まれるwsgi.pyファイルです(Django-admin.py start-projectで作成されたwsgi.pyについて)... Apacheで動作させるために修正する必要がありました
# =====================
# wsgi.py file begin
import os, sys
# add the hellodjango project path into the sys.path
sys.path.append('<PATH_TO_MY_Django_PROJECT>/hellodjango')
# add the virtualenv site-packages path to the sys.path
sys.path.append('<PATH_TO_VIRTUALENV>/Lib/site-packages')
# poiting to the project settings
os.environ.setdefault("Django_SETTINGS_MODULE", "hellodjango.settings")
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
# wsgi.py file end
# ===================
確認してください:
mod_wsgiをApacheモジュールに追加しました。dirmod_wsgiはOS、Apache、およびPython
mod_wsgiモジュールLoadModule wsgi_module modules/mod_wsgi.soをロードするために、ロードモジュールコマンドをhttpd.confに追加しました
設定済みDjango httpd.confの詳細またはhttpd.confに含めるconf
ドキュメントに基づいて 使用方法Django Apacheおよびmod_wsgiで
WSGIScriptAlias / <PATH_TO_PROJECT>/hellodjango/hellodjango/wsgi.py
WSGIPythonPath <PATH_TO_PROJECT>:<PATH_TO_VIRTUALENV>/Lib/site-packages
<Directory <PATH_TO_PROJECT>/hellodjango/hellodjango>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
お役に立てれば。それは私のために働いた。
これをApache構成ファイルに追加します。
WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
私にとって、これはDjangoがサーバーにインストールされていなかったことを示しています。
pip install Django
今、同様のエラーが発生しました。 Django=コードはpython 3.5で開発されましたが、何らかの理由で、サーバーをデプロイした人はpython 2.7。python 3.5で再デプロイし、すべてが機能しました
以下は私が受け取ったエラーメッセージです:
$ python serviceStartup.py
Traceback (most recent call last):
File "serviceStartup.py", line 10, in <module>
from Django.core.wsgi import get_wsgi_application
ImportError: No module named Django.core.wsgi
これが、同様のエラーメッセージが表示される場合に役立つことを願っています!
私の友人はすべてうまく設定しました。Apacheユーザーにプロジェクトと仮想環境の両方にアクセスする許可を与えるだけです。
例:
Sudo chown -R www-data:www-data /home/ubuntu/projects
Sudo chown -R www-data:www-data /home/ubuntu/virtualenv
これで、ImportError: No module named Django.core.wsgi
(virtualenvsフォルダー)およびImportError: No module named <project-name>.settings
(プロジェクトフォルダー)の問題が解決しました
一見したところ、英語がすみません。私もこの問題に直面し、「wsgi.py」ファイルを次のように変更することで解決しました。
import os import Django from Django.core.handlers.wsgi import WSGIHandler os.environ.setdefault( 「Django_SETTINGS_MODULE」、「eisentask.settings.production」) Django.setup(set_prefix = False) application = WSGIHandler()