MENU

Djangoプロジェクトをサーバーでデプロイするための方法を解説

Python

ローカルでは

python manage.py runserver

http://lovalhost:8000

で動くDjangoプロジェクトですが、いざサーバーでデプロイしようとすると、様々な壁が立ちはだかります。

この記事では、Djangoプロジェクトをサーバーでデプロイするための知識を全てまとめます。

目次

共用サーバーか、VPSか

Djangoプロジェクトをデプロイするためには、サーバーの選択から留意しないといけません。

現実的には、共用サーバーかVPSかということになります。

共用サーバーは使うプログラムの管理がすべてサーバー管理会社任せで、VPSは何もプログラムが入っていないものに自分でプログラムをインストールし、自分で管理するという違いがあります。

Djangoの場合、サーバーでPythonが使えても、設定に四苦八苦することが多いです。

従って、自分でプログラムをインストールできない共用サーバーはおすすめできません。

この記事では共用サーバーでのデプロイ方法も書きますが、特に条件がないのであればVPSを選択しましょう。

いきおい、インフラに関する知識も必要となりますが、それがDjangoの実際です。

なお、これも特に条件がないのであれば、Linux系のサーバーを選択してください。

Windowsのサーバーは非常に公開手順が面倒です(この記事ではWindowsのサーバーでのデプロイ方法は触れません)。

VPS(CentOS 8の場合)

それでは、CentOS 8の場合を例にとり、VPSでのデプロイ手順を書いていきます。

プロジェクトのパス

Djangoプロジェクトは、一般的には

/var/www

配下に置きます。

/var/www

は、「Webサイトに関するファイルの置き場所」ということになっています。

しかしながら、

/home

配下の自分のディレクトリに置いてもいいでしょう。どっちでも実害はありません。

けれども、/homeは慣習的に個人のディレクトリという感じが強いので、/var/wwwに置くことが一般的になっています。

Djangoインストール

まずPythonのインストールです。こちらを参考にしてください。

mebee
CentOs8 pythonインストール pythonをCentOs8にインストールする。CentOs8ではPython3.6がデフォルトになったようです。

Djangoをインストールし、プロジェクトを立ち上げ、アプリを作ります。その手順はこちらを参考にしてください。

mebee
CentOs8 Python DjangoでWebアプリ開発環境の構築手順 pythonのWebアプリケーションフレームワークであるDjangoでの開発環境の構築手順です。

ftpサーバー

ローカルからファイルをアップロードするために、サーバーにftpサーバーをインストールします。
こちらを参考にしてください。yumはdnfと読み替えてください。

まず立ち上げてみる

それからローカルのファイルを転送します。

転送が終わったら、

python manage.py makemigrations
python manage.py migrate

しましょう。

ここまできたら、

python3 manage.py runserver 0.0.0.0:8000

でDjangoプロジェクトを立ち上げてみます。

http://IPアドレス:8000/

でアクセスできることを確かめてください。

(settings.pyのALLOWED_HOSTSにIPアドレスを追加するのを忘れずに)

httpサーバー

次に、サーバーにhttpサーバーを立ち上げます。ここではnginxとします。こちらを参考にしてください。

Qiita
Django + uWSGI + nginx (uWSGIチュートリアルの和訳) - Qiita はじめにSetting up Django and your web server with uWSGI and nginx — uWSGI 2.0 documentationを適宜和訳しつつ、D…

共用サーバー

次に、共用サーバーの例を書きます。

.htaccessとindex.cgi

共用サーバーの場合、この2つのファイルを設定する必要があります。

コアサーバーの場合は、こちらを参考にしてください。

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

エックスサーバーの場合は、こちらを参考にしてください。

あわせて読みたい
エックスサーバーでDjangoを動かす エックスサーバー上でDjangoを動かす方法をまとめました。

デプロイの後作業

デプロイした後も、Djangoには設定作業があります。

静的ファイル

筆者の書いた記事ですが、こちらを参考にして静的ファイルの設定をしてください。

あわせて読みたい
Djangoでの静的ファイルの扱いで抑えておくべきポイント Djangoで静的ファイル(css、JavaScript、画像など)を扱うのは難しいとされています。 この記事では、Djangoでの静的ファイルの扱いについて、これだけ押さえておけばい...

DEBUG

setting.pyのDEBUGはFalseにします。

DNS

ドメイン名でアクセスできるようにするために、DNSを設定する必要があります。

これは各サーバーによって見事に手順が違うので、ここでは詳細は書きません。

ただ、DNSサーバーを設定したらドメイン名でアクセスできるまで最大72時間かかります(そのサーバーの環境と自身のマシンの環境に依存します)。気長に待ちましょう。

https化

最後にhttps化です。

VPSは

Qiita
Djnagoが動いているサーバをletsencryptでHTTPS化 - Qiita 環境Nginx + uwsgi + Djang 1.10 on CentOS 7 (さくらVPS)letsencryptとは?無料でウェブサイトを暗号化通信HTTPSにできる.詳細はこちらど…
photo.pics
Let's Encrypt でサイトを SSL 化する( Django 編) Django などのフレームワークを使っているサイトに対して Let's Encrypt のサーバー証明書を発行する方法をまとめました

こちらの2つのサイトを参考にしてください。

共用サーバーは、コントロールパネルから行えることがほとんどです。
ボタンをクリックでできるはずです。

まとめ

いかがでしたでしょうか。なかなか大変だということが分かったかと思います。

しかし、インフラは慣れです。Linuxの独特の短縮されたコマンドも、パスも、設定も、二度三度と繰り返すうちに慣れます。

どちらかと言えば経験がものを言う分野です。

プログラミングよりも慣れの部分は大きいかもしれません。最初は壁が高いと思いますが、何度かやってるうちに苦痛でなくなるはずです。

最後に書いておきますが、インフラの世界は日進月歩です。

1年前にスタンダードだった技術が陳腐化しているということはよくあります。

常に最新の情報を仕入れて、キャッチアップしていってください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

管理人のよしぞと申します。
フリーランス業界で働いている管理人が、業界で働く様々な視点からフリーランスエンジニアに挑戦するためのノウハウを掲載。独立を考えている方にとって手助けになるサイトを目指しています。

目次