始めに
DjangoでWebサイトを作成しようと思い、Webや書籍で情報を集めていました。
『Hello World!』を表示する所までですが、まずまず苦労したので記録に残しておきます。
CORESERVER
レンタルサーバを幾つか探したのですが、CORESERVERでは、30日間の無料トライアルが設けられています。
かつ、ライトプランのCORE-MINIでは、月198円という格安で継続利用することが出来ます。
無料トライアル期間中にサイトの構築を行い、そのまま運用する事もできるかと思います。
無料トライアル
登録方法などは一般的なものだったので、割愛します。
1点だけ。登録の過程で、「お支払い情報をスキップ」を選択すると、決済情報(クレジットカード番号等)なしで登録完了できました。
登録後、確認メールが登録メールアドレスに送られてきます。
ここに確認パスワードが記載されていますので、メールにあるリンク先から確認作業を行います。
サーバー作成
ログイン後の画面から サーバー → コアサーバー を選択します。
「コアサーバーの新規アカウントを作成」をクリック。
「CORE-MINI プランを取得」をクリック。
アカウント名を指定して、下部の「30日間(YYYY-MM-DDまで)のお試し登録」をクリック。
再度、サーバー → コアサーバー を選択すると、サーバーが登録されていることが確認できます。
ダッシュボード
新規登録したサーバーにある「新コントロールパネル」のリンクをクリックします。
「サイト設定」を選択するとサイトの一覧が表示されます。
サイト名をクリックすると、サイトの詳細が表示されます。
「FTP/SFTP接続情報」の項目に、
・ホスト名
・アカウント
・パスワード
の情報が表示されています。
この情報を使用してSSHアクセスを行います。
サイト設定 → ツール/セキュリティー を選択します。
「SSH接続IP許可」のこうもくから、「SSH接続IP許可」のボタンをクリックします。
「SSH接続のIPを許可する」をクリックし、現在使用中の端末からサーバへのアクセスを許可します。
設定の繁栄に5分程度の時間がかかる旨表示されます。
しばらく待ちましょう。
SSH ログイン
TeraTermでSSHログインします。Hostに、上記のホスト名を指定。
当初アカウント作成した物とはアカウント、パスワードともに違いますのでご注意ください。
User Name と Password の項目を埋めてOKを押します。
ログイン
シェル 変更
CORESERVER では、デフォルトシェルが rbash に設定されています。
これを、bash に変更しておきます。
一度ログアウトし、ログインしなおすとシェルの変更が適用される様です。
Python の準備
pyenv インストール
CORESERVERでは、Python 2.7.5 と Python 3.5.1 がセットアップされています。(記事作成時点)
が、運用性を考慮しpyenvを使用します。
まずはpyenvをローカルにコピー
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
.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 をデフォルトで有効にします。
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行を追加しました。
export PATH=/virtual/twinoze201809/.pyenv/versions/3.7.0/bin:$PATH
その後改めて django-admin コマンドを使用し、プロジェクトを作成します。
mysite プロジェクトの編集
ここでは、簡単のためmysite に直接 ビューを定義しました。
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world.")
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を設定します。
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
#!/virtual/twinoze201809/.pyenv/versions/3.7.0/bin/python
import os, sys の次の行に Django プロジェクトのパス指定する行を追加します。
sys.path.append('/virtual/twinoze201809/mysite')
environ = dict(os.environ.items()) の次の行に下記を追加します。
environ['PATH_INFO'] = environ.get('PATH_INFO', "/")
行末付近の以下の行を
os.environ['DJANGO_SETTINGS_MODULE'] = 'application.settings'
この様に修正します。
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
django-python3.cgi の名称を変更し、実行権限を付けました。
# mv django-python3.cgi django.cgi
$ chmod 705 django.cgi
.htaccess の設定
サイトを開いた際に、上記 django.cgi を実行するよう設定します。
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 オプションを付けて表示させて下さい。
テスト
サイトをブラウザで開いてみます。
無事、開くことが出来ました。
CORESERVER アカウント閉鎖
この記事公開次点で、今回テストに使用したアカウントは閉鎖しています。
以下のマニュアルを参考にしましたが、手順が若干変更されている様です。
・CORESERVER アカウント閉鎖
リンクリスト
参考にしたサイトのリンクをまとめておきます。
・CORESERVER
・.htaccess について
・Django
・XREAでDjangoを動かす
・さくらのレンタルサーバでpyenvとDjangoを動かす
・CORESERVER アカウント閉鎖
・pyenv を用いた Python3 インストール
ここにあげていないもので、参考にさせてもらったサイトも多数ありますが、メモしてなかったので割愛。
どなたかの参考になれば幸いです。