Hatena::ブログ(Diary)

Webと文字

よければ、はてブしてください。( ´∀`) George.Nagaoka@gmail.com

JavaScript IME:海外からブラウザで日本語を変換 新URL 旧URL:
多言語入力ブックマークレット:ブラウザでロシア語、中国語、アラビア語・・・
【軍曹が】携帯電話開発の現状【語る】をAA化した
AAのデータベース
趣味のページ

2011-11-20

TTF/OTF Reader

 自作フォント解析ツール。もともとGAE(GoogleAppEngine)で作っていたけど、さくらVPS512+ngin0.8+apache2.2+mod_wsgi3.3+python2.7.1+django1.3に移植。まだフォントアップロードができないですが、フォントフォーマットの勉強に良かったら使ってみてください(´・ω・`) safari,Chrome,FireFox,IE9以上で見てください。IE8,Operaは一部の機能が使えません。

旧:http://fontconverter.appspot.com/

新:http://www28095u.sakura.ne.jp/webmozi/fdv/

2011-10-30

文化がちが〜〜〜う!

f:id:project_the_tower2:20111030192346p:image*1

  • FireFoxとsafariとChromeでJavaScriptの動きがぜんぜん違うとき
  • 上にさらにOperaとIEが参戦した時
  • Mobileも加わってぐちゃぐちゃに
  • PythonとPHPとPerlのLL戦争を見た時
  • 上にJavaが出てきたとき
  • OpenTypeとTrueTypeとPostScriptの仕様を読んだ時
  • AdobeとAppleとMicrosoftでフォントの仕様書が違うとき
  • 環境ごとに読み込んだり読み込まなかったりするフォントテーブルがあるとき
  • OSごとにフォントのレンダリングがぜんぜん違うとき
  • OSのバージョンごとに違う動きをした時
  • フォントベンダごとに全然立ち位置が違うのを知ったとき
  • 文字集合ごとに字形が微妙に違うとき
  • 国ごとに字形がちょびっとづつ違うとき
  • IVSをみたとき
  • WindowsとMacとLinuxで全然違うとき
  • Apacheとnginxでconfの書き方がぜんぜん違うとき
  • OSごとに改行コードが違ったとき
  • 等々

 対立する個々のスタンスは認めたい。AにはAの、BにはBの良さがある。でもA→Bは無理だ。逆も然り。ぜんぜんわからない。文化が違う。戦争する理由がわかった気がした。一種類に限定したほうが(少なくとも当人にとっては)幸せに決まっている。

*1:画像はヒストリエ3巻から借用

2011-10-11

2011年度版 はてブ数から見る日本版Wikipedia

wikipediaのはてブ数は…?

 はてなブックマークで人気のWikipedia記事ベスト20*1をまとめました。過去、2008年*2と2009年*3に同じような企画をやりました。2010年は、はてなの運営が同様の企画*4を行なっています。

結果は…

順位タイトルはてブ数差分*5
1Wikipedia:珍項目 - Wikipedia1327-
2スラックティビズム - Wikipedia619619
30.999... - Wikipedia521130
4三毛別羆事件 - Wikipedia509359
5空飛ぶスパゲッティ・モンスター教 - Wikipedia496149
6DHMO - Wikipedia493240
7バーナム効果 - Wikipedia474205
8Getting Things Done - Wikipedia460245
9シモ・ヘイヘ - Wikipedia433130
10不気味の谷現象 - Wikipedia402151
11モンティ・ホール問題 - Wikipedia348146
12ジョン・タイター - Wikipedia336217
13人生、宇宙、すべての答え - Wikipedia332106
14UVB-76 - Wikipedia329329
15アスペルガー症候群 - Wikipedia308115
16クオリア - Wikipedia295113
17アナタハンの女王事件 - Wikipedia293293
18ジョック - Wikipedia283108
18数学記号の表 - Wikipedia283100
19静岡県庁要塞化計画 - Wikipedia282282
20報道におけるタブー - Wikipedia24352
20卵かけご飯 - Wikipedia24342

