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のインストールです。こちらを参考にしてください。

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

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

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

ftpサーバー

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

[vsftpd] インストールとCentOSのfirewallの設定 | Search Light(CakePHP PHP jQuery JavaScript CSS Linux MySQLMac)
FTPサーバーソフトのvsftpdをCentOS7にインストールします。yumでインストール後、firewallでftpのポートを開放すればFTPが使えるようになります。 インストールされたバージョンの確認

まず立ち上げてみる

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

転送が終わったら、

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とします。こちらを参考にしてください。

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つのファイルを設定する必要があります。

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

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

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

エックスサーバーでDjangoを動かす
エックスサーバー上でDjangoを動かす方法をまとめました。

デプロイの後作業

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

静的ファイル

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

Djangoでの静的ファイルの扱いで抑えておくべきポイント
Djangoで静的ファイル(css、JavaScript、画像など)を扱うのは難しいとされています。 この記事では...

DEBUG

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

DNS

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

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

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

https化

最後にhttps化です。

VPSは

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

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

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

まとめ

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

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

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

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

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

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

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

エージェントへの登録はお済みですか?

今すぐフリーランスになる気がなくても、エージェントへの登録は済ませておくことをお勧めします。理由はストレスや疲労が限界に達してからだと遅いから。

現在の自身のフリーランスとしての価値・単価相場を把握できますし、条件にあった案件をキャッチできるようになるので、いざフリーランスになろうとした際に早期に手が打てます。

エージェント登録は無料なので、今はフリーランスにならなくとも登録だけはしておくべきです。

真っ先に登録すべきエージェントは、圧倒的に多くのクライアントを開拓しているDYMテック。2500社の優良な取引先と、条件交渉力が強く高条件で仕事を紹介してくれるエージェントです。

案件紹介のみでなく、エンジニアとしてのキャリア相談や業界動向のキャッチアップなど、フリーランス対してのサポートも充実していますので、初めてフリーランスに挑戦する方も安心です。

DYMテックの詳細を見る

フリーランスエンジニアの働き方
スポンサーリンク
shigotoswitchをフォローする
しごとスイッチ