2000815
@2000815 (Keishi Ichida)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

djangoアプリを公開したら500 Internal Server Error が出る

解決したいこと

djangoを使用してチャットアプリを作りました。
awsのamazon linuxを使用しています。
ローカルやrunserverでは動くのですが、Apacheを利用しての公開ができません。
500 Internal Server Errorというページが表示されてしまいます。
なぜApacheがうまく作動しないのでしょうか。
解決方法を教えて下さい。

Apacheの設定ファイルのmyproject.confです

(venv) [ec2-user@ip-172-31-29-71 ~]$ cd /etc/httpd/conf.d/
(venv) [ec2-user@ip-172-31-29-71 conf.d]$ vi myproject.conf

LoadModule wsgi_module /usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so

ServerName 3.142.247.107
WSGIScriptAlias / /home/ec2-user/keisi_aws/mysite/wsgi.py
WSGIPythonPath /home/ec2-user/venv/bin/python3

ErrorLog "logs/mysite-error_log"
CustomLog "logs/mysite-access_log" combined

Alias /static/ /home/ec2-user/keisi_aws/static/
<Directory /home/ec2-user/keisi_aws/bbs/templates/bbs>
Require all granted
</Directory>

<Directory /home/ec2-user/keisi_aws/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
~               

ディレクトリー構造

↑を確認ください

自分で試したこと

settings.pyやwsgi.pyを変更したりしました。

回答宜しくお願い致します。

0

3Answer

windowsの設定でよければ、参考にしてみてください

LoadModule wsgi_module /Python/Lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd
WSGIScriptAlias / c:/projectfolder/appfolder/wsgi.py
WSGIApplicationGroup %{GLOBAL}
WSGIPythonPath c:/projectfolder

Alias /static/ c:/projectfolder/appfolder/static/

<Directory c:/projectfolder/appfolder/static>
Require all granted
</Directory>
<Directory c:/projectfolder/appfolder>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

0Like

Comments

  1. @2000815

    Questioner

    コメントありがとうございます。
    参考にしてかき変えて見ましたが、だめでした。
    もしよかったら、ディレクトリー構造の添削をしていただけないでしょうか。
    宜しくお願い致します。

2点試してみてはいかがでしょうか?
◆ファイルパスの指定ミスについて(venvによるもの)
WSGIPythonPath /home/ec2-user/venv/bin/python3
⇨WSGIPythonPath はsite-packageのあるフォルダを指定すべきとマニュアルにあります。
正しくは、
/home/ec2-user/venv/bin/python3/site-packages

マニュアル
In mod_wsgi version 2.0, because directories corresponding to Python eggs are automatically added to sys.path, the directive can be used to point at the site-packages directory corresponding to a Python virtual environment created by a tool such as virtualenv.

◆下記、記載は多分いらないかと思います(パッとみた感じなので、間違えてたらすいません)
<Directory /home/ec2-user/keisi_aws/bbs/templates/bbs>
Require all granted
</Directory>

0Like

Comments

  1. @2000815

    Questioner

    すみません。解決しませんでした。
    service httpd status を実行しても Active: active (running)と表示され、
    service httpd configtest を実行しても Syntax OK と表示されました。
    他にチェック項目などはありますでしょうか。

お仕事だとDjango + gunicornとかなのでちょっとあまり詳しくはないのですが、コンソールなりログファイルなりにまずはログを出力するようにして、Djangoとかのエラー内容を出されると深堀りできていいかもしれません!(500 Internal Serverだと、Djangoの設定などでエラーが出ている可能性があるため、まずはページアクセス時などのログの詳細(Tracebackなど))が出るようにすることをお勧めします!

↓の記事などApacheではなくgunicornのものですが、似たような感じでログ出力の設定があるかなと・・・。

0Like

Comments

  1. @2000815

    Questioner

    コメントありがとうございます。
    参考にさせていただきました。解決はできませんでしたが、多くの学びがありました。
    ありがとうございます。

Your answer might help someone💌