Sunday, November 26, 2006
Install Catalyst on Vine Linux
■インストール
・一般ユーザでCPANからインストールする
$ perl -MCPAN -e 'install Task::Catalyst'
→色々訊かれるけどFTPサーバをftp.ring.gr.jpからに指定した以外は(yes/no関係無く)Enter連打
・途中sudoする場所があるので、
→visudoでwheelを有効にして、ynsiderzをwheelグループに入れた上で進めた
→結局最後のインストールで止まったのでrootでやり直した
・サンプル生成
→$ catalyst.pl
→「Can't locate Catalyst/Helper.pm in @INC」と言われ実行出来ない
→http://search.cpan.org/~mramberg/Catalyst-Devel-1.01/で「Catalyst-Devel」を落としてインストールした
# tar xvzf Catalyst-Devel-1.01.tar.gz
# cd Catalyst-Devel-1.01
# perl ./Makefile.PL
→なんか色々怒られたので、
→http://search.cpan.org/~mramberg/Catalyst-Runtime-5.7003/で「Catalyst-Runtime」を落として入れてみた
→また怒られた。メッセージは下記の通り
Warning: prerequisite HTTP::Body 0.5 not found.
Warning: prerequisite Tree::Simple 1.15 not found.
Warning: prerequisite Tree::Simple::Visitor::FindByPath 0 not found.
→こいつらを「perl -MCPAN …」で入れた
■インストール(逆襲編)
・ここまでいろいろ入れて来たが、何気なく下記のコマンドを叩いたらまとめてインストール出来そう
$ perl -MCPAN -e 'install Catalyst::Runtime'
$ perl -MCPAN -e 'install Catalyst::Devel'
・どうもHTTP::Bodyがうまく入らないので、インストールオプションを変えて強制上書き
$ perl -MCPAN -e shell
cpan>o conf
cpan>o conf make_install UNINST=1 ←※この行いらないかも
cpan>o conf make_install_arg UNINST=1
cpan>install HTTP::Body ←※これだとダメだった
cpan>force install HTTP::Body ←※強制上書き
・成功したのでCatalyst入れなおし
cpan>install Catalyst::Runtime
cpan>install Catalyst::Devel
■テスト
・下記のコマンドでサンプルを作成
$ catalyst.pl MyApp
$ cd MyApp/
$ ./script/myapp_server.pl
・ブラウザアクセス確認
→http://192.168.0.11:3000/でアクセス成功!
感想としては、「Ruby on Rails」よりも少しは簡単そう。とはいえ実践で使うかどうかは微妙な事に変わりは無いかなあ…。
参考文献:
・ベース
http://www.tcool.org/catalyst/Intro.html#Install
・上よりちょっと新しい
http://www.drk7.jp/MT/archives/000925.html
・上よりさらに新しい
http://d.hatena.ne.jp/peppon/20060912/1158071878
・MCPAN設定
http://y-kit.jp/saba/xp/cpan.htm
Saturday, November 25, 2006
Use Ruby on Rails
今度は実際に使用する際の手順。
■テスト
・Railsプロジェクト作成
# rails test
→testというディレクトリにパーツが生成された
・サーバ起動
$ cd test
$ ./script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000/
=> Ctrl-C to shutdown server; call with --help for options
・ブラウザアクセス確認
http://192.168.0.11:3000/にアクセス出来た
■本格的に使ってみる
・モデル作成
% cd test
% ./script/generate model Test
・DBスキーマ定義
% vi db/migrate/001_create_tests.rb
...
def self.up
create_table :tests do t
# t.column :name, :string ## ここのコメントをはずす
end
end
...
・DB作成
% mysql -u root
mysql > create database test_development;
mysql > create database test_test;
mysql > create database test_product;
mysql > quit
・テーブル作成
% rake migrate
・scaffold(?)作成・サーバ起動
% ./script/generate scaffold Test Test
% ./script/server
・ブラウザアクセス確認
http://192.168.0.11:3000/Test/ にアクセスしたが、動かない…。
→コンソールのエラーを見るに「ERROR MissingSourceFile」だそうな
→irbのRPMを入れれば良いようだけどバージョン不整合で入らない
→仕方なくここで再インストールを決断する
■rubyの再インストール
・fedoraのRPMでインストールし直し。↓からダウンロード
http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.updates/
# rpm -Uvh ruby-libs-1.8.4-1.fc3.i386.rpm
準備中... ########################################### [100%]
1:ruby-libs ########################################### [100%]
# rpm -Uvh ruby-1.8.4-1.fc3.i386.rpm
準備中... ########################################### [100%]
1:ruby ########################################### [100%]
# rpm -ivh irb-1.8.4-1.fc3.i386.rpm
準備中... ########################################### [100%]
1:irb ########################################### [100%]
・RubyGemのパスを通し直す
# cd rubygems-0.9.0
# ruby ./setup.rb
・再度ブラウザアクセス確認
→http://192.168.0.11:3000/Test/ にアクセスしたがやっぱりダメ
「uninitialized constant CatalogController」とエラーの内容が変わった
→エラーとファイル名を読み解いて、以下のようにroutes.rbに追記したらなんか動いた
「map.connect 'Test/:id', :controller => 'test', :action => 'list'」
→いきなり解決した。そもそもアクセスするURLが違っていたのが原因だった。
http://192.168.0.11:3000/test/ と、小文字で「test」と入れればよかったみたい。
※結果的にURLとアクションの紐付け方法を覚えてしまった。
■本格使用実験再開
・DBアクセス
「New test」でDBにデータ書き込みを行う。試しに「ynsiderz」「ynsiderz2」「いんさいだあず」と作ってみた
→結果をmysqlから確認してみる
$ mysql -u root
mysql> use test_development;
Database changed
mysql> show tables;
+----------------------------+
|Tables_in_test_development |
+----------------------------+
|schema_info |
|tests |
+----------------------------+
2 rows in set (0.00 sec)
mysql> describe tests;
+-------+--------------+------+-----+---------+----------------+
|Field |Type |Null |Key |Default |Extra |
+-------+--------------+------+-----+---------+----------------+
|id |int(11) | |PRI |NULL |auto_increment |
|name |varchar(255) |YES | |NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> select * from tests;
+----+--------------+
|id | name |
+----+--------------+
|1 |ynsiderz |
|2 |ynsiderz2 |
|3 |いんさいだあず |
+----+--------------+
→というわけで結論を言うと、ちゃんとDB書き込みに成功した。
Install Ruby on Rails to Vine Linux 3.2
■インストール(下準備)
・MySQLを入れる
# apt-get install MySQL-server
# apt-get install MySQL-ruby
・Vineのrubyが古いのでコンパイルからし直す
→必要なrpmを落とす
「apt-get install bison gdbm-devel XOrg-devel db4-devel ncurses-devel openssl-devel readline-devel zlib-devel」
→「ftp://ring.asahi-net.or.jp/pub/linux/Vine/VineSeed/SRPMS.main/」から
「ruby-1.8.4-0vl5.src.rpm」を落とす
→リビルドに必要なパッケージを入れる
# apt-get install build-essential
# rpmbuild --rebuild ruby-1.8.4-0vl5.src.rpm
ruby-1.8.4-0vl5.src.rpm をインストール中
エラー: ビルド依存性の欠如:
tcl は ruby-1.8.4-0vl5 に必要とされています
tk は ruby-1.8.4-0vl5 に必要とされています
# apt-get install tcl
# apt-get install tk
→リビルド
# rpmbuild --rebuild ruby-1.8.4-0vl5.src.rpm
→インストール
# cd /usr/src/vine/RPMS/i386
# rpm -Uvh ruby-1.8.4-0vl5.i386.rpm libruby-1.8.4-0vl5.i386.rpm
※2パッケージを同時に指定しないと、互いに依存関係がある為インストール出来ない。注意。
■インストール(RoR)
・RubyGemsをインストール
http://docs.rubygems.org/からdownloadへ
「rubygems-0.9.0.tgz」をダウンロード
# tar xvzf rubygems-0.9.0.tgz
# cd rubygems-0.9.0
# ruby ./setup.rb
・Railsパッケージをインストール
# gem install rails
※-yオプションつけた方がいい(いちいちY押すのめんどい)
→なんか最後にエラー出た。。。
------------------------------------------------------------
Successfully installed actionwebservice-1.1.6
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- rdoc/rdoc (LoadError)
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/local/lib/site_ruby/1.8/rubygems/doc_manager.rb:71:in `load_rdoc'
from /usr/local/lib/site_ruby/1.8/rubygems/doc_manager.rb:41:in `generate_ri'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:283:in `execute'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:282:in `execute'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:220:in `execute'
from /usr/local/lib/site_ruby/1.8/rubygems/command.rb:69:in `invoke'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:117:in `process_args'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:88:in `run'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_runner.rb:29:in `run'
from /usr/bin/gem:23
------------------------------------------------------------
→もう一度RPMインストールし直し
# cd /usr/src/vine/RPMS/i386
# rpm -Uvh *
準備中... ########################################### [100%]
パッケージ libruby-1.8.4-0vl5 は既にインストールされています
パッケージ ruby-1.8.4-0vl5 は既にインストールされています
パッケージ ruby-mode-1.8.4-0vl5 は既にインストールされています
# gem install rails -y
Successfully installed rails-1.1.6
次は実際に使った際の雑感。
Thursday, October 26, 2006
Think of Ruby on Rails
個人的には1998年頃にrubyを初めて触ったがさっぱりわからず、後から覚えたC++ BuilderやDelphi、unix c、perl、VB、VC、shell、PHP、python、WSHなどで事足りてるため未だにrubyに慣れていない。
ruby以前に使ってたのはN88BasicとLSI C、Borland C++くらいなので、自分史の中では早い方なのだが。
並べて気付いたけど結構なプログラミング言語が使えるんだ。触った程度なのはアセンブラと、Java、C#、そしてrubyか。
そういやMacの開発が嫌だったのでCodeWarriorとRealBasicは敵前逃亡したっけ。今ごろ思い出した。
というわけでRuby on Rails を入れてみた。
やってみた感想を一言でまとめると、「めんどくさい」。
- VineLinuxのrubyはバージョンを上げる必要がある
- その為にはSRPMから作り直し&作り直しのためパッケージを入れまくる必要あり
- gemがRPM未対応
- gemで取るパッケージをいちいち調べて直接入力する必要がある
- インストールの場所等が未だによくわからん
- DBの設定
- ウェブに出す為の設定
まあここまで我慢して設定すれば後はデザインも画面遷移もDB作成及び操作もGUIベースで出来る(所謂モデル・ビュー・コントローラ デザイン)のでウェブページを作るのが仕事なら効率的とは思う。
実際Javaのウェブアプリ開発は正直かなり辛いので、同じ事がRubyで出来るのならそちらを選ぶと思う。
ただ同じ苦しむなら、個人的にはperlベースのCatalystを使いたい。
あと個人的に上記作業は5年前なら「楽しい」と感じてたけど今やると「苦痛」と思うのでその差もあるかも
いずれにせよ今の自分なら適当なblogツールでページを作る方が良いと感じる。
Setting rNote
・rNotePad
→~ynsiderz/blog//rnoteadmin/ 以下に rnotepad.(phpjs)をインスコ
→rnoteadmin.phpに以下を追加
$plugin_list[] = 'rnotepad'; // rNotePad(061015add)
→rnotepadmin.php に「新規投稿」ボタンが増えた。コレでウェブからも入力出来る
→作ってみた。中身が空っぽ。駄目じゃん…
→rnoteadmin.skinのheaderタグ内に以下の行を追加
lt;meta http-equiv="Content-Script-Type" content="text/javascript" /gt;
lt;script src="rnoteadmin/rnotepad.js" type="text/javascript"gt;lt;/scriptgt;
→やっぱうまく生成されない。中身空っぽ…
→rnotepad.phpを見た。どうも$textをfputsで書き込めてないっぽい
→POSTの文字列がうまく取れていないのかも
→httpd.confの設定をいじった(以下のコメント外した)けど効果なし
lt;Directory /home/*/public_htmlgt;
lt;Limit GET POST OPTIONSgt;
Order allow,deny
Allow from all
lt;/Limitgt;
lt;/Directorygt;
→調べた結果、get_magic_quotes_gpc() の結果がfalseになる為、その後の
「$text = stripslashes($_POST['text']);」が実行されないのが原因と判明
→俺の環境ではphp.iniで「magic_quotes_gpc = Off」になっている為全てfalseになってた模様。つまりバグ
→get_magic_quotes_gpc()がfalseの場合はstripslashesしないで単純に引き渡す処理を加えた
------------------------------------------------------------
ビフォア
if(get_magic_quotes_gpc()) $text = stripslashes($_POST['text']
------------------------------------------------------------
アフター
// 061015 change
if(get_magic_quotes_gpc()){
$text = stripslashes($_POST['text']);
}else{
$text = $_POST['text'];
}
------------------------------------------------------------
Install rNote on Vine Linux
■事前準備
・インストール
→apt-get update する
→apat-get install でapache2やPHP入れる
・apache2起動
→「Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.」というエラーでapache2が起動しない…
→「/sbin/update-alternatives --config apache2」コマンドで「2 /usr/sbin/apache2.prefork」を選択してリンクを張り直した
→起動した
・public_html有効化
→まずhttpd.confで、 「ServerName」を「mist.ynsiderz.org」とした
→その後以下の赤の行を有効に、青の行をコメントアウトした
------------------------------------------------------------
<IfModule mod_userdir.c>
# UserDir disable
UserDir public_html
</IfModule>
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
------------------------------------------------------------
→index.phpもdirectoryIndexに加えた
------------------------------------------------------------
DirectoryIndex index.html index.html.var index.cgi index.php
------------------------------------------------------------
・ディレクトリ 設定
→/home/ynsiderz で、以下の作業をした
$ mkdir public_html $ chmod o+x .
■rNote設定
・rNoteインストール
rnote75.zipを~ynsiderz/public_html/blog/ に展開
→rNote公式ページのマニュアルを参考にして、rss.rdfを(666) entries、及びその中のディレクトリ全て(info,diary,bbs)を(777) cacheディレクトリを(777) にパーミッション変更
$ chmod 666 rss.rdf
$ chmod -R 777 entries/
$ chmod 777 cache
→index.phpとしてリンク張った
ln -s rnote.php index.php
・アクセス確認
http://192.168.0.11/~ynsiderz/blog/rnote.php にアクセス
→成功!
→「rnote_config.php」に書いてある初期ぱすわどを入れてログインする
Install Blosxom on Vine Linux
・スターターキット「bsk113.zip」を、
http://hail2u.net/archives/bsk.html からインストール
・パーミッションを変更
$ chmod 755 blosxom.cgi chkfullpath.cgi google.cgi
$ chmod 777 entries/
$ chmod 666 entries/first_post.txt
$ chmod 777 plugins/states/
・httpd.conf修正
以下の行を有効にする
------------------------------------------------------------
AddHandler cgi-script .cgi
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI FollowSymLinks
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
# <LimitExcept GET POST OPTIONS>
# Order deny,allow
# Deny from all
# </LimitExcept>
</Directory>
------------------------------------------------------------
・perlのパスを追加する
# cd /usr/local/bin
# ln -s /usr/bin/perl .
・config.cgi修正
$basedir = "/home/ynsiderz/public_html/blog";
$url = "";@css_paths = ( "/~ynsiderz/blog/style-sites.css",);
※↑は"./style-sites.css"だと「Edit」等他のディレクトリパスの場合おかしくなる
※逆にこれを利用すればカテゴリ毎にstyle変えられるかも
・確認
→http://192.168.0.11/~ynsiderz/blog/blosxom.cgiとして正常に表示出来た→/home/ynsiderz/public_html/blog/entries の下に「test」ディレクトリを掘って「text.txt」をUTF-8で書いたら正常に更新された
■懸案事項
・blosxom.cgi を index.cgi にシンボリックリンクにしたら上手く動かない(FollowSymLinksが有効でも)
→仕方ないのでハードリンクでしのいだ
→「Edit」したらおかしくなったので、mod_rewriteしないと駄目っぽい
・UTF-8のファイルが多いので.bashrcのLANGを「ja_JP.UTF-8」にしたら、WinSCPのリスト取得がおかしくなった
→ヤなので上記指定は外した
Install Vine Linux on VMware from FTP
・FTPサーバ(このへん→)(http://www.ring.gr.jp/pub/linux/Vine/)で、
最新のVineを探す
「bootnet.img」を落とす
■イメージ書き込み
・VirtualFloppyDriveで、
FDD(Bドライブ)を作成
「vine32_bootnet.img.vfd」という名前のFILEをBドライブにマウントさせる
・Vineのdosutils(あればCDROM、なければ↑のFTPから落とす)のrawwitewin.exeで
「bootnet.img」を書き込む
■インストール
・VMWareの仮想マシンのFDD設定で
「vine32_bootnet.img.vfd」を読み込ませる
・マシンを起動させ、インストーラで以下を指定
- IP自動取得
- インストール先:FTP
- FTPサイト名:ring.asahi-net.or.jp (この辺→から適当に探す)(http://vinelinux.org/getvine.html#ViaFTP)
- VineLinuxディレクトリ:/pub/linux/Vine/Vine-3.2/i386/
- パスワードは適当に付ける(外部に情報流れたら嫌なので一応)
- インストールオプションは「最小」
・20分程で問題無く成功