TomoProgの技術書

底辺プログラマーが達人プログラマーになるまで

Django + Apache + mod_wsgiでWebサーバを構築してみた

皆さん
こんにちは、こんばんは
TomoProgです。

気がつけばもう4月も最終日。
この4月に書いた記事数を見てみると、

YouTubeを禁止した記事しか書いてなかったんですね。

毎日書くと言っていた日々は何だったのか。
もうそんなことは知りません。笑

長々とした前置きは置いておき、
今回はUbuntuDjangoApache、mod_wsgiを使ってWebサーバを構築してみました。

それでは頑張っていきましょう。

DjangoApache?mod_wsgi

そもそも、DjangoApache、mod_wsgiってなんぞやという人も多いと思うので、自分の整理のためにも簡単に説明してみようと思います。

  • Django(ジャンゴ)とは

DjangoPythonで書かれたWebフレームワークの1つです。
PythonのWebフレームワークは数多く存在しますが、その中でもフルスタックのWebフレームワークなのが特徴的で、Webアプリを作成するために必要な機能はDjangoだけでほぼ実装できるみたいです。
かなり多くの機能を提供してくれるのですが、なんと無料で使用できます。
ちなみに読み方は「ジャンゴ」です。
「ディージャンゴ」と読んだ人は私と同レベルです。笑

  • Apache(アパッチ)とは

Webサーバソフトウェアの1つです。
ほとんどのWebサービスはこのApacheで動いているのではないかと思っています。
初版は1995年に公開されたらしいです。
20年以上経った今でも多くの人が使用しているのは驚きですね。
ちなみにApacheDjangoと同じで無料で使えます。

  • mod_wsgi(モッドウィズギィ)とは

mod_wsgiPythonプログラムをApache上で動作させるために必要なモジュールです。
ApacheDjangoで作ったWebサービスを公開するときに使用します。
こちらも無料で使用可能です。

必要なものをインストールする

さて、使用するソフトやモジュールの紹介も終わったので、早速Ubuntuにインストールしていきましょう。

まずは、WebサーバソフトウェアであるApacheをインストールします。
ターミナルを開いて、以下のコマンドを入力します。

$ sudo apt-get update
$ sudo apt-get install apache2
$ sudo apt-get install apache2-dev

構築した環境にブラウザからアクセスして以下のようなサイトが出てきたらApacheのインストールは完了です!!
f:id:TomoProg:20160430111459j:plain

次は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

さて、ブラウザでアクセスしてみると・・・
f:id:TomoProg:20160430140445j:plain

It Worked!!
Djangoが80番ポートで起動出来ました!!

まとめ

Django + Apache + mod_wsgiを使ってWebサーバを構築出来ました。
これを使って何かWebアプリを作成する予定です。

Djangoは公式ドキュメントも充実しているので、Python使っている人でWebフレームワーク使いたいという人はDjangoを使ってみてはどうかと思います。

それではまた。

TomoProg

GitHub
TomoProg (TomoProg) · GitHub

Twitter
TomoProg (@tomoprog_xxx) | Twitter