2009-09-30

EC2 で Django を動かした

Django を動かすのに mod_python の入った本番サーバなんてないぞとつぶやいたら、@voluntas さんにEC2を勧められました。その顛末。EC2 のアカウントを取るとか、ssh でつなげる方法とかは割愛します。



MySQL、mod_python、静的ファイルは Apache で配信、/ パスがウェブアプリのルート、を想定しています。



AMI の選択
使用した AMI は、Quick Start カテゴリにある、Getting Started on Fedora Core 8 (AMI Id: ami-3c47a355) です。「Minimal Fedora Core 8, 32-bit architecture, Apache 2.0, and Amazon EC2 AMI Tools.」というやつです。特に深い理由はなくて、プレーンな Apache が欲しかっただけです。



パッケージのインストール
データベースには MySQL、Django の実行には mod_python を使います。MySQL は LAMP の M だから。mod_python は、公式ドキュメントでおすすめになっていたから。という程度の理由で選択しました。注意すべきは、python 2.5、Django 1.0 であることです。


# yum install mysql MySQL-python mod_python Django


ディレクトリ構成



  • /srv/foo/project ... Django プロジェクトディレクトリ。django-admin.py startproject で作るやつ。


  • /srv/foo/static ... スタティックファイルのフォルダ


  • /srv/foo/templates ... テンプレートのフォルダ


  • /var/www/html/media ... /usr/lib/python2.5/site-packages/django/contrib/media へのシンボリックリンク


  • /var/www/html/project ... /srv/foo/project へのシンボリックリンク


  • /var/www/html/static ... /srv/foo/static へのシンボリックリンク


Apache の設定
/etc/httpd/conf/httpd.conf の最後に以下を追記。



<Location "/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE project.settings
    PythonOption django.root /project
    PythonDebug On
    PythonPath "['/srv/foo'] + sys.path"
</Location>
<Location "/static">
    SetHandler None
</Location>
<Location "/media">
    SetHandler None
</Location>






その後、


# apachectl restart

して、/ にアクセスすると、It works! が出たような気がします。



MySQL の設定
ここらへんからが記憶がかなり曖昧です。



