search
LoginSignup
40

More than 3 years have passed since last update.

posted at

updated at

CORESERVERでDjangoのサイトを作るまで

始めに

DjangoでWebサイトを作成しようと思い、Webや書籍で情報を集めていました。
『Hello World!』を表示する所までですが、まずまず苦労したので記録に残しておきます。

CORESERVER

レンタルサーバを幾つか探したのですが、CORESERVERでは、30日間の無料トライアルが設けられています。
かつ、ライトプランのCORE-MINIでは、月198円という格安で継続利用することが出来ます。
無料トライアル期間中にサイトの構築を行い、そのまま運用する事もできるかと思います。

無料トライアル

登録方法などは一般的なものだったので、割愛します。

1点だけ。登録の過程で、「お支払い情報をスキップ」を選択すると、決済情報(クレジットカード番号等)なしで登録完了できました。
0003A.png

登録後、確認メールが登録メールアドレスに送られてきます。
ここに確認パスワードが記載されていますので、メールにあるリンク先から確認作業を行います。

サーバー作成

ログイン後の画面から サーバー → コアサーバー を選択します。
0006A.png
「コアサーバーの新規アカウントを作成」をクリック。
0007A.png
「CORE-MINI プランを取得」をクリック。
0008A.png
アカウント名を指定して、下部の「30日間(YYYY-MM-DDまで)のお試し登録」をクリック。
0009A.png
再度、サーバー → コアサーバー を選択すると、サーバーが登録されていることが確認できます。
0010A.png

ダッシュボード

新規登録したサーバーにある「新コントロールパネル」のリンクをクリックします。
「サイト設定」を選択するとサイトの一覧が表示されます。
0011A.png
サイト名をクリックすると、サイトの詳細が表示されます。
「FTP/SFTP接続情報」の項目に、
・ホスト名
・アカウント
・パスワード
の情報が表示されています。
この情報を使用してSSHアクセスを行います。
0012A.png

サイト設定 → ツール/セキュリティー を選択します。
「SSH接続IP許可」のこうもくから、「SSH接続IP許可」のボタンをクリックします。
0015A.png
「SSH接続のIPを許可する」をクリックし、現在使用中の端末からサーバへのアクセスを許可します。
0016A.png
設定の繁栄に5分程度の時間がかかる旨表示されます。
しばらく待ちましょう。

SSH ログイン

TeraTermでSSHログインします。Hostに、上記のホスト名を指定。
当初アカウント作成した物とはアカウント、パスワードともに違いますのでご注意ください。
0013.png
User Name と Password の項目を埋めてOKを押します。
0018.png
ログイン
0017A.png

シェル 変更

CORESERVER では、デフォルトシェルが rbash に設定されています。
これを、bash に変更しておきます。

0019A.png
一度ログアウトし、ログインしなおすとシェルの変更が適用される様です。
0020A.png

Python の準備

pyenv インストール

CORESERVERでは、Python 2.7.5 と Python 3.5.1 がセットアップされています。(記事作成時点)
が、運用性を考慮しpyenvを使用します。

まずはpyenvをローカルにコピー

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

.bash_profile に以下を追加。

.bash_profile
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

設定を反映します。

$source .bash_profile

pyenv に python をインストール

pyenv install --list コマンドでインストール可能なPython のバージョンを確認します。
3.7.0が最新だったので、こちらを使用しました。

$ pyenv install 3.7.0
Downloading Python-3.7.0.tar.xz...
-> https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
Installing Python-3.7.0...
Installed Python-3.7.0 to /virtual/twinoze201809/.pyenv/versions/3.7.0

コマンド完了までに数分かかりました。

pyenv で使用するPythonのバージョンを指定します。
global を指定すると、システム全体で有効になります。

$ pyenv version
system (set by /virtual/twinoze201809/.pyenv/version)
[twinoze201809@m1001 ~]$ pyenv global 3.7.0
[twinoze201809@m1001 ~]$ pyenv version
3.7.0 (set by /virtual/twinoze201809/.pyenv/version)

.bashrc に以下を追加。pyenv をデフォルトで有効にします。

.bashrc
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"

export PYTHONPATH=/virtual/twinoze201809/.pyenv/versions/3.7.0/lib/python3.7/site-packages

設定を反映します。

$source .bash_profile

Python のバージョンを確認すると、反映されている事が分かります。

$ python -V
Python 3.7.0 (default, Sep 20 2018, 11:54:11)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]

python にセットアップされているパッケージを確認。

