Contents

複数の VPS で Python を使えるようにする簡単なお仕事。
りょうのすけにとっては簡単じゃないし、同じ作業の繰り返しは苦痛。

なので、あっさりさっくり終わらせられるように手順を書いておこう。

最後はどうなる?

この手順で進めていくと以下のような環境になります。

サーバーOS CentOS 5.5 32bit
(この VPS は CentOS 5 32bit しか使えない)
Python 2.6
mod_wsgi 3.3
Django 1.3

CentOS 5.6へのバージョンアップ

以下コマンドで現在のバージョンを確認

# rpm -qa | grep centos-release
centos-release-notes-5.5-0
centos-release-5-5.el5.centos

5.5ですね。

ってなわけで5.6にアップグレード!

# yum upgrade
Loaded plugins: fastestmirror
Determining fastest mirrors
* addons: ftp.iij.ad.jp
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp

Total download size: 79 M
Is this ok [y/N]: y
Downloading Packages:
(1/75): tmpwatch-2.9.7-1.1.el5.5.i386.rpm                |  19 kB     00:00
(2/75): passwd-0.73-2.i386.rpm                           |  20 kB     00:00
・・・・・・
・・・・・・

Complete!

なんだかいっぱい入ります。
10分の中でここが一番時間かかるかも。

ちゃんとできたかな?
確認しよう。

# rpm -qa | grep centos-release
centos-release-notes-5.6-0
centos-release-5-6.el5.centos.1

できてた。

リポジトリ追加

あっさりさっくり終わらせるために、yum のリポジトリを追加します。
すべては yum で始まり yum で終わります。

追加リポジトリその1 Fedora EPEL

# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

