サーバや仮想サーバ上で動作するオペレーティングシステムは、コンピュータのリソースへのアクセスを管理しています。また、オペレーティングシステムはPythonのWebアプリケーションを動作させるために必要なプログラムをインストールする方法も提供します。
オペレーティングシステムは様々な演算処理を簡単に行えるようにしてくれます。例えば、ファイルへの書き込みやネットワーク越しの通信、一度に複数のプログラムを実行といったことです。さもなければ、あなた自身がCPU、メモリ、ネットワーク、グラフィックカードなどの低レベルな実装を行わなければなりません。
LinuxやMac OS X、Windowsのような既存のオペレーティングシステムを使う場合を除けば、Webアプリケーションの一部として、新しいオペレーティングシステムを書かなくてはなりません。これではPythonのWebアプリケーションの処理を書くことは不可能です。アセンブラのコードのメモリリークを探すのに忙しくそんな暇はありません。
幸運にも、Pythonの世界にはオープンソースのコミュニティによって、Webアプリケーションを動かすために使用することができるLinuxが提供されています。
本番環境でPythonのWebアプリケーションを動かすためのオペレーティングシステムとしておすすめするのはLinuxです。Linuxにはいくつかのディストリビューションがあり、本番サーバを稼働するのに一般的に使われています。Ubuntu Long Term Support(LTS)リリースや、Red Hat Enterprise Linux、CentOSが良い選択肢でしょう。
Mac OS Xは開発環境に向いています。Linuxではなく、WindowsやMac OS Xを使わなければならない明確な理由が無い限り、本番環境にはLinuxを利用すことをお勧めします。
UbuntuはCanonical Ltd社によって開発されているLinuxディストリビューションです。Ubuntuはaptitude package managerを含むDebianディストリビューションのパッケージをベースに使用しています。
Ubuntu LTSは開発向けにお勧めのバージョンです。LTS版はCanonicalによるポストリリース更新が5年間続きます。2年毎にCanonicalは新しいLTSをリリースし、簡単にアップグレードが行え、また必要であれば更新をスキップすることも柔軟にできます。2014年11月時点で14.04 Trusty Tahrが最新のUbuntu LTSです。
LinuxsサーバでPythonアプリケーションを運用するには複数のAptitudeパッケージがあります。
Red Hat Enterprise Linux (RHEL)とCommunity ENTerprise Operating System (CentOS)は同じディストリビューションです。大きな違いはCentOSはオープンソースでRed Hatの派生物を無償で利用します。
Red HatとCentOSはDebianベースのLinuxディストリビューションとは異なるパッケージマネージャとコマンドラインインタフェースを利用します。RPMパッケージマネージャとYellowdog Updater, Modified(YUM)です。RPMは.rpm
ファイルを使ってパッケージングの管理とライブラリやアプリケーションのインストールを行います。YUMはRPMシステムをコマンドラインで利用するためのツールです。
* What is a Linux distribution and how do I choose the right one?
Lifehackerのguide to choosing a Linux distro.
UbuntuのようなDebianベースか、CentOSのようなFedoraベースのLinuxディストリビューションのいずれかを選択します。
基本的なセキュリティを固めましょう。fail2banや、それに類似する基本セキュリティパッケージをインストールします。sudo権限を持つ新しいユーザを作成し、ルートでのログインは禁止します。パスワードでのログインを禁止し、公開鍵・非公開鍵の鍵交換方式によるログインを設定します。システムのセキュリティに関しての詳細は以下も読んでください。
Pythonアプリケーションを動作させるために必要な環境を用意します。これは選択したディストリビューションによって必要なパッケージは異なります。
Webサーバの章を読み、インストールを行ったら開発プロセスの次のステップに進みます。