ほぅ…

 なかなか興味深い結果になりました。まず、スラックティビズムは2009年、2010年には全く注目されていない言葉でした。この言葉が注目されるきっかけとなったのは2011/3/11の地震からです。言葉の意味は「何かをした気になること」。被災地へのボランティア活動や募金活動を行う人たちの偽善めいた行動に当てはまる言葉として、この言葉が注目されたようです。

 UVB-76(ロシアで30年にわたって無線放送された意味不明なブザー音)は2009年には注目されていませんでしたが、2010年に発信音が停止したことで、大手ニュースサイトに取り上げられ、注目されました。

 今回の調査で最も異彩を放っていたのが静岡県庁要塞化計画です。記事は削除され、詳細は不明ですが、静岡県庁舎 - Wikipediaへ一部の記事が移動したようです。この言葉も3/11の地震から広まっています。

 20位を通してIT用語は皆無で、IT技術者が多いと感じるはてなのランキングとしては以外だなと感じました。アニメやラノベのタイトルが1つもないのも以外です。ニュースサイトなどで未知の事柄や言葉が出てきたときに、一気に注目されるというのがパターンなようです。


では、また来年

 

2011-03-28

Linux学習記

はじめに

 VPS(仮想専用サーバ)を借りて色々とやりたいけど、サーバーのこと全然分からないんよ( ・ω・)・・・。そういう訳で、予行練習としてVMwareでLinux(CentOS)を勉強した記録を書きます。

私のレベル

 Linuxのコマンドはcdしか知らない。エディタ(vi)の使い方が分からない。ディレクトリの構造がわからない。

環境と準備

パソコン

 WindowsXP SP3、3GB RAM、Core2 Duo 3GHz 32bit

VMware Playerのダウンロードとインストール

 サイト*1に行き、ダウンロード登録の後、挫けそうなぐらいの質問に耐える。その後、ダウンロードしてインストール。

CentOSのDVD imageをダウンロード

 参考資料1を参考にtorrentで落とす。torrentソフトがない場合、BitComet*2をインストールした後、torrentファイル*3をクリックすると自動でダウンロードが始まる。1時間ぐらいで落ちてくる。

設定ファイルを作る

 参考資料1を参考に設定ファイルを落とす。リンク*4に行き、easyVMX v2.0をクリック。以下のように設定してから、ページ下部にある"Create Experimental Virtual Machine"ボタンを押して設定ファイル(zip)をダウンロードする。

Virtual Hardware

Virtual Machine Name:CentOS5_5
Select GuestOS:Redhut Linux
Memory Size:320 MB
# of CPUs:1 CPU

Hard Disk Drives

Disc #1:Disc Size 10GBDisk Image (.vmdk)Persistent
設定ファイルの編集

 CentOS5_5.zipを解凍して中のCentOS5_5.vmxファイルをテキストエディタで開く。以下の修正を加える。torrentでダウンロードしたCentOSのDVDイメージのパスは適時変えること。dvdだがcdのままでいい。

# Settings for physical CDROM drive

ide1:0.present = "TRUE"

ide1:0.deviceType = "cdrom-image"

ide1:0.startConnected = "TRUE"

ide1:0.fileName = "C:\VM\CentOS-5.5-i386-bin-DVD\CentOS-5.5-i386-bin-DVD.iso"

ide1:0.autodetect = "TRUE"

 ビープ音がうるさいので消すように設定する(参考資料2)。以下の行をCentOS5_5.vmxに追加する。C:\Documents and Settings\ユーザーの名前\Application Data\VMwareにあるpreferences.iniを開き、同様に追加する。*5

mks.noBeep = "TRUE"

インストール

 CentOS5_5.vmxをダブルクリックしてVMware Playerを起動する。CentOSのブート画面が出てきたら最初の画面でEnterキーを押してbootする。途中、DISCをチェックするか聞かれるが、skipを選択する

 GUIの設定画面になったら、日本語→日本語キーボードを選択する。DISCを初期化するかどうか聞かれるが、すべてYesでいい。Windowsには干渉しない。単に10GBが設定されるだけである。rootユーザー(Windowsのadministratorみたいなものか?)のパスワードを設定する。インストールするコンポーネントにGnomeのデスクトップとServerを選択する。ネットの設定はそのままの設定で繋がると思う。以上でインストールを開始する。

