Django + Apache + mod_wsgiでWebサーバを構築してみた
皆さん
こんにちは、こんばんは
TomoProgです。
気がつけばもう4月も最終日。
この4月に書いた記事数を見てみると、
1件
YouTubeを禁止した記事しか書いてなかったんですね。
毎日書くと言っていた日々は何だったのか。
もうそんなことは知りません。笑
長々とした前置きは置いておき、
今回はUbuntuでDjango、Apache、mod_wsgiを使ってWebサーバを構築してみました。
それでは頑張っていきましょう。
Django?Apache?mod_wsgi?
そもそも、Django、Apache、mod_wsgiってなんぞやという人も多いと思うので、自分の整理のためにも簡単に説明してみようと思います。
- Django(ジャンゴ)とは
DjangoはPythonで書かれたWebフレームワークの1つです。
PythonのWebフレームワークは数多く存在しますが、その中でもフルスタックのWebフレームワークなのが特徴的で、Webアプリを作成するために必要な機能はDjangoだけでほぼ実装できるみたいです。
かなり多くの機能を提供してくれるのですが、なんと無料で使用できます。
ちなみに読み方は「ジャンゴ」です。
「ディージャンゴ」と読んだ人は私と同レベルです。笑
- Apache(アパッチ)とは
Webサーバソフトウェアの1つです。
ほとんどのWebサービスはこのApacheで動いているのではないかと思っています。
初版は1995年に公開されたらしいです。
20年以上経った今でも多くの人が使用しているのは驚きですね。
ちなみにApacheもDjangoと同じで無料で使えます。
- mod_wsgi(モッドウィズギィ)とは
mod_wsgiはPythonプログラムをApache上で動作させるために必要なモジュールです。
ApacheにDjangoで作ったWebサービスを公開するときに使用します。
こちらも無料で使用可能です。
必要なものをインストールする
さて、使用するソフトやモジュールの紹介も終わったので、早速Ubuntuにインストールしていきましょう。
- Apacheのインストール
まずは、WebサーバソフトウェアであるApacheをインストールします。
ターミナルを開いて、以下のコマンドを入力します。
$ sudo apt-get update $ sudo apt-get install apache2 $ sudo apt-get install apache2-dev
構築した環境にブラウザからアクセスして以下のようなサイトが出てきたらApacheのインストールは完了です!!
- Djangoのインストール
次はDjangoをインストールしていきましょう。
Djangoは仮想環境で構築したいので、毎回お世話になるvirtualenvを入れていきます。
$ sudo apt-get install python3-pip $ sudo pip3 install virtualenv
virtualenvがインストールできたところで、仮想環境を作成し、仮想環境に入っておきます。
WebAppの部分は任意で構いません。
$ virtualenv --no-site-packages WebApp $ cd WebApp $ source bin/activate
(WebApp)がターミナルの先頭に表示されれば仮想環境に入れている状態です。
(virtualenvコマンドでWebAppの部分を変更した人はその変更した名前になっていればOKです。)
さて、仮想環境も出来たので、Djangoをインストールします。
と言っても仮想環境内でたった一行入力するだけです。
$ pip install django
djangoがインストール出来たかどうかはインタラクティブシェルを起動して、以下のコードを入力します。
>>> import django
>>> django.get_version()
インストールしたdjangoのバージョンが表示されればOKです。
- mod_wsgiをインストール
あとはmod_wsgiに関するモジュールをインストールしていきます。
こちらも仮想環境内でインストールします。
$ pip install mod-wsgi $ pip install mod-wsgi-httpd
インストールに少し時間がかかるので、気長に待っていてください。
これで必要なものはすべてインストール完了です。
Djangoを使ってWebアプリを作成する
必要なものをすべてインストールしたので、次はDjangoを使用した時に出力されるIt Worked!のページを出力してみます。
まずは、仮想環境内でDjangoプロジェクトを作成します。
mysiteの部分は任意のプロジェクト名で構いません。
$ django-admin startproject mysite
プロジェクトのディレクトリが作成されていれば成功です。
あとは上記で作成したDjangoプロジェクトを以下のコマンドで80番ポートで起動させます。
$ cd mysite $ sudo ../bin/mod_wsgi-express start-server --port=80 --user=djangowebserver mysite/wsgi.py
userに指定するユーザはログインしているユーザの名前を入れておけば大丈夫みたいです。
もし、Apacheが起動している場合は80番ポートが既に使用されているためエラーになると思います。
その場合は以下のコマンドでApacheを一度止めてから、上のコマンドを試してみてください。
$ sudo service apache2 stop
さて、ブラウザでアクセスしてみると・・・
It Worked!!
Djangoが80番ポートで起動出来ました!!