読者です 読者をやめる 読者になる 読者になる

シコウノキロク

思考・志向・試行・嗜好の記録

CentOS7にpython3を参照するdjango環境を構築(2/2)

自分なりに構築した際の覚書で、Ansible等で用いるためのメモでもあります。 なお、下記のコマンドは適宜sudoをつけて実行しています。よくわからない場合はrootユーザーでやればいいのですよ。

環境

前回のあらすじ

python3・mod_wsgiの導入、仮想環境の構築後、スクリプトにてpython3を使用してブラウザに表示させました。これらがまだの方は前回記事を参照ください。

shikouno.hatenablog.com

djangoの設定

まず、仮想環境内に入り、djangoでプロジェクトとappsを作成します。

cd

. test_django/bin/activate

cd /var/www/cgi-bin

django-admin startproject test_django

cd test_django

python manage.py startapp apps

ブラウザに表示させるviewsスクリプトを作成します。これも前回と同じく、djangoが参照しているpythonのバージョンを表示させます。

vi apps/views.py
from django.http import HttpResponse

import sys

def index(request):

     versions = sys.version_info

     output = str(versions).encode('utf-8')

     return HttpResponse(output)

作成したviews.pyをurlに紐づけます。appsとtest_djangoディレクトリ内のurls.pyを作成・編集します。

vi apps/urls.py
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]
vi test_django/urls.py
from django.conf.urls import url, include

from django.contrib import admin

 

urlpatterns = [

    url(r'^admin/', admin.site.urls),

    url(r'^$', include('apps.urls')),

]

次にwsgi.pyを編集します。仮想環境で使用している設定(site-packages)を参照しますので、パスを探してコピーしておくと楽です。

find / -name "site-packages"
  /home/user/django/lib/python3.5/site-packages

vi test_django/wsgi.py
import os, site, sys

site.addsitedir("/home/user/django/lib/python3.5/site-packages")

sys.path.append("/var/www/cgi-bin/test-django")
sys.path.append("/var/www/cgi-bin/test-django/test-django")

from django.core.wsgi import get_wsgi_application

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

最後に忘れてはいけないのが、設定ファイルのALLOWED_HOSTSです。開発サーバーでは設定しないので見落としがちですが、本番環境では必須項目です。 また、appsをインストールしたことを教えてあげます。

vi test_django/settings.py
ALLOWED_HOSTS = ['123.456.78.90']
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps',
]

apacheの設定

前回作成したtest_wsgi.conf(apacheファイル)を読み込まないようにします。末尾のconfを外せばokです。
そして新たにtest_django.confを作成・編集します。先ほどと同様、mod_wsgiのパスを探してコピーしておくと楽です。

mv /etc/httpd/conf.d/test_wsgi.conf /etc/httpd/conf.d/test_wsgi

find / -name "*mod_wsgi*"
  /home/user/django/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so

vi /etc/httpd/conf.d/test_django.conf
LoadModule wsgi_module /home/user/django/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so

WSGIPythonPath /var/www/cgi-bin/test_django

WSGIScriptAlias /test_django /var/www/cgi-bin/test_django/test_django/wsgi.py

<Directory /var/www/cgi-bin/test_django/test_django>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

その後、apacheを再起動して、設定したアドレスでpython3系のバージョンが表示されればokです!

systemctl restart httpd

http://123.456.78.90/test_django

sys.version_info(major=3, minor=5, micro=3, releaselevel='final', serial=0)

表示されない場合は、エラーログから原因を特定します。アタリの付け方は前回記事の最後に書いていますので参照してください。

less /var/log/httpd/error_log

表示が確認できたら、デバッグモードをオフにしておきましょう。

vi test_django/settings.py
DEBUG = False

https://docs.djangoproject.com/ja/1.10/intro/tutorial01/ http://akiniwa.hatenablog.jp/entry/2013/09/24/150412 http://stackoverflow.com/questions/40582423/invalid-http-host-header

以上です。この記事が皆さんのお役に立てれば幸いです。

広告を非表示にする