再起動の前に

 インストールが終わったら再起動を促す画面が出るが、その時点でVMwarePlayerwを終了する。CentOS5_5.vmxを開き、修正箇所をもとに戻す。

# Settings for physical CDROM drive

ide1:0.present = "TRUE"

ide1:0.deviceType = "cdrom-raw"

ide1:0.startConnected = "TRUE"

ide1:0.fileName = "auto_detect"

ide1:0.autodetect = "TRUE"

再起動後は

 ファイヤーウォールはそのままでいい。SELinuxは無効にする。これがあるとスクリプトを設置した時にうまく動かないことがある。リラベルがどうとか聞かれるがYesでいい。日付と時刻はどうやってもずれたのでよく分からない。ユーザーの追加は自分の好きなように設定する。個人アカウントということになり、rootより出来ることが少なくなる。サウンドはそのままで。その後、SELinuxの設定変更より再起動をする。

ログイン

 rootでログインする。VMwareのメニューバーのVM>VMewareツールズのインストールを選択する。自動的にファイルがマウントされて表示されるので、XXX.tarを右クリックして展開をクリック。デスクトップに展開されたVMware-install.plをクリックして端末内で実行を選択する。端末の問に全てEnterを押して処理を処理を完了させる。完了したらデスクトップのフィルダは削除して、再起動する。

コマンドでインストール

 デスクトップで右クリックメニューから端末を開くを選択する。

[root@localhost ~]# rpm httpd -qa

httpd-2.2.3-43.el5.centOS

[root@localhost ~]# rpm python -qa

python-2.4.3-27.el5

rpmコマンドはWindowsのプログラムの追加と削除の様な機能を持つ(参考資料3)。qaを付けるとインストールされているパッケージのバージョンを見ることができる。今は実際に何かをインストールする場合は、拡張版であるyumコマンドを利用(参考資料4)する。

mysqlサーバーをインストール (2011/9/7 追記)

yumでインストールされているパーケージを確認する(参考資料22)。

[root@localhost ~]# yum list installed | grep mysql

mysql.i386 5.0.77-4.el5_4.2 installed

mysqlサーバーをインストール。mysqlだとクライアントなので、mysql-serverとすること。開発用コードもインストールする。

[root@localhost ~]# yum install mysql-server

 ###省略

[root@localhost ~]# yum install mysql-devel

 ###省略

参考資料24を見て、文字コードの設定、mysqldサービスの開始、停止の確認、ユーザーの作成を済ませる。

ソースからpythonをインストール

 rpmが配布されていない場合、自分でソースコードを引っ張ってきてコンパイルし、インストールすることもできる。ただしアンインストールを行うのが難しくなるため極力rpmを通じてインストールするほうがいいらしい(参考資料5)。それでもLinuxの環境においてrpmが配布されていないことは多く、なおかつ設定を細かく行えるため、この方法でpython2.7をインストールすることにした。

[root@localhost ~]# cd /usr/local/

[root@localhost local]# ls

bin etc games include lib libexec sbin share src

 cdコマンドはディレクトリを移動するときに使う。ディレクトリを指定するとき、途中まで入力してtabキーを押すことで補間してくれる。またtab+shiftでその下のディレクトリを列挙することができる。

 linuxのディレクトリはWindowsと大きく違う。個々のディレクトリには意味があり、それに応じて使い分けていく(参考資料6)。/usr/local/以下はソースコードからインストールした先になる場合が多い。しかし今回はこの下にpython2.7.1ディレクトリを用意し、そこに一式をインストールすることにした。

[root@localhost local]# cd src/

[root@localhost src]# wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz

 ###省略

[root@localhost src]# tar xvfz Python-2.7.1.tgz

 ###省略

[root@localhost src]# cd Python-2.7.1

 python2.7.1のインストールは参考資料7を参考に行った。/usr/local/src以下は主にダウンロードしたソースファイルを置いておく用に用意されたディレクトリである。wgetコマンドはhttpを通じてファイルをダウンロードするコマンドである。tarコマンドはファイルを解凍・分解することができる。拡張子tgzはtar.gzであり、多数のファイルがtarでまとめられ、gzipで圧縮されている。xvfzで解凍と展開が同時に行える。