$ python -m pip list
Package    Version
---------- -------
pip        10.0.1
setuptools 39.0.1
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

pip のアップグレードを推奨されていますので、アップグレードしておきます。

Django のセットアップ

pip で Django をセットアップします。

$ python -m pip install django
...
Installing collected packages: pytz, django
Successfully installed django-2.1.1 pytz-2018.5

Django のテストプロジェクト作成

Django のチュートリアルを参考にテスト用プロジェクトを作成します。

チュートリアルに沿ってプロジェクトを作成しようとしましたが、

$ django-admin startproject mysite
-bash: django-admin: command not found

コマンドが見つからないとの事で、怒られました。
そこで、以下の1行を追加しました。

.bashrc
export PATH=/virtual/twinoze201809/.pyenv/versions/3.7.0/bin:$PATH

その後改めて django-admin コマンドを使用し、プロジェクトを作成します。

mysite プロジェクトの編集

ここでは、簡単のためmysite に直接 ビューを定義しました。

mysite/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world.")
mysite/urls.py
from django.contrib import admin
from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('admin/', admin.site.urls),
]

settings.py にある ALLOWED_HOSTS にサーバーのURLを設定します。

mysite/settings.py
ALLOWED_HOSTS = ['twinoze201809.m1001.coreserver.jp']

公開ディレクトに django.cgi を定義

さくらのレンタルサーバでpyenvとDjangoを動かすを参考に、 pulic_html/ にpython3 用のdjango.cgi を設置します。

$ wget --no-check-certificate https://raw.githubusercontent.com/chibiegg/django-cgi/master/django-python3.cgi

django.cgi の編集

環境に合わせてシバン(#!)を編集します。

$ which python
~/.pyenv/versions/3.7.0/bin/python
django-python3.cgi
#!/virtual/twinoze201809/.pyenv/versions/3.7.0/bin/python

import os, sys の次の行に Django プロジェクトのパス指定する行を追加します。

django-python3.cgi
sys.path.append('/virtual/twinoze201809/mysite')

environ = dict(os.environ.items()) の次の行に下記を追加します。

django-python3.cgi
    environ['PATH_INFO']         = environ.get('PATH_INFO', "/")

行末付近の以下の行を

django-python3.cgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'application.settings'

この様に修正します。

django-python3.cgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

django-python3.cgi の名称を変更し、実行権限を付けました。

# mv django-python3.cgi django.cgi
$ chmod 705 django.cgi

.htaccess の設定

サイトを開いた際に、上記 django.cgi を実行するよう設定します。

.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django.cgi/$1 [QSA,L]

[2019/01/13 追記]
.htaccess は ~/public_html/ に配置します。

.htaccess について

[2019/01/13 追記]
この項目について質問を頂きました。
確かに、説明が簡単すぎたかもしれません(^^ゞ
.htaccess は、WebサーバであるApatche の補助設定ファイルです。
Apatcheの(基本)設定ファイルは、 /etc/httpd/conf/httpd.conf に記述します。
(セットアップ方式により異なる場合があるようです)

httpd.conf はApatche共通の設定として機能しますが、公開ディレクトリ毎に個別の設定を行う目的で .htaccess を使用します。

CORESERVER では、サーバのOSおよびApacheサーバも他のユーザと共有しますので、個別のユーザのために共通設定を修正することが出来ません。
そこで、 .htaccess を使用してユーザ毎の設定を行うことになります。

.htaccess について その2

.htaccess の様に、ドットで始まるファイルはLinux上では隠しファイルとして扱われます。
ので、通常の

$ls

コマンドでは表示されません。ですので、

$ls -a

この様に、 -a オプションを付けて表示させて下さい。

テスト

サイトをブラウザで開いてみます。
0021A.png
無事、開くことが出来ました。

CORESERVER アカウント閉鎖

この記事公開次点で、今回テストに使用したアカウントは閉鎖しています。
以下のマニュアルを参考にしましたが、手順が若干変更されている様です。
CORESERVER アカウント閉鎖

リンクリスト

参考にしたサイトのリンクをまとめておきます。

CORESERVER
.htaccess について
Django
XREAでDjangoを動かす
さくらのレンタルサーバでpyenvとDjangoを動かす
CORESERVER アカウント閉鎖
pyenv を用いた Python3 インストール

ここにあげていないもので、参考にさせてもらったサイトも多数ありますが、メモしてなかったので割愛。
どなたかの参考になれば幸いです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
40