今さらPython3 (65) - Apacheなど

第9章。果たしてWebは解きほぐせるのか?

入門 Python 3

入門 Python 3

bottleとflask(フラスコ)というwebフレームワークを見てきたけど、これらの中ではそれ自身がもっているテスト用のwebサーバーを使っていたいたり、最小限の機能を備えたpython自身が持っているwebサーバーを使っていたけど、そろそろ聞いたことがあるアレの出番かなと思ったり。

Apache

Webサーバーと言えば、これでしょ?というぐらい、これが頭に浮かんでくるわけですよ。

Welcome! - The Apache HTTP Server Project

Macだと最初から入っているので、インストールせずにそのまま行けるはず。バージョンを確認してみよう。

$ apachectl -v
Server version: Apache/2.4.16 (Unix)
Server built:   Jul 22 2015 21:03:09

起動してみる。

$sudo apachectl start

http://localhostにアクセス。

f:id:deutschina:20151226101537p:plain

動いてるね。出ているファイルはこれかな?/Library/WebServer/Documents/index.html.en

ここで、apacheのデフォルトサイトを定義するファイルとやらを探さないといけない訳だね。Mac OSX Yosemiteの場合は、/etc/apache2/httpd.confに設定ファイルがあるという情報をググって得たんだけど、普通にサーチしても出て来ない。要は、隠しファイルになっているので、とりあえず力尽くでファイルがあるかどうか確認してみよう。

$ sudo vi /etc/apache2/httpd.conf

ただ、本に書いてあるとおりの箇所がないと思っていてググっていたら、ドンピシャのがあった。

Set up Virtual Hosts in Apache on Mac OSX 10.10 Yosemite

とりあえずコレに倣って設定してみよう。

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

上の部分を検索して、Include文の先頭にある#を削除する。(アンコメント)

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

この行もアンコメント。(てか、この行の方がファイルの上の方にあるはず)

引き続いて、ファイルをいじる前に、事故防止のためにバックアップ取っておきますか。

sudo cp /etc/apache2/extra/httpd-vhosts.conf /etc/apache2/extra/httpd-vhosts.conf.bak

編集モードで入ってみます。

$ sudo nano /etc/apache2/extra/httpd-vhosts.conf

やっと本に載っているのと同じような箇所を発見。

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>

ただ、本に載っているのとかなり構成が違っていて、いろいろ試してみたけど上手く行かず、ずっとIt works!が表示され続けました。この続きは、後で出直すことにしよう。

VirtualHost Examples - Apache HTTP Server Version 2.4

ここら辺の設定を少し勉強してから再トライだね。

他のwebサーバーたち

本の中ではセクション別れてしまっているけど、Webサーバーでまとめておく。

Welcome! - The Apache HTTP Server Project
nginx news
The uWSGI project — uWSGI 2.0 documentation
CherryPy — A Minimalist Python Web Framework
Pylons Project : Home

イベントベースサーバーというのもあるらしい。

Tornado Web Server — Tornado 4.3 documentation
What is gevent? — gevent 1.1rc3.dev0 documentation
Gunicorn - Python WSGI HTTP Server for UNIX

全部を試す訳にはいかないので、名前の列挙のみ。。。

その他のフレームワーク

まずは比較サイト押さえておかないと。

WebFrameworks - Python Wiki

あとは列挙。データベースを背後に持って初めてアプリかなという気がするので、こういうのをやっておきたいところ。

The Web framework for perfectionists with deadlines | Django
web2py Web Framework
The Pyramid Web Framework — The Pyramid Web Framework v1.5.7
The Web Framework that scales with you. — TurboGears2 Website 3.0 documentation
akorn / wheezy.web — Bitbucket

この本は持っているので、djangoはちゃんと勉強したいと思いつつ、時間だけが経過しております。

Test-Driven Development with Python

Test-Driven Development with Python


(つづく)