[root@localhost Python-2.7.1]# yum -y install gcc gcc-c++

 ###省略

[root@localhost Python-2.7.1]# yum install zlib zlib-devel

 ###省略 途中「y」を押してEnterを押す。

[root@localhost Python-2.7.1]# yum install sqlite-*

 なんとCentOSにはコンパイラが入っていない。gccをyumでインストールする(参考資料8)。zlibもpythonで必要になるのでyumでインストールする。sqlite3はpythonの標準モジュールであるが、yumで予めインストールされていないとImportErrorが起きるためいれておく(参考資料14)((実はこれでconfugureからやり直した(;・∀・)))。

[root@localhost Python-2.7.1]# ./configure CFLAGS=-fPIC --enable-shared --prefix=/usr/local/python2.7.1

 ###省略

[root@localhost Python-2.7.1]# vi Modules/Setup

#コメントをはずす

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

[root@localhost Python-2.7.1]# make

###省略

[root@localhost Python-2.7.1]# make install

###省略

./configureの後にオプションを付けて実行することで、makefileを作成するらしい(参考資料9)。configureはコマンドではなくてスクリプトファイルのようだ。viというコマンドはコンソールをエディタに変更する。非常に使いにくいエディタであるように感じたが、Linuxの人は好んで使うらしい。aとESCをトグルで押すことで入力したりコマンドを打ち込んだりのモードの変更ができる。「a」を押して入力が終わったら、「ESC」を押して「:wq」を押すと保存されてエディタは終了する。なおviをvimとすると色がついたりして少し幸せになれる。コマンドモードで「/zlib」を実行するとzlibが検索される。make及びmake installでプログラムをビルド、インストールする。

[root@localhost Python-2.7.1]# ln -s /usr/local/python2.7.1/bin/python /usr/local/bin/python27

 実行ファイルのパスを通すためにシンボリックリンクを作成する。lnコマンドにsオプションをつけてファイルを指定するとシンボリックリンク(Windowsでいうショートカット)が作成できる(参考資料10)。

[root@localhost Python-2.7.1]# python27

python27: error while loading shared libraries: libpython2.7.so.1.0: cannnot open shared object file: No such file or directory

[root@localhost Python-2.7.1]# vi /etc/ld.so.conf.d/python2.7.1.conf

/usr/local/python2.7.1/lib

[root@localhost Python-2.7.1]# ldconfig

 python27を実行したが、libpython2.7.soライブラリ(拡張子soはdllのような物である)が見つからないとエラーが出る。設定ファイルを追加してパスを追加する(参考資料11)。ldconfigコマンドでライブラリのパス変更を完了させる。

[root@localhost Python-2.7.1]# python27

Python 2.7.1 (r271:86832, Mar 28 2011, 06:14:58)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2

Type "help","copyright","credits" or "license" for more information.

>>>

python2.7.1の対話モードが無事起動できた。終了するときはCtrl+Dで終了できる。

サーバーを起動して試す

 CentOSには予めApacheがインストールされている。

[root@localhost ~]# /etc/rc.d/init.d/httpd start

httpd を起動中:                        [ OK ]

[root@localhost ~]# chkconfig httpd on

[root@localhost ~]# service httpd restart

httpd を停止中:                        [ OK ]

httpd を起動中:                        [ OK ]

httpd startでApacheを起動できる。chkconfig httpd onでCentOSの起動時にApacheも同時に起動するように設定できる。service httpd restartでApacheを再起動できる(参考資料12)。

 FireFoxが入っているのでhttp://lcoalhost/にアクセスしてみる。以下のような画像が出てくるはずである。

f:id:project_the_tower2:20110328065333p:image

 pythonでcgiを作成し、起動してみる。

[root@localhost ~]# vim /var/www/cgi-bin/test.cgi

#!/usr/local/bin/python27

import cgitb

cgitb.enable()

import json

print "Content-Type: text/plain"

print

print "Nullpo"