(ここで最新版を確認:http://download.fedora.redhat.com/pub/epel/5/i386/

追加リポジトリその2:RPMForge

# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

(ここで最新版を確認:http://packages.sw.be/rpmforge-release/

リポジトリを追加する。

# rpm -Uvh epel-release-5-4.noarch.rpm rpmforge-release-0.5.2-2.el5.rf.i386.rpm

おまけ。
Python 3.1 が欲しい場合は以下を入れるといいよ。

# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/ius-release-1.0-6.ius.el5.noarch.rpm
# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/epel-release-1-1.ius.el5.noarch.rpm
rpm -Uvh ius-release-1.0-6.ius.el5.noarch.rpm epel-release-1-1.ius.el5.noarch.rpm

http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/

追加したリポジトリは普段使わないので、無効化しておく。
enabled が1になっているので0に変更するだけ。

Fedora EPEL

# vi /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

RPMForge

# vi /etc/yum.repos.d/rpmforge.repo
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled=0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

あっさりインストール

yum を使ってあっさりさっくりインストールします。
–enablerepo オプションを付けて追加したリポジトリを利用します。

# yum --enablerepo=epel,rpmforge install httpd-devel python26 python26-devel python26-mod_wsgi
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.riken.jp
* extras: www.ftp.ne.jp
* rpmforge: apt.sw.be
* updates: www.ftp.ne.jp
・・・・・・
・・・・・・
Total download size: 26 M
Is this ok [y/N]: N
Exiting on user Command
Complete!

y を一回押すだけの簡単なお仕事。
これは簡単。
以下インストールされたパッケージ。

Installing:
httpd-devel i386 2.2.3-45.el5.centos.1 updates 149 k
python26 i386 2.6.5-6.el5 epel 6.5 M
python26-devel i386 2.6.5-6.el5 epel 169 k
python26-mod_wsgi i386 3.3-1.el5 epel 71 k
Installing for dependencies:
apr-devel i386 1.2.7-11.el5_6.4 updates 232 k
apr-util-devel i386 1.2.7-11.el5_5.2 base 53 k
cpp i386 4.1.2-50.el5 base 2.7 M
cyrus-sasl-devel i386 2.1.22-5.el5_4.3 base 1.4 M
db4-devel i386 4.3.29-10.el5_5.2 base 1.9 M
expat-devel i386 1.95.8-8.3.el5_5.3 base 132 k
gcc i386 4.1.2-50.el5 base 5.2 M
glibc-devel i386 2.5-58.el5_6.3 updates 2.0 M
glibc-headers i386 2.5-58.el5_6.3 updates 603 k
httpd i386 2.2.3-45.el5.centos.1 updates 1.2 M
kernel-headers i386 2.6.18-238.9.1.el5 updates 1.1 M
libffi i386 3.0.9-1.el5.rf rpmforge 87 k
libgomp i386 4.4.4-13.el5 base 72 k
openldap-devel i386 2.3.43-12.el5_6.7 updates 1.5 M
pkgconfig i386 1:0.21-2.el5 base 59 k
python26-libs i386 2.6.5-6.el5 epel 667 k

CentOS 5.6 には元々、Python 2.4 が入ってる。
# python とすると Python 2.4 が使われる。
今回入れた Python 2.6 を使うには # python26 とする。

確認してみよう。

# python26
Python 2.6.5 (r265:79063, Feb 28 2011, 21:55:56)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

2.6が使えるようになった。

動かしてみよう!

mod_wsgi を入ってるようだし、早速動かしてみよう。
ちなみに mod_wsgi は↓ここ(python26-mod_wsgi.so という名前になってる)
/usr/lib/httpd/modules

/etc/httpd/conf.d/ に設定ファイルまで作成される
/etc/httpd/conf.d/python26-mod_wsgi.conf

中身は↓こんな感じ。

LoadModule wsgi_module modules/python26-mod_wsgi.so

至れり尽くせり。

この設定ファイルに追記していこう。

# vi /etc/httpd/conf.d/python26-mod_wsgi.conf
WSGIScriptAlias /test /var/www/cgi-bin/hello.py

『/test』にアクセスがあった場合、hello.py を動かすよ・ってこと。

そして動かすスクリプトを書きます。

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

書き終わったら Apache 起動!

# service httpd start
Starting httpd:                                            [  OK  ]

ブラウザでアクセス。
http://localhost/test/

表示された!

Django を動かしてみる

波に乗ったところで Django に挑戦♪
まずは Django 本体を落としてきます。

# wget http://www.djangoproject.com/download/1.3/tarball/
# tar xzvf Django-1.3.tar.gz
# cd Django-1.3
# python26 setup.py install

注意:setup 時は python26 を使おうね!

プロジェクトの作成

# mkdir /var/www/cgi-bin/django
# cd /var/www/cgi-bin/django
# django-admin.py startproject testproject
# mkdir .python-eggs
# chmod 777 .python-eggs

このあたりは普通に Django の使い方なので特に気をつける事はないと思います。

ちゃんと Django は動いてるかな?
ここでも確認。

# cd /var/www/cgi-bin/django/testproject
# python26 manage.py runserver 0.0.0.0:8000

ブラウザで見てみよう。
http://localhost:8000/

おっけ〜!

これを mod_wsgi で動かしますよ。
設定の追加をしましょ。

# vi /etc/httpd/conf.d/python26-mod_wsgi.conf
AddHandler wsgi-script .wsgi
WSGIScriptAlias / /var/www/cgi-bin/django/django.wsgi
<Directory /var/www/cgi-bin/django>
Order deny,allow
Allow from all
</Directory>

『/』にアクセスがあった場合、django.wsgi を動かします。

で、その django.wsgi は以下の通り。

vi /var/www/cgi-bin/django/django.wsgi
import os, sys
sys.path.append('/var/www/cgi-bin/django')

os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings'
os.environ['PYTHON_EGG_CACHE'] = '/var/www/cgi-bin/django/.python-eggs'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Apache の再起動ですよ。

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

ブラウザで確認!
http://localhost/

さっきと同じ画面が表示されました!

まとめ

ここまで10分!(何も考えなければ)
あっさりさっくり簡単♪
アプリケーション作るなら MySQL とかも入れなきゃだけど〜
とりあえずこれで。

さあみんなでれっつ Python!

こういった設定を自分ですることは少なくなってるかもしれないけど、簡単だしできないよりできる方が良いよね。
以下参考にしたサイト。
ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編)
Setup Python 2.5, mod_wsgi, and Django 1.0 on CentOS 5 (cPanel)
[Django][mod_wsgi][CentOS] CentOS+mod_wsgiでDjangoを動かす
CentOS5にpython2.6+Django+mod_python+色々の環境を整える

ありがとです!!

Comments are closed.