2019年10月29日火曜日

CentOS7でDjangoとApache連携


CentOS7でDjangoとApache連携させて公開サイトにしようとしたら3日ほどもかかってしまいました...

1.CentOS7にPython2.7とは別途にPython3.7をインストール
これはわりとすなおにインストールできた。
参考:CentOS7にPython3.7をインストールする - Narito Blog
https://narito.ninja/blog/detail/20/

2.venv環境で mod_wsgi をインストール
これはインストールできなくて試行錯誤した。

3.以下のようなエラーでどうしても接続できない。
mod_wsgi: Exception occurred processing WSGI script '/var/www/python/myproject/mysite'
・・・
ModuleNotFoundError: No module named 'mysite'
(/var/log/httpd/error_logより)

最終的に以下をみつけて解決しました。

Python 3 + mod_wsgi + Django - おっさんプログラマの戯れ言
https://unk-pizza.hatenadiary.org/entry/20170601/p1

$ vim /var/www/python/myproject/mysite/wsgi.py

import os
import sys  # 追加

from django.core.wsgi import get_wsgi_application

sys.path.append('/var/www/python/myproject')          # 追加 sys.path.append('/var/www/python/myproject/mysite')   # 追加

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test_site.settings")

application = get_wsgi_application()
os.environ.setdefault(・・・)を追加しろというサイトはあったのですが、ファイル末尾に追加してまったく効果がなくて、上記サイトをみてそのとおりに位置を替えたところOKとなりました。

4.DBが開けない
公開URLにしたらDBが開けない Unable to open database というエラーが発生。DBファイルへのパス設定が問題でした。

5.最後に静的ファイルの設定
このままだとCSSファイルやJSファイルを読み込んでくれないので、くずれた表示になります。
まず
$ python manage.py collectstatic
で静的ファイルを/STATIC/ディレクトリに集めます。

次に以下を参考にSTATICとMEDIAディレクトリをApacheで配信できるようにします。

静的ファイルのデプロイ

ファイルを配信する

以上です。

0 件のコメント:

コメントを投稿