[root@localhost ~]# chmod 755 /var/www/cgi-bin/test.cgi

 vimでpythonスクリプトを作成して、chmodコマンドでパーミッションを設定している。chmodでパーミッションを設定しないとInternal Server Errorになるので注意。この他、SELinuxを無効にしておかないと同じくInternal Server Errorになるので注意。インストールの際にSELinuxを無効にしなかった場合は参考資料13を参照して無効にすること。ちなみにApacheがエラーを出したときのログは/var/log/httpd/error_logに出力される。

mod_wsgiの導入

 mod_wsgi(参考資料15)をapacheに入れる。参考資料16,17を参考に導入する。

# yum install httpd-devel

# yum install apr-devel apr-util-devel

必要なパッケージをインストールする。

# wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz

###省略

# tar xzf mod_wsgi-3.3.tar.gz

###省略

# cd mod_wsgi-3.3

# ./configure --prefix=/usr/local/mod_wsgi --with-python=/usr/local/python2.7.1/bin/python --with-apxs=/usr/sbin/apxs

###省略

# make

###省略

# make install

###省略

pythonのパスとインストール先のパスをオプションに付けてインストールする。

# vim /etc/httpd/conf.d/mod_wsgi_test.conf

LoadModule wsgi_module modules/mod_wsgi.so

WSGIPythonHome /usr/local/python2.7.1

WSGIScriptAlias /test /var/www/cgi-bin/hello.py

# vim /var/www/cgi-bin/hello.py

#!/usr/local/bin/python27
def application(environ, start_response):
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return ["Nullpo"]

設定ファイルを作成する。テストスクリプトを作成し、http://localhost/testを表示する。

以下追記 : 2011/9/3

easy_installのインストール

[root@localhost ~]# wget http://peak.telecommunity.com/dist/ez_setup.py

[root@localhost ~]# python27 ez_setup.py

これでpython27をインストールしたディレクトリに対してeasy_installがインストールされた(参考資料18)。

[root@localhost ~]# ln -s /usr/local/python2.7.1/bin/easy_install /usr/local/bin/easy_install_27

これでpython27のディレクトリに対してeasy_installでパッケージをインストールすることが楽になる

mysql-python

 pythonからmysqlを利用するコネクタをインストールする。注意:以下のようにライブラリのシンボリックリンクを作成すること(参考資料23)。

[root@localhost ~]# ln -s /usr/local/python2.7.1/lib/libpython2.7.so.1.0 /usr/lib/libpython2.7.so

[root@localhost ~]# easy_install_27 mysql-python

Djangoのインストール

[root@localhost ~]# easy_install_27 Django

自動でインストール作業が進む。終了したら確認を行う(参考資料19)。

[root@localhost ~]# python27

Python 2.7.1 (r271:86832, Mar 28 2011, 07:14:34)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import django

>>> django.VERSION

(1, 3, 0, 'final', 0)

Djangoでプロジェクト作成

Djangoはbinフォルダにあるdjango-admin.pyでプロジェクトを作ることから始まる(参考資料19)。プロジェクトはサイトと同義で、サイトにあるアプリケーションの集合でもある。どうせなのでdjango-admin.pyのエイリアスを作っておく。

[root@localhost ~]# ln -s /usr/local/python2.7.1/bin/django-admin.py /usr/local/bin/django-admin27.py

wwwの下にdjangoを作成し、その下にプロジェクト名myAppsとしてプロジェクトを作成した。djangoのドキュメントではwwwではなく、/home/ユーザー名 以下に置くことを推奨している。そのような場合は、chmodで/home/ユーザー名のパーミッションを(0755)に設定しておくことが必要である(参考資料26)。

[root@localhost ~]# cd /var/www

[root@localhost www]# mkdir django

[root@localhost www]# cd django

[root@localhost django]# django-admin27.py startproject myApps

次に、mod_wsgiからdjangoの入り口となるwsgiファイルをmyAppsディレクトリ内に作成する。

[root@localhost django]# cd myApps

[root@localhost myApps]# vim myDjango.wsgi

import os, sys

sys.path.append('/var/www/django')

os.environ['DJANGO_SETTINGS_MODULE'] = 'myApps.settings'

import django.core.handlers.wsgi

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

###:wq

設定ファイルの書き換え

mod_wsgiの確認に使用した設定ファイル等は削除しておく。

