複数の VPS で Python を使えるようにする簡単なお仕事。
りょうのすけにとっては簡単じゃないし、同じ作業の繰り返しは苦痛。
なので、あっさりさっくり終わらせられるように手順を書いておこう。
最後はどうなる?
この手順で進めていくと以下のような環境になります。
サーバーOS CentOS 5.5 32bit
(この VPS は CentOS 5 32bit しか使えない)
Python 2.6
mod_wsgi 3.3
Django 1.3
CentOS 5.6へのバージョンアップ
以下コマンドで現在のバージョンを確認
centos-release-notes-5.5-0
centos-release-5-5.el5.centos
5.5ですね。
ってなわけで5.6にアップグレード!
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分の中でここが一番時間かかるかも。
ちゃんとできたかな?
確認しよう。
centos-release-notes-5.6-0
centos-release-5-6.el5.centos.1
できてた。
リポジトリ追加
あっさりさっくり終わらせるために、yum のリポジトリを追加します。
すべては yum で始まり yum で終わります。
追加リポジトリその1 Fedora EPEL
(ここで最新版を確認:http://download.fedora.redhat.com/pub/epel/5/i386/)
追加リポジトリその2:RPMForge
(ここで最新版を確認:http://packages.sw.be/rpmforge-release/)
リポジトリを追加する。
おまけ。
Python 3.1 が欲しい場合は以下を入れるといいよ。
# 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
[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
[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 オプションを付けて追加したリポジトリを利用します。
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 とする。
確認してみよう。
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
中身は↓こんな感じ。
至れり尽くせり。
この設定ファイルに追記していこう。
WSGIScriptAlias /test /var/www/cgi-bin/hello.py
『/test』にアクセスがあった場合、hello.py を動かすよ・ってこと。
そして動かすスクリプトを書きます。
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 起動!
Starting httpd: [ OK ]
ブラウザでアクセス。
http://localhost/test/
表示された!
Django を動かしてみる
波に乗ったところで Django に挑戦♪
まずは Django 本体を落としてきます。
# tar xzvf Django-1.3.tar.gz
# cd Django-1.3
# python26 setup.py install
注意:setup 時は python26 を使おうね!
プロジェクトの作成
# cd /var/www/cgi-bin/django
# django-admin.py startproject testproject
# mkdir .python-eggs
# chmod 777 .python-eggs
このあたりは普通に Django の使い方なので特に気をつける事はないと思います。
ちゃんと Django は動いてるかな?
ここでも確認。
# python26 manage.py runserver 0.0.0.0:8000
ブラウザで見てみよう。
http://localhost:8000/
おっけ〜!
これを mod_wsgi で動かしますよ。
設定の追加をしましょ。
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 は以下の通り。
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 の再起動ですよ。
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+色々の環境を整える
ありがとです!!