Macの最近のブログ記事
最近はまったのでメモ書き。
LeopardからApacheのバージョンが2.2.6になっています。
Tigerと違って、Apache1.3+mod_perlが標準ではないので、mod_perl2を自前で入れる必要があるんですね。
今の職場はPerlがメインのWeb開発なので、mod_perlないとお話にならないのですね。
が、普通にインストールすると、
Intel Macだと、アーキテクチャータイプが違うとかで起動してくれない。
(非インテルは未確認)
そこで、mod_perlを入れる際に、環境変数をいじる必要があります。
$ wget http://search.cpan.org/CPAN/authors/id/G/GO/GOZER/mod_perl-1.30.tar.gzmod_perl-1.30.tar.gz $ tar zxvf mod_perl-1.30.tar.gz $ cd mod_perl-1.30 $ export ARCHFLAGS="-arch x86_64" $ export CFLAGS="-arch x86_64" $ perl Makefile.PL $ make $ make install
デフォルトで入っているモジュールだけだと、make testでモジュールが足りないと怒られると思うので、エラーメッセージ見ながら追加してあげて下さい。
以前Sledgeについて書いたんですが、サンプルが無くて動作確認して無かったので、「まるごとPerl vol.1」のサンプルを使用して動かして見ました。
実際に動かしてみる際に以前の設定から変更した所があるので、再度エントリします。
Apacheの設定
まず、mod_perlを有効にします。また、apacheのSetEnvを使いたいので、mod_envも有効にしておきます。
$ sudo vi /etc/httpd/httpd.conf206行目 #LoadModule env_module libexec/httpd/mod_env.so コメントを外す LoadModule env_module libexec/httpd/mod_env.so239行目 #LoadModule perl_module libexec/httpd/libperl.so コメントを外す LoadModule perl_module libexec/httpd/libperl.so283行目 #AddModule mod_env.c コメントを外す AddModule mod_env.c283行目 #AddModule mod_perl.c コメントを外す AddModule mod_perl.c
Sledgeでは、アプリケーション毎にサブドメインを切るのが王道なので、http://localhost/bbsではなくて、http://bbs.localhost/としたい。Apacheのvirtualhostを使えばいいのだが、localhostにサブドメインを加える場合、/etc/hostsの127.0.0.1とサブドメインを紐づける必要があります。
$ sudo vi /etc/hosts127.0.0.1 localhost の後ろにサブドメイン追加 127.0.0.1 localhost bbs.localhost
あとはVirtualHostの設定ですが、アプリの配置を終えた後に設定します。
Sledgeの導入
Sledgeの公式ページからダウンロード出来ますが、プラグインや追加モジュールが沢山あるので、下記SorceForgeのCVSから丸ごととってきた方がいいです。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/sledge/
画面の下の方にDownload tarbollというリンクがあるので、ここから落とします。(CVSでチェックアウトしてもいいです)
tarbollを解凍すると、Slege本体と追加モジュール、プラグインが沢山できますが、全部入れなくても良いです。必要に応じて追加しましょう。(その都度書こうかと思います)
まずはSledgeの導入です。以前書いた内容とちょっとだけ変わります。SledgeはCPANモジュールを多用していますので、始めにモジュールを追加しておきます。
$ sudo perl cpan_install.pl
今回のサンプルでは、Class::DBIやTime::Pieceを使っていますので、追加しておきます。他にも環境によって足りないモジュールがあるかも知れません。httpのエラーログに足りないモジュールがあった場合はログがかかれますので、もしあれば同様に追加して下さい。
$ sudo perl -MCPAN -e shellcpan> install Class::DBI cpan> install Time::Piece
モジュール導入が終わったら、Sledgeのインストールです。
$ perl Makefile.PL $ make; make test; $ sudo make install
make testは念の為です。あんまり気にしてません。勉強中なもので・・(ノ´∀`*)
アプリの配置とApacheの設定
まるごとPerl vol.1のサポートページからモジュールをダウンロードします。
何処に置くかは任意ですが、今回は/Users/Sledgeに配置。
この設定はアプリ作る度さわることになるので、/etc/httpd/users/virtualhost.confに切り出しておきました。
$ sudo vi /etc/httpd/users/virtualhost.confNameVirtualHost 127.0.0.1 <virtualhost bbs.localhost> ServerName bbs.localhost DocumentRoot /Users/Sledge/bbs/htdocs SetEnv PERL5LIB /Users/Sledge/bbs/lib PerlSetEnv PERL5LIB /Users/Sledge/bbs/lib <location> SetHandler perl-script PerlHandler Apache::Registry </location> <directory /users/sledge/bbs/htdocs> DirectoryIndex index.cgi index.html AddHandler cgi-script .cgi Options +ExecCGI Order deny,allow Allow from all </directory> </virtualhost>
設定はそれぞれの環境次第ではありますが、とりあえずコレで動きました。
もう少し色々試して見たい所ではあります。
mod_alias辺りは、他の設定次第で、違うところ見に行ったりします。
ちなみに、SledgeのサンプルはSorceforgeから落としたtarballの中にも3つ程あるので、参考に動かしてみてはいかがでしょう?
shopcartがオススメです。
転職間近ということで、次の職場で使用するPCに初めに入れるべきソフトを整理してみます。
FireFox
言うまでもなくWebブラウザ。やっぱりMacでも定番。
プラグインはWebDeveloper、FireBugs、Tab Mix Plus、All-in-One Gestures、Greasemonkeyは絶対必須。
あとはその時々入れればおk。
ATOK2007
はい、普段のPCライフを快適にしたい人は絶対使うべき。
書き物する人は、すぐ買った方がいいです。
Quicksilver
言うまでも無く定番のコマンドラインランチャー。コレなしのMacライフなんて考えられない。
Cyberduck
FTPクライアント。割と使い易い。
svnX
SVNクライアント。Aquaにマッチする所が◎
Carbon Emacs
ハッカー三種の神器の一つ。エディタといえばEmacs。MacでEmacs使うときの定番ですね。
設定ファイルは.macかGmail辺りに投げ込んでおく。
NeoOffice
OpenOfficeよりこっちの方をつかっていたけど、暫くOpenOffice使って居ないので、そっちも試してみようかな。
appzapper
便利なアンインストーラーです。アプリケーションの依存関係を調べて不要なファイルを一括で消してくれます。
Safari Stand
Safariを拡張してくれるプラグイン。サムネイルよりも、「.」や「,」でタブ移動できるのと、「_blanck」をタブで開けるのが最高。
Xcode
Unixベースのツールを動かす為のランタイムおよび、開発環境。
これも無いと仕事にならない。
MacPorts
UnixのPortsをMacに移植したもの。最重要アプリの一つ。
Screen
ハッカー三種の神器の一つ。端末エミュレータ。アタッチとデタッチを体験するともう二度と手放せない。
zsh
ハッカー三種の神器の一つ。通称最強のシェル。プログラマブル補完とかとっても賢い子。
iWork08
Keynoteがメインですが、Numbersもなかなか評判が良い。
Pagesもそれなりに使える。
とりあえずこんなモノでしょうか。
他にも思いだしたら追記します。
Macの/etc配下を見ていて、ふと気がつきました。
デフォルトで postfixが入っている!!
他にもデフォルトで、apacheも入っているし。
viは勿論、emacsもデフォルトで居るし(生粋のemacsでは無いらしいが・・)
デフォルトはbashだけど、zshも元々から居た気がする。
DBが入っていたら更に凄いなぁ。
10.5からはデフォルトでRailsが入るので、MySQLがはいるのでしょーか?( ・ω・)モニュ?
なにげにフルスタック何じゃないかと思った。
perlのフレームワークでといえばCatalystですが、もう一つ有名な国産フレームワークSledgeをMacで使えるようにしてみたいと思います。
Sledgeはライブドアで開発されたWebフレームワークです。作者はmiyagawaさん。
特徴は、
- MVCフレームワーク
- 容易に拡張可能なプラグインアーキテクチャ
- MySQLやPostgreSQL等を利用したセッション管理
- フックによる拡張機能
- <ページコンポーネントやアクション単位での認証/li>
- CPANモジュールを利用することによる高い信頼性
- ライブドアのサービスを含む多くの商用サイトでの実績
となっています。機能は追々見てゆくとして、まずはインストール。
Apache + mod_perlを動くようにする
SledgeはApaceh上で動きます。cgiかmod_perlが使える状態にしなければなりません。
MacOSX 10.4にはデフォルトでApacheが入っているかチェック。
$ which httpd
/usr/sbin/httpd
おお、すばらしぃ。問題はバージョン。mod_perlとApache2.x系は昔から相性が悪いとひょうばんなので、できれば1.3系で穏便に行きたいところ。
$ httpd -v
Server version: Apache/1.3.33 (Darwin)
Server built: Jan 13 2006 08:49:59
なんだ、全然問題無いじゃん。あとはmod_perlの導入。
これまた、MacOSX 10.4にはmod_perlがデフォで入っているので、httpd.confで有効にしてあげれば良い。
$ sudo vi /etc/httpd/httpd.conf 239行目 #LoadModule perl_module libexec/httpd/libperl.so のコメントを外す LoadModule perl_module libexec/httpd/libperl.so
283行目 #AddModule mod_perl.c もコメントを外す AddModule mod_perl.c
最後の方に下記を追加
<IfModule mod_alias.c> Alias /perl/ /Library/WebServer/Documents/app/ Alias /cgi-perl/ /Library/WebServer/Documents/app/ </IfModule>
<IfModule mod_perl.c> <Location /perl> SetHandler perl-script PerlHandler Apache::Registry Options ExecCG PerlSendHeader On </Location> <Location /cgi-perl> SetHandler perl-script PerlModule Apache PerlHandler Apache::PerlRun Options ExecCGI PerlSendHeader On </Location> <Files */nph-*> PerlSendHeader Off </Files> </IfModule>
IfModuleのmod_aliasはデフォルトで定義されているので、そこに混ぜても良いでしょう。
httpd.confの文法をチェックします。
$ sudo /usr/sbin/apachectl configtest
Syntax OK
問題なければhttpdの再起動
$ sudo /usr/sbin/apachectl restart
/usr/sbin/apachectl restart: httpd restarted
設定変えるだけでOKでした。
Sledgeのインストール
SourceforgeのSledgeのページからダウンロードしておきます。
最新版はv1.11です。
次にCPANから必要なモジュールをインストールしておきます。
$ sudo perl -MCPAN -e 'install Bundle::Sledge'
結構モジュール数が多いので時間かかります。
終わったら、Sledgeのインストール。
Sledgeを解答したディレクトリに移り、make installします。
$ perl Makefile.PL $ make $ make test $ sudo make install
CPANからインストールしたモジュールが足りないと、make testでエラーになる場合がありますので、
適宣手動でインストールします。
なにがインストールされるかは、eg/prereq-modulesに書いてあります。
参考にさせて頂いたサイト
http://www.thinkit.co.jp/free/tech/9/1/1.html















