2017/12/24

WSGIを設定しよう

ちょっと間が空いてしまいました。

転職活動してみたり、単純に仕事が忙しかったり、記事のためにいろいろ作業したりで、
投稿が一か月ぶりになってしまいました。時の流れが速いよ最近。<○_○>ほえー

さて今回はWSGIを設定します。
今までCGIとしてPythonを触ってきたのですが、
これからPythonのWebアプリケーションフレームワークを使ってゆく環境準備として
Apache + mod-WSGI の環境構築をします。

それでは本編です。

目次

目標

Apache + mod-WSGI の環境構築を行いpythonを実行する

というかその前に

WSGIってなんだ?という話。
これについては、
gihyo.jpさんの WSGIとPythonでスマートなWebアプリケーション開発を
Webアプリケーションフレームワークの作り方 in Pythonさんの WSGI についてで詳しく書いてある。
ありがとうございます。

とりあえず、
「PEP3333で定義されたPythonアプリケーションを動作させるWebサーバーのインタフェース」と理解。
概念的で真に理解できたかは怪しいが、ここから先は実戦で学んでゆきたいところ。

設定

以下の手順で設定してみます。

パッケージのインストールをします。

yum install -y mod_wsgi.x86_64

状況確認

パッケージのインストールが終わると、
/etc/httpd/modules/にmod_wsgi.soが追加されているはずです。
ファイルがあるか確認しておきましょう。

Apacheの設定ファイルを編集します。

/etc/httpd/conf/httpd.confに以下を追記します。
1行目がmod_wsgi.soモジュールの読み込みです。
先ほど確認したmod_wsgi.soのパスを書きます。
2行目がWSGIが実行するpythonアプリケーションの実行対象です。
pythonアプリケーションのパスを記述します。
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / /var/www/webapp/index.py

Pythonアプリケーションを作成します。

/etc/httpd/conf/httpd.conf で実行対象にした、
/var/www/webapp/index.py を作ります。
mkdir /var/www/webapp
nano /var/www/webapp/index.py

/var/www/webapp/index.pyの中身は以下のようにしてみます。
#!/usr/bin/python
# -*- coding:utf-8 -*-
def application(environ,start_response):
    status = '200 OK'
    htmltext = '''
<html>
<head>
</head>
<body>
    <h1>"hello world."</h1>
    mod_wsgiで呼び出されました。
</body>
</html>
'''
    response_header = [('Content-type','text/html')]
    start_response(status,response_header)
    return htmltext

動作テスト

ブラウザで「Http://xxx.xxx.xxx.xxx」にアクセスしてみましょう。
以下のようなページが表示されるはずです。
うまくいったでしょうか?

終わりに

今回はApacheにmod_wsgiを導入してみました。
今回も調べ調べしながらの作業ですが、ここまでは問題なさそうです。

今度はPythonのWebアプリケーションフレームワークに移ります。
BottleやFlask,Django・・・まだ見ぬフレームワークの世界に突入です。
またがんばってやってみましょう。

参考になれば幸いです。
実行は自己責任で!

以上

0 件のコメント:

コメントを投稿

AWSに手を出してフレームワークも使ってみたが・・・。

サイトを作り直しました。 AWS上に構築した Content created by AXY を作り直しました。 具体的にはbottle.pyを使ったpythonで構築したサイトからPHP7を使用したサイトに再構築しています。 特別何か問題点があったというわけで...