投稿理由
そのファイルがどこに配置すべきなのか 等で
四苦八苦したので、備忘録として残しておく。
事前準備
- XServerの契約
- SSH接続
- サーバーパネルのファイルマネージャを使用できる
- デプロイするDjangoウェブアプリ (collectstaticを忘れずに)
- ファイルをXServerへ送信する何らかの方法 (FTP 等)
今回は、django-adminで作成したてのデバッグモードがONの状態の時の
「The install worked successfully! Congratulations!」のページが表示されるだけのウェブアプリをデプロイします。
作業
miniconda3 & Djangoをインストール
-
SSHでXServerに接続
-
最新のx86_64のminiconda3をインストールするためのシェルスクリプトをダウンロード
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
3. シェルスクリプトを実行
bash Miniconda3-latest-Linux-x86_64.sh
私はインストールパス等は、すべてデフォルトの値でインストールしました。
必要に応じて変更。
4. Djangoをインストール
/home/xs******/miniconda3/bin/python3 -m pip install django
/home/xs******/miniconda3 は、miniconda3のインストールパスです。
環境に応じて変更してください。
ファイルをXServerへ
-
Django ウェブアプリを、配置したいドメインのpublic_html内に入れる
-
python manage.py collectstaticでエクスポートしたstaticディレクトリを、public_html直下に配置する
-
データベースのマイグレーションも忘れずに
サブドメインに配置する場合
例: subdomain.example.com
/home/xs******/example.com/public_html/subdomain.example.com/ が public_html に該当する。
index.cgi & .htaccess
ここからはファイルマネージャでの操作です。
-
index.cgi を作成
index.cgiはmanage.pyと同じ階層に配置してください。
下記の例は django-admin startproject で mysite という名前のプロジェクト名で作成した場合
#! /home/xs******/miniconda3/bin/python3
import sys, os
sys.path.insert(0, '/home/xs******/miniconda3/bin')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
from wsgiref.handlers import CGIHandler
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
CGIHandler().run(application)
2. .htaccess を作成
.htaccessは、public_htmlの直下に配置してください。
サブドメインの場合
例: subdomain.example.com
/home/xs******/example.com/public_html/subdomain.example.com/.htaccess
下記の例は、index.cgi と .htaccess が同じ階層に存在する場合
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ファイルの配置が下記のような配置にする場合
/home/xs******/example.com/public_html/.htaccess
/home/xs******/example.com/public_html/django-webapp/index.cgi
/home/xs******/example.com/public_html/django-webapp/manage.py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /django-webapp/index.cgi/$1 [QSA,L]
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
必ず manage.py、index.cgi、.htaccess の権限(パーミッション)を755に設定すること
終わり
これでデプロイできているはずです。
アクセスして公開できているかを確認してください。
参考文献