/etc/my.cnf を以下のように編集 (参考 http://d.hatena.ne.jp/MOZZ/20070809 )



[mysqld]
(省略)
default-character-set=utf8
skip-character-set-client-handshake

(省略)

[mysql]
default-character-set=utf8


つづいて、確かこんな感じ。



# mysql -u root -p
Enter password:

mysql> CREATE DATABASE foo_db CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

mysql> GRANT ALL ON foo_db.* TO 'username'@'localhost' IDENTIFIED BY 'mypassword';
Query OK, 0 rows affected (0.03 sec)

mysql> quit
Bye
# /etc/init.d/mysqld restart


以上が、本番サーバの設定。あと settings.py 内部での開発/練習サーバの設定わけと、デプロイをするためのスクリプトを書きました。眠くなったので、またこんど。



2009-08-29

LLTV に行ってきました

Lightweight Language Television に行ってきました。LL フィーリングカップルなるセッションで、パネリストとして出ました。このセッションが「そもそもLLではない」「女性が集まるのか?」などなど、新しい試みでした。で、私は一応 Python の人なわけですが、技術的なセッションではないので、せっかくの機会だからってことで、出ました。



各種の名言




  • .py とか .rb みたいな、きもい拡張子

  • 女性プログラマだったらパッチ送る

  • [働きたい会社は?] 家の近く

  • 女性の行動はバグに見えるかも知れないけど、それは仕様

  • 女性の意思決定の状態遷移図が欲しい(これは自画自賛)



次回はLTででたいかも。あと torufurukawa でついったーしてます。



2009-08-25

第24回 トライアスロン中島大会に行ってきました

11年ぶりに、トライアスロン中島大会に行ってきました。愛媛県松山市の瀬戸内海に浮かぶ、中島(なかじま)という島で開催される、51.5km のトライアスロンです。学生のころは、ちょうどインカレの予選と本戦の間に開催されるってことで、参加していました。で、母と妹もいつの間にやら常連になっていて、このたび、3人で参加。父は前夜祭と応援に参加。



先月のアクアスロンでは、スイム棄権というどうしようもない結果でしたが、今回は無事完走しました。ちょうど3時間くらい。コースは違いますが、東野幸治よりも明らかに遅いのですが、しょうがないです。



東野りの影響かどうか分かりませんが、今回は400人ちょいの定員に申し込みが殺到したらしく、100人以上に参加許可が出なかったらしいです。らっきー。この中島大会 TJ 読者が選んだ、2007年出場して良かった大会第10位です。個人的にも、この大会が大好きなので、勝手に宣伝。アド街みたい。





この距離で JTU が絡まないのに、運営がしっかりしています。24回開催はダテではありません。コースもトランジットもシンプルですが、あやうげな箇所については、プログラムに細かい資料が載っています。昨年からは RF タグを使った計測もしているそうで。要所要所にスタッフがいるので困る事もありません。



スイムはビーチと平行に、2往復。瀬戸内海なので波も高くなくて泳ぎやすいコースです。沖縄とかのレースに比べると、水はきれいではないかも知れません。今年はクラゲもいませんでした。クラゲが出る年もあります。



バイクは、海岸沿いを走ります。片道10kmを2往復。ほとんどフラットです。折り返し付近にちょっとした坂が1つ、短いけどきつめの坂が1つ。ですがほとんどフラットと言ってよいかと。折り返し付近は、道も狭いので、追い越し禁止+徐行です。ゆるいカーブはありますが「コーナー」は1カ所くらい。



ランは 5km を1往復。スタートとゴールは同じ場所です。スタート直後に軽い上り坂、折り返し付近にもちょっとした坂があります。ほとんどフラット。



ランのエイドステーションが 2.5kmごとにあります。道の片側にしかないので、反対車線に行って水をもらいます。ほとんどが中学生のボランティアですが、ちゃんとマニュアルがあるのか、スムーズです。水、スポーツドリンク(おそらく毎年アクエリアス)、スポンジがデフォルト。エイドステーションによっては、バナナとスイカがあります。私はスイカとバナナにアレルギーがあるので、もっぱら水とアクエリアスですが、まあ、スイカアレルギーの人なんて、ほとんどいないんではないかと。



あと非公式なエイドステーションとして、沿道に住んでいる方が、水をかけてくれます。水道代払いましょうかね。大丈夫ですかね。



沿道でたくさんの人が応援してくれるんですよね。鳴りもの使っているグループとか、ゼッケン番号みて名前で応援してくれるグループとか。私は完走目的なので、応援をいただいたら、できるだけ「あざーっす!!」と言いました。だって嬉しいんだもん(こどもかよ)。



島全体のイベントなので、大会前からずーっと島全体が何か作業していると思うのですよね。当日は島の外周道路を半分くらい閉鎖するので、みかん農家の人は仕事できないわけです。別にみんながみかんを買いあさって帰るわけでもないですし。うわさによると、中学生はスタッフを「やらねばならぬ」らしいです。なので感謝、感謝なのです。何かお返しができないですかねぇ。



という気分になる大会です。特に初心者におすすめですが、2:15 くらいで走っていた学生時代も好きな大会でした。2:10 以内で走る人にとっては、どうなのかさっぱり分かりません。



一応、デメリットとなりうることも書いておきます。まず、前泊が条件です。土曜日の午後から受付開始、前夜祭に出ねばなりません(魚とうどんが、おいしいわけですが)。仕事や家庭の事情によっては、この条件はきついと思います。離島なので、前泊しないと、事実上参加できないわけですが。



離島つながりですが、400人の宿泊施設が、事実上 MAX です。住民の方の家に泊まる「ホームステイ」なる選択も公式に用意されていますが、それでも、ぎりぎりってとこではないでしょうか。希望を出せますが、基本的に大会側で宿泊施設を割り当てます。なので、まくらが違うと嫌とか、他人の家に泊まるのは嫌とか、雑魚寝は嫌とかだと、厳しいです。ちなみに私はホームステイでした。多謝。学生のころは雑魚寝もありました。私はいびきをかくことがあるので、隣の人ごめんなさいでした。



そういう大会です。久しぶりに 51.5km のトライアスロンに参加して、あーやっぱり中島大会いいなぁと思った次第です。来年も申し込みます。抽選にあたるといいなぁ。