読者です 読者をやめる 読者になる 読者になる

AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

python & Django 環境構築手順

python Ubuntu CentOS

Ubuntu, CentOS 上に連続で環境構築をした時のメモ。Linux系は、ディストリビューションによって、結構ポリシーが違いますね(対象OSの新しさにもよりますが)。

ディストリビューション別の環境

今回、構築したのはこんな環境です。Djangoの管理を、何に任せるかは検討事項ですね。

Ubuntu 14.04

Pythonは、最初から2.7.x系をサポートしているので簡単。ポイントは、Djangoをどこで管理するかだけでしょうか?今回はDjango1.6.x系で大丈夫と考えて、apt-getで管理されているものを利用する事にしました。

  • OS: Ubuntu 14.04 LTS
  • Python: 2.7.x (apt-getにて)
  • Django: 1.6.x (apt-getにて)
  • OSパッケージ管理: apt-get (導入済み)
  • Pythonパッケージ管理: pip (手動導入)
CentOS 6.x

Pythonが、CentOS6系(RedHat6系)だと 2.6.x系のサポートのみです。そこで、SCLという追加パッケージ集?を利用する事にしました。あと、Djangoyumでは管理されてないようなのでpipを利用という流れ。2010年リリースのOSなので、最新を使おうと思うと少し手入れが必要(ただ、現在はオフィシャルでサポートされているのが良いところだと思った)。

  • OS: CentOS 6.6
  • Python: 2.7.x (yumにて。後述のSCLが必要)
  • Django: 1.6.x (pipにて)
  • OSパッケージ管理: yum (導入済み)
  • Pythonパッケージ管理: pip (手動導入)

SCLの導入(CentOSの場合)

Python2.7.x系を使う為に、「Software Collections」を利用します。RedHat社が、リリース後に追加対応する事を決めたパッケージ群を利用する為の仕組みで、既存パッケージとは異なりバージョン番号が付いているのが特徴。

$ sudo yum install centos-release-SCL

導入後、python2.7系のパッケージが利用できるようになります。

$ yum list | grep scl | grep python27
$ sudo yum install python27

導入確認と利用テスト。

$ scl -l
python27

$ ls /opt/rh/
python27

$ scl enable python27 'python -V'
Python 2.7.5

全ユーザー共通利用

参考サイトにあるように /etc/profile.d/ 配下にスクリプトを用意する事にしました。

pipの導入

次のワンライナーで、インストールできます。

curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python

※get-pip.pyの安全性には、事前に配慮する必要はあります

pipの導入 w/SCL

ワンライナーでやったら、SCLのPythonを使わずに動作して良くわからなくなったので、一つずつ実行。

$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ sudo -s
# python -V
Python 2.7.5
# python get-pip.py

こんな形になれば正しくインストールされているかと。

# which pip
/opt/rh/python27/root/usr/bin/pip
# which easy_install
/opt/rh/python27/root/usr/bin/easy_install

easy_install使わなくてもpip入れれるっていうのが、スムーズでいいなぁと思いました(get-pip内部でsetuptolsの判断はされているので関連はあるようです)。

Djangoの導入 pip w/SCL

source で設定したパスを sudo ではもっていかないようなので、こんな感じでインストールしました。

$ sudo -s
# python -V
Python 2.7.5
# pip install 'Django<1.7'

インストール確認

# pip freeze
...
Django==1.6.8
...

その他

SCL を使うと、使い勝手がけっこう変わりますね。defultのpythonは、uninstallした方が混乱がなさそうな気もするが、どうなんだろうか?sudo して、ちゃんと使う方法も、そのうち調べたい。