[root@localhost myApps]# rm -f /etc/httpd/conf.d/mod_wsgi_test.conf

[root@localhost myApps]# rm -f /var/www/cgi-bin/hello.py

mod_wsgiモジュールの読み込みはhttpd.confに追記、WSGIScriptAliasの設定は/etc/httpd/conf.d/に新たに設定ファイルを作成する。また、AliasでDjangoが参照するmediaファイルまでの場所を定義しておく(参考資料16)。

[root@localhost myApps]# vim /etc/httpd/conf/httpd.conf
LoadModule wsgi_module modules/mod_wsgi.so
###:wq
[root@localhost myApps]# vim /etc/httpd/conf.d/virtual.conf
<VirtualHost *:80>
        ServerName django.hoge.com
        Alias /static/admin/ /usr/local/python2.7.1/lib/python2.7/site-packages/Django-1.3-py2.7.egg/django/contrib/admin/media/
        WSGIScriptAlias /django /var/www/django/myApps/myDjango.wsgi
        <Directory /usr/local/python2.7.1/lib/python2.7/site-packages/Django-1.3-py2.7.egg/django/contrib/admin/media/>
                Order deny,allow 
                Allow from all
         </Directory> 
        <Directory /var/www/django/myApps>
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

###:wq

Djangoはmod_pythonとmod_wsgiが競合すると上手く動かない。mod_pytnonが入っていれば、コメントアウトする。

[root@localhost myApps]# vim /etc/httpd/conf.d/python.conf
#LoadModule python_module modules/mod_python.so ### ← コメントアウト

# Override type-map handler for /var/www/manual
#<Directory "/var/www/manual/mod/mod_python"> ### ← ここから
#       <Files *.html>
#               SetHandler default-handler
#       </Files>
#</Directory> ### ← ここまでコメントアウト
###:wq

djangoの設定はsettings.pyに存在する。いかにその例を示す。

DEBUG = True 
#省略
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. #[1]
        'NAME': '[2]',                      # Or path to database file if using sqlite3.
        'USER': '[3]',                      # Not used with sqlite3.
        'PASSWORD': '[4]',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}
#[1] django.db.backends.のあとに続けること
#<<注意>>
# mysqlを選択した場合は「Can't extract file(s) to egg cache」エラーが発生するので、
# myDjango.wsgiに「os.environ['PYTHON_EGG_CACHE'] = '/tmp'」の一行を追加しておくこと。(参考資料27)
#[2] mysqlの場合は予め作成しておいたデータベース名を指定する。mysqlの場合はファイル名の絶対パスを指定すること。
#[3] 予め作成しておいたユーザー名。
#[4] 予め作成しておいたパスワード。

TIME_ZONE = 'Asia/Tokyo' #[5]
LANGUAGE_CODE = 'jp' #[6]

#[5] タイムゾーン:Aisa/Tokyo
#[6] 日本語:jp
#省略
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.contrib.csrf.middleware.CsrfMiddleware' #[7]
)
#[7] CSRF対策のために必要なので追加すること(参考資料25)

#省略
TEMPLATE_DIRS = ( #[8]
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)
#[8] テンプレートまでのディレクトリを指定するが、アプリケーションのディレクトリの下にtemplatesディレクトリを作成すると、
#    templatesディレクトリを作成してテンプレートをおいてもいい。その場合は自動的にリンクされる。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin', #[9]
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)
#[9] 管理ビューを使う場合に必要。djangoのチュートリアルを参照。

django+database+apache+mod_wsgiの確認

httpdをリスタートする。

[root@localhost myApps]# service httpd restart

httpd を停止中: [ OK ]

httpd を起動中: [ OK ]

ブラウザでhttp://localhost/djangoにアクセスして以下の画面が出てくれば成功。

f:id:project_the_tower2:20110904140805p:image

Djangoのチュートリアル

参考資料19、20、21を見て、pollsアプリケーション作成のチュートリアルを行う。

