【Django入門】apacheを使ってサーバーを動かそう

image (3)
ryo
書いた人 ryo
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは。ryoです。

今回は、ApacheからPythonのWebフレームワークであるDjangoを動かす方法を解説します。

DjangoからWebアプリケーションを作って、実際に運用するためには欠かせない技術になります。

この記事では、

・Apache
・WSGI

について解説します。さらに、

・Apacheが動くDjango環境

についての解説を通して、実際に運用することの出来るDjangoアプリケーションを作ってみましょう。

Apacheとは

そもそもApacheとは何なのでしょうか。

ApacheとはWebサーバー向けのソフトウェアのことです。

htmlファイルを書いたりDjangoでWebアプリケーションを作っただけではインターネット上に公開することは出来ません。

ApacheがインターネットとWebサイトやアプリケーションを繋いでくれます。

サーバーと聞くとパソコンの本体のように、大きなマシンが動いているイメージがあるかもしれません。

しかしノートPCも、このApacheを入れて設定をすることでサーバーとして使うことが出来ます。

この記事ではDjangoを外部に公開できるようにするために、Apacheを使っています。

Webサーバーの基礎的な部分を担うソフトウェアとして、覚えておきましょう。

WSGIとは

WSGI(ウィズギー)という言葉について解説します。

WSGI(Web Server Gateway Interface)は、PythonのWebサーバーとWebアプリケーションフレームワークをつなぐために規格化されたインターフェイスの定義です。

PythonにはたくさんのWebアプリケーションフレームワーク(Django、Flask、Bottleなど)があります。

それぞれのフレームワークについてはこちらの記事をご覧ください。

そしてこのWebアプリケーションフレームワークとWebサーバーの接続方法は多種多様で、既に用意されたものからユーザーが作ったものまで、色々なシステムが動いていました。

しかしこれではWebアプリケーションフレームワークを変える際には、一からコードを書き直しせざるを得ません。

そこで、共通化出来る部分はPythonという言語レベルで共通化しようという動きが出来ます。

これらのことから、WSGIに対応したWebアプリケーションフレームワークは、コードの修正を加えることなく色々なシステムに移植できることになりました。

そして今回使うPythonのモジュールに、mod_wsgiというものがあります。

mod_wsgiは、PythonとApacheをつなぐために必要なので、後の章でインストール方法を解説します。

runserverコマンドを使わない理由

Djangoには強力なrunserverコマンドがあります。

このコマンドを使うことによって実際にブラウザで確認しながらWebアプリケーションを作っていくことが出来ます。

このコマンドでサーバーが動いているのだから、わざわざApacheを使って公開する必要は無いんじゃないかと思うかもしれません。

しかし、このrunserverコマンドは開発中の使用だけを想定されています。

当然ApacheなどのWebサーバーアプリケーションほどセキュリティは厳しくなく、開発用に最適化されているので痒いところに手がとどく機能が無かったりします。

Apacheなどは世界中で使われていて様々な実績があります。

実績がたくさんあるということは、トラブルシューティングなど簡単で、インターネットで調べると見つかる可能性が高くなります。

これらの理由から、運用する際にはApacheなどのWebサーバーアプリケーションを使っていきましょう。

Apacheが動くDjango環境を作る

これからは、実際にApacheが動くDjango環境を作ってみましょう。

前提条件として、これから載せるコードやコマンドはすべてMacで実行したものになります。

WindowsやLinuxの場合はそれぞれのコマンドに置き換えて見てください。

また、Pythonの環境は、

・Python 3.6.0
・Django 1.11.2

となっています。

Djangoを準備する。

まずは、Djangoの環境を整えましょう。

Djangoはプロジェクトを作成して、その中にWebアプリケーションを作成するのが基本の流れになっています。

まずは、プロジェクトを作りたいディレクトリに移動して、このコマンドを実行しましょう。

これで、mySiteというディレクトリが出来上がり、プロジェクトが作成されます。

次にmySiteディレクトリに移動して、このコマンドを実行しましょう。

これで、mySiteプロジェクトの中に、myappというWebアプリケーションが作成されました。

これで、Djangoの下準備は完了です。

次は、Apacheの導入になります。

Apacheの導入

Macには、標準でApacheがインストールされています。

このコマンドを入力すると、Apacheのバージョンが確認できるかと思います。

筆者の環境

このように確認できればしっかりとApacheはインストールされています。

もしも確認できなければ、HomebrewでApacheをインストールして、パスを通すと動かすことが出来ます。

次にApacheを起動してみましょう。

このコマンドを入力して、管理者パスワードを入力すると、起動します。

ブラウザのアドレスバーにlocalhostと入力して移動してみると、以下のような画面が出ます。

スクリーンショット 2017-07-22 16.07.08

これで、Apacheの準備は完了です。

次は、mod_wsgiの導入になります。

mod_wsgiの導入

Pythonにpipというパッケージマネージャがあります。

パッケージマネージャとは、Pythonに後から追加するモジュール(機能)を管理するためのシステムです。

pipから、このコマンドを実行します。

mod-wsgi-httpdのインストールには時間がかかるので気長に待ちましょう。

これで、ApacheとDjangoをつなぐためのソフトウェアがインストールされました。

次に、どこにインストールされたのかを確認します。

pyenvを使っているのか、そのままのシステムで使っているPythonなのかによって変わってきます。

このコマンドでsite-packagesという文字が入っているパスを見つけ、実際に移動します。

そしてさらに、mod_wsgi/serverへ移動します。

現在のディレクトリは環境によって変わりますが、mod_wsgi/serverはこのような構成になっています。

treeコマンドによる出力

今回の目的は、mod_wsgi-py36.cpython-36m-darwin.soのパスを見つけることです。

このパスを、Apacheの設定ファイルに加えます。

confファイルの作成と動作確認

ここからはmod_wsgiとApacheをつなげていきます。

Apacheには複数の設定ファイルがあり、今回触るのはhttpd.confと呼ばれるファイルになります。

Macであれば、/private/etc/apache2/httpd.confにあります。

このファイルの末尾に、このような追記をします。

1行目でmod_wsgiのロードをします。

2行目以降はプロジェクトファイルの場所を指定して、Djangoとmod_wsgiとApacheをつなげています。

これで、Apacheを再起動して接続できれば、完了です。

このコマンドを実行してIt worksという文章が入ったhtmlファイルが表示されれば、Djangoとの連携は出来ました。

実行結果

ちなみにcurlコマンドを使った確認は、Apacheの動作確認でよく行われる方法です。

Apacheを使うことで、Djangoで作ったWebアプリケーションを公開することが出来ました。

Webサーバーソフトウェアのスタンダードとも言えるApacheに慣れておくことは、サーバーに強くなることと同じです。

Apacheの設定ファイルはとても奥が深く、初心者にはわからない部分がたくさんあるかと思います。

しかしエラーメッセージをそのまま検索することによって、同じ事例でつまづいている方の解決策を見つけることが出来ます。

学習のしやすさも、ユーザーが多いApacheだからこそのポイントですね。

まとめ

DjangoでApacheを使う方法を解説してきました。

エラーメッセージが出たりlocalhostにつながらない場合は、環境によってパスを変える部分を注意して見てみましょう。

Apacheはとても奥が深いソフトウェアですが、ユーザー数の多さを強みにたくさん調べてみましょう。

Djangoで作ったWebアプリケーションを動かしたい時は、ぜひこちらの記事を参考に挑戦してみてください。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

学習者インタビュー

人気記事セレクション

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニア
プログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

ryo

ryo

Web系の企業でバイトをしている大学一年生です。主にPythonに関連した記事を書いています。