Django のデプロイメント その1 サーバーの準備
前回の記事では、Pythonanywhere のサービスを利用して、Django のフレームワークを利用して開発した Web アプリを公開する手順を紹介しました。殆ど、開発用のサーバーで行っているのと大きな違いはありませんでした。 本格的に Django で開発した Web アプリをインターネットで公開する場合、もう少し詳細な知識と作業が必要になります。この記事では何回かに分けて Django で開発した Web アプリを公開するための準備について紹介します。
サーバーの準備
今回は、実際にインターネットに公開するのではなく、「仮想 Web サーバ」を作成してそこに Django で開発した Web アプリをおいてサービスを提供するまでを実践してみようというものです。従って、Web ホスティングサービスを利用する必要はありません。しかし、ホスティングをする「Web サーバー」は必要になります。
そこで、仮想マシーンを Web サーバーにして実際にサービスを提供するようにすることにします。 仮想環境は、「Docker」などを使って実現することも可能ですが、Docker を利用した記事は別に予定していますので、今回は「ハイパーバイザー」を利用した仮想マシーンで実践する事にします。
ハイパーバイザー(Hypervisor)を利用した仮想マシーンには、よく利用されているもので:
* VMWare
* VirtualBox
* Parallels
などがあります。Mac などでは、Parallels が便利ですが、今回は VMWare を利用した物を紹介します。
VMWare Workstation Player
VMWare Workstation Player は VMWare が提供する仮想マシン環境です。商用目的以外の使用ならば無料で利用できます。基本的に Windows と Linux がホスト OS としてサポートされています。Mac 用は Fusion というプロダクトラインがありますが、Mac の利用の場合は Parallels の方がお勧めです。
この記事では、VMWare について解説します。Mac をご利用の方は、Parallels(14 日間は無料で体験版が使えます)を利用してインストールしてみてください。
Windows 版と Linux 版の VMWare Workstation Player はこちらからダウンロードできます。
Windows の場合は、ダウンロードしたインストーラをダブルクリックしてインストールすれば OK なので簡単です。
Linux(Ubuntu)の場合は、ダウンロードしたフォルダーに移動して以下のコマンドを実行します。
$ sudo apt install build-essential
$ sudo bash VMWare-Player-16.1.1-17801498.x86_64.bundle
でインストールできます。(*)ダウンロードしたファイル名を指定してください。 最初の起動時はライセンスの合意などの質問がありますので、質問に答えて立ち上げます。
VMWare Workstation Player のインストールが完了したら、サーバーに利用するオペレーティングシステム(OS)をインストールします。
VMWare Workstation Player を立ち上げて仮想マシーンを作成します。予めインストール用のイメージをダウンロードしておいて、そのファイルを指定します。
今回は、Ubuntu のサーバー版の OS をダウンロードして利用します。インストールは、Ubuntu のインストレーションガイドに従ってインストールします。
サーバーの設定
Django の Web アプリのホスティングで必要な事は以下の2点です:
* Web サーバ:HTTP のリクエストの処理
* アプリケーションサーバー:Python の実行を担当
また、リモートアクセスができるように、SSH を利用できるようにします。
最初に、SSH を有効にします
$ sudo apt update
$ sudo apt install openssh-server
これで、SSH を利用して、サーバーにログインできるようになります。
必要なパッケージをインストールします
Web サーバーの NGINX や SQL データベースの PostgreSQL の外に、必要なライブラリなどをインストールします。
* nginx
* postgresql
* python3-virtualenv
* libpq-dev
* python3-dev
* build-essential
以下のコマンドでインストールできます。
$ sudo apt install nginx
$ sudo apt install postgresql
$ sudo apt install python3-virtualenv
$ sudo apt install libpq-dev
$ sudo apt install build-essential
$ sudo apt install python3-dev
インストールが完了したら NGINX が動作しているかどうかを確認してください。
サーバーの IP アドレスを調べて
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:1c:42:ff:f2:50 brd ff:ff:ff:ff:ff:ff
inet 10.211.55.7/24 brd 10.211.55.255 scope global dynamic eth0
valid_lft 1135sec preferred_lft 1135sec
inet6 fdb2:2c26:f4e4:0:21c:42ff:feff:f250/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591768sec preferred_lft 604568sec
inet6 fe80::21c:42ff:feff:f250/64 scope link
valid_lft forever preferred_lft forever
のように表示されるので、「inet 10.211.55.7」がこのサーバーの IP アドレスになります。
このアドレスにアクセス「10.211.55.7」に Web ブラウザーからアクセスして「Welcome to nginx!」が表示されれば正常に動作しています。
データベースの設定
次回は、データベースの設定(移行)を紹介します。ここまでで、基本的なパッケージのインストールは完了したので、Django のアプリをホスティングするための設定を次回以降紹介していきます。
開発環境では、Django の標準設定の SQL データベースの「SQLite」を利用していましたが、本格運用の際には、簡易版ではなく、「本物」の SQL データベースを利用します。 次回の記事では、既にインストールした「PostgreSQL」のデータベースを設定して、必要なアカウントの作成・設定などを紹介する予定です。
まとめ
既存の Web ホスティングのサービスを利用すると、前回の記事で紹介したように非常に簡単に Django のアプリを公開することができます。 しかし、実際にどのような設定が必要かを理解するには、自分でサーバーを準備して Django のホスティングを一度やってみると、ホスティングサービスが実際にどのような事をやっているのかがよくわかります。
少し面倒で手間がかかりますが、仮想マシーンで仮のサーバーを用意して、サーバーの OS の設定から一通りやってみると理解が深まります。今回は、サーバーの準備がメインでしたが、次回以降、データベースやアカウントの設定から、Django の設定の変更までを見ていく予定です。
その後の予定としては、このサーバーの設定を理解した上で、Docker 上で Django のサービスを動かす方向で進めていく予定です。お楽しみに!