開発サーバの起動

 mod_wsgiから起動するため、必要ない。上記で設定したWSGIScriptAliasのURL(http://localhost/django)にアクセスする。

sqlite3ファイルのパーミッション及びディレクトリのパーミッションを変更

[root@localhost myApps]# chmod o+x db.sqlite3

[root@localhost myApps]# cd ..

[root@localhost django]# chmod o+w myApps/

参考資料19のMediaファイルまでのエイリアス

 上記のvirtual.confに設定してあるので必要ない。

テンプレートファイル

 テンプレートとなるhtmlのパーミッションを「読み込み」に設定しておくこと。

表示されたり、されなかったり

 Djangoの動作が不安定なときは、サーバーを再起動すること。settings.pyやプロジェクトのurls.pyを編集したときは再起動したほうが良い。

nginxのインストール

 Djangoの静的コンテンツの出力にnginxを利用する。リクエストの入り口にnginxを設置し、動的コンテンツ(python等)リクエストの場合のみapache+mod_wsgiに転送する。インストール方法は参考資料28を参考にした。途中、http-develをyumする所は「mod_wsgiの導入」の章で導入済みなのでスキップした。

mod_rpafのインストール

[root@localhost ~]# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz

[root@localhost ~]# tar xvzf mod_rpaf-0.6.tar.gz

[root@localhost ~]# cd mod_rpaf-0.6

[root@localhost mod_rpaf-0.6]# vim Makefile

###省略

APXS=$(shell which apxs)

APXS2=/usr/sbin/apxs #$(shell which apxs)を/usr/sbin/apxsにする

###:wq

[root@localhost mod_rpaf-0.6]# make rpaf-2.0

[root@localhost mod_rpaf-0.6]# make install-2.0

nginxのインストール

最初にリポジトリにEPELの追加が必要(参考資料29)。

[root@localhost ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

[root@localhost ~]# yum install nginx

nginx.confの設定

/etc/nginx/nginx.confを以下のように修正した。

server {
     listen       80;
     server_name  _;

     proxy_set_header    X-Real-IP       $remote_addr;                #追加
     proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;  #追加
     proxy_set_header    Host            $http_host;                  #追加
     proxy_redirect      off;                     #追加
     proxy_max_temp_file_size    0;                                   #追加

     location ~ .*\.(html|htm|zip|txt|pdf|jpeg|jpg|gif|png|swf|css|js|ico) { #追加
         root    /home/user/html/;                                           #追加
         index   index.html;                                                 #追加
         ssi     on;                                                         #追加
         break;                                                              #追加
     }                                                                       #追加
     location / {
         proxy_pass  http://127.0.0.1:28082;                                 #変更
         break;
     }
(デフォルトの記述を残しているだけなので色々と以下略)

httpd.confの設定とmod_wsgiのdaemon化

 Apacheで80はListenしないことにした。nginxから回されてきたものだけ見るようにする。/etc/httpd/conf/httpd.confの130行目あたりを以下のように修正。さらに前章で作成したmod_rpafをLoadModuleする行を追加する。

#Listen 12.34.56.78:80

#Listen 80 # コメントアウト

LoadModule rpaf_module modules/mod_rpaf-2.0.so #追加

「設定ファイルの書き換え」で作成した/etc/httpd/conf.d/virtual.confを以下のように修正。

Listen 28082
WSGISocketPrefix run/wsgi

<VirtualHost 127.0.0.1:28082>
	WSGIScriptAlias /django /var/www/django/myApps/myDjango.wsgi
	DocumentRoot /var/www/
	WSGIDaemonProcess gnagaoka user=apache group=apache processes=1 threads=35 python-path=/var/www/django
	WSGIProcessGroup  gnagaoka
	RPAFenable On
	RPAFsethostname On
	RPAFproxy_ips 127.0.0.1 10.0.0.1
	RPAFheader X-Forwarded-For
</VirtualHost>

mod_wsgiのdaemon化のやり方等は参考資料30を参考にした。注意として参考資料にあるようにWSGISocketPrefixの記述は必ず必要、またwindowsのmod_wsgiはdaemonモードではApacheが起動しなかった。グローバル変数は解放されなくなるので注意して使用する。Apacheのworkerでも同様の効果があるが、こちらのほうがいいと思う。processesを1にするとメモリのステートの同期を考えずにすむが処理が遅くなるかも。そのかわり少しthreadsを多くさせている。

[root@localhost ~]# service httpd restart

[root@localhost ~]# service nginx start

エラーが出なければ成功。

参考資料

  1. VMware Player + CentOS | アカベコマイリ
  2. 浦和木人のページ - VMPlayerのBeep音停止
  3. RPM Package Manager - Wikipedia
  4. Yellowdog Updater Modified - Wikipedia
  5. RPM を使わずに make install した場合のアンインストール方法
  6. 各ディレクトリの役割を知ろう(サブディレクトリ編)(2/2)
  7. CentOS 5.5 に Python 2.7.1 と mod_python をインストールしたときのメモ - Solr, Python, MacBook Air in Ginza
  8. yum -y install gcc gcc-c++
  9. 「./configure」、「make」、「make install」の意味 - PukiWiki
  10. UNIXコマンド [ln]
  11. 共有ライブラリの設定 - Debian GNU/Linux 3.1 on PowerMac G4
  12. Webサーバー構築(Apache) - CentOSで自宅サーバー構築
  13. [セキュアOS SELinux入門]第5回 設定に関する基礎知識をマスターする - オープンソース:ITpro
  14. python2.6の標準モジュールであるはずのsqlite3をimportしたらエラーになる場合の対処法 - /var/log/dekaduki
  15. mod_wsgi - Wikipedia
  16. CentOS+mod_wsgiでDjangoを動かす - kuma8の日記
  17. mod_wsgiでDjangoを動かすまでを淡々と記録する - スコトプリゴニエフスク通信
  18. 標準と異なるPython環境を構築する - Layer8 Reference
  19. CentOS 5.6 に Django 1.3 をインストールして設定 - Debian GNU/Linux 3.1 on PowerMac G4
  20. はじめての Django アプリ作成、その 1 ― Django v1.0 documentation
  21. はじめての Django アプリ作成、その 2 ― Django v1.0 documentation
  22. yumでインストールの有無を確認 - 苔の一念岩をも通す ~目指せいつかはプログラマ~
  23. Django インストール 1.2.3 - MyMemoWiki
  24. データベースサーバー構築(MySQL) - CentOSで自宅サーバー構築
  25. DjangoのCSRF対策は1行追加するだけみたい | Weboo! Returns.
  26. ナナネコのザレゴト。: 今日困ったこと1。 -> (13)Permission denied: access to * denied
  27. PYTHON_EGG_CACHE: 気の向くままに・・・
  28. nginx+apacheでちょっぴり快適なWebサーバーを目指してみる(CentOS さくらのVPS) ::ハブろぐ
  29. さくらのVPSでEPELのパッケージを使用できるようにして、nginxをyumからインストールする方法 - ドラあり!*ドラゴンに挑むアリの物語 ** Python使いの日々
  30. mod_wsgiでDjangoを動かすまでを淡々と記録する - スコトプリゴニエフスク通信

*1https://www.vmware.com/jp/tryvmware/?p=player&lp=1

*2http://jp.bitcomet.com/

*3http://ftp.iij.ad.jp/pub/linux/centos/5.5/isos/i386/CentOS-5.5-i386-bin-DVD.torrent

*4http://www.easyvmx.com/

*5:Application Dataは隠しファイルのため、フォルダオプションですべてのファイルを表示するに設定しないと見えません。

2010-07-04

( ´・ω・`)・・・

暇人\(^o^)/速報 : 【とてつもない日本】 子供の4割が「死にたい」 1割がリスカ経験者 - ライブドアブログ


162:ギンザメ(新潟県):2010/07/04(日) 02:23:08.15 ID:nxrPQ7M2

>>132

「〜したら良し」じゃなくて「〜しないとクズ、死ね」だろ


進学しない奴はクズ、今すぐ死ね

卒業しない奴はクズ、今すぐ死ね

就職しない奴はクズ、今すぐ死ね

結婚しない奴はクズ、今すぐ死ね

出世しない奴はクズ、今すぐ死ね

定年したらクズ、そろそろ死ね


if(!isHighSchoolGraduation)
	return false;

if(!isCollegeGraduation())
	 return false;

if(!isJob())
	return false;

if(!isMarriage())
	return false;

if(!isSuccess())
	return false;

if(!isRetirement())
	return false;


return false;