本記事では共用サーバにDjangoをデプロイする方法を全工程丁寧に解説します。
エックスサーバーやロリポップ!、さくらのレンタルサーバなどの共用サーバにてご確認いただける内容となっております。今回はエックスサーバーを例にとって解説します。
なお、サーバーの契約は完了しているという前提で進めますのでまだ解説していない方は下記よりエックスサーバー をご契約の上お進みください。
全体の流れ
下記の通りに、全工程をご紹介いたします。
- ステップ1
ご契約のサーバー設定からSSH接続を有効化の上、SSH接続を行います
- ステップ2
SSH接続ツールを使用してPython及びDjangoをインストールします
- ステップ3
Djangoの新プロジェクトを作成します
- ステップ4
サーバー上の.htaccessとindex.cgiを編集しDjangoが動くように設定します
- ステップ5
Staticフォルダの認識や言語設定に関して、Django上で設定を編集します
SSH接続
サーバー上でSSH接続を有効化し、その後アプリを使用してご自身のPCからSSH接続を行う流れとなります。
まず、ご自身のでご契約中のサーバー設定から、下記の手順でSSH接続を有効化します。
サーバー上でのSSH接続の有効化
以下よりエックスサーバーでのマニュアルをご紹介しますが、どの共用サーバーでも同じ流れで設定可能です。
1. ログイン後、「SSH設定」をクリック
サーバーパネルへログインし、「SSH設定」をクリックします。
2.「ONにする」を選択し、「設定する」ボタンをクリック
SSH設定画面が表示されますので、「ONにする」を選択し、「設定する」ボタンをクリックします。
3.状態の確認
再度「SSH設定」をクリックし、「状態」が【ON】になっていることを確認します。
4.ログイン後、「公開鍵認証用鍵ペアの生成」へ
サーバーパネルへログインし、「SSH設定」から「公開鍵認証用鍵ペアの生成」へ進みます。
5.「パスフレーズ」を入力し、「確認画面へ進む」をクリック
公開鍵認証設定画面が表示されましたら「パスフレーズ」の入力を行い、「確認画面へ進む」ボタンをクリックします。
6.「生成する」をクリック
確認画面が表示されますので「生成する」ボタンをクリックします。
7.秘密鍵をPC上の任意の場所に保存
「公開鍵認証用の鍵ペア生成処理を実行しました」画面が表示され、自動的に秘密鍵のダウンロードが始まりますので、PC上の任意の場所に保存します。
SSH設定 | レンタルサーバーならエックスサーバー
(ファイル名:[サーバーID].key)
保存された秘密鍵を利用してSSHクライアントからの接続を行ってください。(例:Tera Termでの接続方法)
PCからのSSH接続
つぎに、ご使用のPCからサーバーにSSH接続を行う方法をご紹介します。
ここではTera Termを使用した接続方法をご紹介いたしますので、事前準備としてダウンロードをお願いいたします。
こちらについてもエックスサーバーでのマニュアルをご紹介します。必要な情報は下記のとおりですのでご自身でご準備の上お進みください。
- ホスト名
- 接続ポート
- ユーザー名
- パスフレーズ
- 公開鍵などの認証
1.「SSH Authentication…」を選択
Tera Termを起動し、「setup」メニューから「SSH Authentication…」を選択します。
※Tera Term起動直後はNew connectionウィンドウが表示される場合があります。こちらのウィンドウが表示されましたら、「Cancel」ボタンをクリックしてウィンドウを閉じてください。
2.「Use RSA/DSA/ECDSA key to log in」を選択し、「Private key file:」をクリック
TTSSH: Authentication Setupウィンドウが表示されますので、「Use RSA/DSA/ECDSA key to log in」を選択し、「Private key file:」ボタンをクリックします。
秘密鍵を選択するダイアログが表示されますので、「サーバー上で公開鍵認証用鍵ペアの生成を行う場合」の手順4にてダウンロードを行った(「サーバーID」.key)ファイル又は「公開鍵登録・更新」にて登録されました公開鍵に対応するお手元の秘密鍵を指定し、「OK」ボタンをクリックします。3.必要項目の入力
「File」メニューから「New connection」をお選びいただき、「New connection」ウィンドウを開きます。
「New connection」ウィンドウにてHostにお客さまの初期ドメイン名、TCP port#に「10022」をご入力いただき、下記項目をお選びの上、「OK」ボタンをクリックします。4.必要項目の入力・選択
SSH Authenticationウィンドウが表示されますので、「User name」にお客さまのサーバーID、「Passphrase」に選択した秘密鍵のパスフレーズを入力し、「Use RSA/DSA/ECDSA key to log in」が選択されている事を確認して「OK」ボタンをクリックします。
SSH接続方法
Python及びDjangoのインストール
SSH接続のセットアップが完了したら、サーバー上にPython及びDjangoをインストールします。
Tera Term上にて下記のコマンドを実行してください。
2つ目のAnacondaのインストールでは何行も情報が表示されますが、Enter長押しでスキップし、最後の「Do you accept the license terms? [yes|no]」のみ[yes]としておけばOKです。
# 最新のAnacondaをダウンロード(2023年8月時点)
$ wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh
# Anacondaのインストール
$ bash Anaconda3-2023.07-2-Linux-x86_64.sh
# Anacondaの有効化
$ source ~/.bashrc
最後に、下記よりDjangoをインストールします。
# Djangoのインストール
$ pip install django
Djangoで新プロジェクトの作成
次に、Djangoで新しいプロジェクトを作成する方法を解説します。ご自身がインストールしたいドメインの[public_html]フォルダに移動し、通常通りプロジェクトを作成してください。
# ディレクトリの移動
$ cd [独自ドメイン名]
$ cd [public_html]
# サブディレクトリにてインストールされたい方は、さらにサブドメインのディレクトリに移動します
# $ [サブドメイン名]
# 任意の名前のプロジェクトの作成
$ django-admin startproject [Project名]
# 任意の名前のアプリケーションの作成
$ cd [Project名]
$ django-admin startapp [App名]
.htaccessとindex.cgiの編集
次に、.htaccessとindex.cgiの編集を行います。
それぞれのファイルについて下記のコードをコピペして、public_htmlフォルダにアップロードしてください。なお、index.cgiについてはパーミッションを755に設定してください。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
#!/home/[サーバーID]/anaconda3/bin/python
# encoding: utf-8
import sys, os
sys.path.append("/home/[サーバーID]/[独自ドメイン名]/public_html/[Project名]/")
# サブドメインの場合は下記
# sys.path.append("/home/[サーバーID]/[独自ドメイン名]/public_html/[サブドメイン名]/[Project名]/")
os.environ['DJANGO_SETTINGS_MODULE'] = "[Project名].settings"
from wsgiref.handlers import CGIHandler
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
CGIHandler().run(application)
settings.pyの編集
最後に、settings.pyを編集して完了となります。
なお、フォルダ構成に関して下記のようになっています。
public_html (サブドメイン名)
└───[プロジェクト名]
├── manage.py
└── [プロジェクト名 (config)]
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
├── wsgi.py
└── __pycache__
タイムゾーン及び言語設定
まず、タイムゾーンと言語設定を行います。下記のコードのように編集してください。
LANGUAGE_CODE = "ja" # "en-us" -> "ja"に変更
TIME_ZONE = "Asia/Tokyo" # "UTC" -> "Asia/Tokyo"に変更
こちらを行った時点で、ホームページが日本語になっていることを確認できます。
Staticディレクトリの設定
まず、プロジェクトのファイルディレクトリ内にstaticフォルダない場合を想定し、先程同様にsettings.pyに追記を行います。こちらにより、Djangoプロジェクト内のstatic関連ファイルを[プロジェクト名]/static_root内に集める準備が完了します。
import os # 追記
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root') # 追記
次に、Tera Termより下記コマンドを実行します。こちらにより、Djangoプロジェクト内のstatic関連ファイルが一箇所に集められ、その後staticフォルダとしてpublic_htmlまたはサブドメイン直下に配置されます。
# staticファイルの収集
$ python manage.py collectstatic
# staticファイルの移動し、saticという名前にリネーム
$ mv static_root ../static
おわりに
以上が、エックスサーバーなどの共用サーバーにてDjangoをインストールする方法になります。
ご精読いただきありがとうございました。
コメント