ホーム >  VPS >  ConoHaのVPSにDjango環境を作る

投稿日:   |  最終更新日:

ConoHaのVPSにDjango環境を作る

VPS

ConoHaVPSDjangoをインストールし、WEBアプリケーションを作ります。

Djangoとは?

Djangoは、PythonのフルスタックなWEBフレームワークです。米国の地方新聞のシステムを構築するために開発され、2005年にオープンソースとなりました。現在は、Django Software Foundationという非営利団体が中心に開発を勧めいています。およそ9ヶ月単位で安定版がリリースされます。

※目標は、Apache + mod_wsgi + Djangoという形式のWEBアプリケーションです。

Djangoの開発ロードマップ

リリース予定やサポート情報を確認できるサイトです。Djangoは、今後も継続して開発・メンテナンスが行われる予定ですので、安心して使えるフレームワークです。

News & Events

準備

以下の準備を行います。

①ConoHaをレンタルします。

ConoHaVPSをレンタルしてみる

②ConoHaにroot以外のユーザを作ります。

ConoHaのroot以外のユーザを作る

③ConoHaにSSH接続するための設定を行います。

ConoHaのSSH接続

④ConoHaへのrootログインを禁止します。

rootからのログインを禁止

⑤ConoHaのportを22から変更します。

SSH接続するportを22から変更

⑥ConoHaVPSへApacheをインストールしてスタートページを表示します。

ConoHaのVPSにApacheインストール

⑥ConoHaVPSへPython3をインストールします。

ConoHaのVPSにPython3環境を作る

⑦ConoHaVPSへPython3をインストールします。

ConoHaのVPSにPython3環境を作る

⑧ConoHaVPSへWSGIをインストールします。

ConoHaのVPSにApacheでPythonWebアプリを作る(WSGI)

必要なもの

レンタルサーバ ConoHaのVPSサーバ
独自ドメイン ムームードメインで、独自ドメインのみ取得。2年契約で(2,000〜3,000円)くらい?

ConoHaVPSの環境

アプリケーションサーバ OS CentOS7.4
Apache 2.4.6 (CentOS)
Python 3.6.4
mod-wsgi 4.5.24
Django 2.0.2

クライアントPC

操作開発用のクライアントPCを用意します。windowsでもmacでも可能ですが、今回はubuntuを利用します。

OS Ubuntu 16.04.1 LTS 64bit

Djangoをインストール

Apacheを利用しますので、「mod_wsgi」パッケージをインストールします。

①VPSにログインします。

前回作った仮想環境を起動します。

cd
. test_django/bin/activate

※sudo権限のあるroot以外のユーザで仮想環境をログインして下さい。

③djangoをpipでインストールします。

pip install django

Djangoのバージョンを確認します。

pip freeze

 Django==2.0.2

djangoの設定

そのまま仮想環境に入ったまま作業します。

①djangoでプロジェクトとappsを作成します。

cd /var/www/cgi-bin
django-admin startproject test_django
cd test_django
python manage.py startapp apps
プロジェクト名 test_django
アプリケーション名 apps

②ブラウザに表示させるviewsを編集します。

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'),
]

④test_djangoのディレクトリ内のurls.pyを編集します。

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)をDjangoから参照します。パスを探してコピーします。

find / -name "site-packages"

  /home/username/test_django/lib64/python3.6/site-packages

⑥「/home/username」ディレクトリ以下のアクセス権を変更します。

sudo chmod 755 /home/username/

WSGIの設定ファイルから、pyvenv仮想環境にあるサイトパッケージを読み込みます。「/home/username」ディレクトリ以下のアクセス権を変更しないと、Djangoモジュールが読み込まれず、以下のようなエラーが発生します。

ModuleNotFoundError: No module named ‘django’

⑦WSGIを編集します。

vi test_django/wsgi.py

以下のように記述します。

import os, site, sys

site.addsitedir("/home/username/test_django/lib64/python3.6/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")

application = get_wsgi_application()

⑧設定ファイルのALLOWED_HOSTSです。また、appsをインストールしたことを教えてあげます。

※本番環境では必須項目です。

vi test_django/wsgi.py

以下のように記述します。

〜省略〜

ALLOWED_HOSTS = ['*']

〜省略〜

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps',
]

Apacheの設定

①前回作成したwsgi.conf(apacheファイル)を読み込まないようにします。

mv /etc/httpd/conf.d/wsgi.conf  /etc/httpd/conf.d/wsgi

※末尾のconfを外せばokです。

②前回作成したwsgi.conf(apacheファイル)を読み込まないようにします。

mv /etc/httpd/conf.d/wsgi.conf  /etc/httpd/conf.d/wsgi

※末尾のconfを外せばokです。

③mod_wsgiのパスを探してコピーします。

 find / -name "*mod_wsgi*"

/home/username/test_django/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so

④新たにtest_django.conf(Apacheの設定ファイル)を作成・編集します。

vi /etc/httpd/conf.d/test_django.conf

以下のように記述します。

LoadModule wsgi_module /home/username/test_django/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-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_django1>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

⑤Apacheを再起動します。

sudo systemctl restart httpd

⑦以下のURLでアクセスします。

http://VPSのグローバルIPアドレス/test_django

OR

http://VPSに設定した独自ドメイン/test_django

pythonのバージョンがsystemで使用されている2系ではなく、3系が表示されていれば成功です。

エラーが出てしまったら

表示されない場合は、エラーログから原因を特定します。”アタリ”をつけるには、ログのエラー内容を検索しましょう。

less /var/log/httpd/error_log

次回

次回はVPSにインストールしたApacheをチューニングします。

ConoHaのDjango環境のApacheをチューニング(.confファイルを移動)

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告