Ubuntu10.10 にRails3.0.3 をインストール
EeePC1000HでWindowsXPとUbuntu10 のデュアルブート環境構築
- 参考にした記事
http://d.hatena.ne.jp/np90/20080424/1209045646
ありがとうございました。
- 前置き
最初はWindowsXP のみで使ってましたが、ローカルで開発するときとかはやっぱUNIX環境欲しくなりました。
以前はwubi 使ってましたが、apt-get upgrade したら起動しなくなっちゃったので(原因はよくわからないです。。今思えばboot.ini とかいじればよかったのかな。。)、
勉強も兼ねて自分で構築してみることにしました。
- 注意事項
操作方法はそんなに難しくないのですが、一歩間違えると致命的になりますので焦らずに操作する必要あり。 すべて自己責任で行ってください。
です。
環境
EeePC 1000H Windows XP (プリインストール) Mem:1GB HDD:160GB (89GB + 61GB + α)
パーティションの構成
/dev/sda1 Windows /dev/sda2 ★ /dev/sda3 Windows (?) /dev/sda4 ?
購入当初から4つに切られていて、使っていなかったsda2 を使いました
インストールの下準備
- Ubuntu のダウンロード
http://www.ubuntu.com/netbook/get-ubuntu/download
- USBメモリにイメージの作成 (UNetbootin を使用)
http://www.forest.impress.co.jp/docs/review/20090907_312720.html
インストール
USB をさしておく
BIOS の設定
- 再起動して起動時にF2 を連打。(BIOS設定画面を開くため。)
- 最初どのFunction ボタンかわからなくて適当にF2, F8, F9 を連打していたら起動しなくなりました。。僕の場合はCLRTC shorting (参考: http://forum.eeeuser.com/viewtopic.php?id=7407) で直りました。あせった。。
- BIOS のBoot設定
- Hard Disk Drives の1st Drive をUSB にする
- Boot Device Priority の1st Boot Device をUSB にする
で、再起動。
mod_ruby+erubyのRPMインストール
環境
# cat /etc/issue CentOS release 5.5 (Final) # uname -a Linux 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:20 EST 2010 x86_64 x86_64 x86_64 GNU/Linux # ruby -v ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux] # httpd -v Server version: Apache/2.2.3 # rpm -qa |grep -i apr apr-util-1.2.7-11.el5_5.2 apr-devel-1.2.7-11.el5_5.3 apr-util-devel-1.2.7-11.el5_5.2 apr-1.2.7-11.el5_5.3
手順
eruby のインストール
# yum install eruby
mod_ruby のインストール
### SRPM の取得 $ wget ftp://nic.funet.fi/.m/mirrors2/archive.redhat.com/contrib/libc6/SRPMS/mod_ruby-1.1.2-1.src.rpm ### SRPM のインストール $ rpm -ivh mod_ruby-1.1.2-1.src.rpm ### mod_ruby のtar ボールの取得 $ cd /usr/src/redhat/SOURCES $ wget http://www.modruby.net/archive/mod_ruby-1.3.0.tar.gz
### SPECファイルの修正 -Version: 1.1.2 +Version: 1.3.0 … -./configure.rb --with-libapreq-includes=%{_includedir}/apr-0 +./configure.rb --with-libapreq-includes=%{_includedir}/apr-1 --with-apr-includes=%{_includedir}/apr-1
### RPM ビルド $ rpmbuild -ba mod_ruby.spec ### RPM インストール # rpm -ivh /usr/src/redhat/RPMS/x86_64/mod_ruby-1.3.0-1.x86_64.rpm
利用
Apache の設定
- conf.d/ruby.conf
LoadModule ruby_module modules/mod_ruby.so
- VirtualHost 設定
<Directory /var/www/html/public> Options ExecCGI FollowSymLinks <Files *.rb> RubyRequire apache/ruby-run SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> <Files *.rhtml> RubyRequire apache/eruby-run SetHandler ruby-object RubyHandler Apache::ERubyRun.instance </Files> </Directory>
- Apache reload
# /etc/init.d/httpd reload
おまけ
mod_ruby のRPM作成は途中であきらめかけたけど、tar を展開してみたら下記を見つけて、SPEC ファイルを書き換えてみたらうまくいったというかんじ。
configure.rb
548 AC_WITH("apr-includes") { |withval| 549 $APACHE_INCLUDES += " -I#{withval}" 550 }.if_not_given { 551 for dir in [ "/usr/include/apr-0" ] 552 if File.exist?(File.expand_path("apr.h", dir)) 553 $APACHE_INCLUDES += " -I#{dir}" 554 break 555 end 556 end 557 }
やったことは、実際には/usr/include/apr-1 だったので、それを指定しただけ。
あきらめなくてよかった!
■
loop do chose_your_market invest execute market end
RailsでTwitterのOAuth使ってみた
参考にしたサイト
http://tech.lampetty.net/tech/index.php/archives/323
ありがとうございました。
ほぼこの通りですが、トークンの中身や、アクセス・トークンを取得した後にそれを使いまわすやり方に少し苦労したので備忘録メモ。
一応、キーは全て大文字のアルファベットに置き換えてあります。わかりづらいかもしれませんが。。予めご了承ください。
Callback 関数内の動作
request_token の生成
生成
request_token = OAuth::RequestToken.new( consumer, session[:request_token], session[:request_token_secret] )
- session の中身
session {:session_id=>"SESSION_ID", :request_token=>"REQUEST_TOKEN", :request_token_secret=>"REQUEST_TOKEN_SECRET"}
- request_token の中身
#<OAuth::RequestToken:0xb7a5e6ac @params={}, @token="TOKEN", # session[:request_token] @secret="SECRET"> # session[:request_token_secret] @consumer=#<OAuth::Consumer:0xb7a558cc @http=#<Net::HTTP twitter.com:80 open=false>, @key="CONSUMER_KEY", @secret="CONSUMER_SECRET", @options={:site=>"http://twitter.com", :authorize_path=>"/oauth/authorize", :access_token_path=>"/oauth/access_token", :oauth_version=>"1.0", :signature_method=>"HMAC-SHA1", :http_method=>:post, :proxy=>nil, :request_token_path=>"/oauth/request_token", :scheme=>:header}, @http_method=:post>,
access_token の生成
access_token = request_token.get_access_token( {}, :oauth_token => params[:oauth_token], :oauth_verifier => params[:oauth_verifier] )
- access_token の中身。基本的にrequest_tokenにparams が追加されただけ。
#<OAuth::AccessToken:0xb7a3d970 @params={"oauth_token"=>"OAUTH_TOKEN", :oauth_token=>"OAUTH_TOKEN", "oauth_token_secret"=>"OAUTH_TOKEN_SECRET", :oauth_token_secret=>"OAUTH_TOKEN_SECRET", :user_id=>"USER_ID", "user_id"=>"USER_ID", :screen_name=>"SCREEN_NAME", "screen_name"=>"SCREEN_NAME"}, @token="OAUTH_TOKEN", @secret="OAUTH_TOKEN"> @consumer=#<OAuth::Consumer:0xb7a558cc @http=#<Net::HTTP twitter.com:80 open=false>, @key="CONSUMER_KEY", @secret="CONSUMER_SECRET", @options={:site=>"http://twitter.com", :authorize_path=>"/oauth/authorize", :access_token_path=>"/oauth/access_token", :oauth_version=>"1.0", :signature_method=>"HMAC-SHA1", :http_method=>:post, :proxy=>nil, :request_token_path=>"/oauth/request_token", :scheme=>:header}, @http_method=:post>,
params のハッシュがシンボルと文字列の両方入ってるのは1つにできないのかな。。
「user_id」と「screen_name」が予め両方入っていたので、トークンもそれに合わしてるっぽい。
動作確認
Callback関数で取得したアクセス・トークン(oauch_token)とトークン・シークレット(oauch_token_secret) を保持しておいて、それを使ってAPIをたたく。
class TwitterController < ApplicationController def index consumer_key = "CONSUMER_KEY" consumer_secret = "CONSUMER_KEY" oauth_token = "OAUTH_TOKEN" oauth_token_secret = "OAUTH_TOKEN_SECRET" consumer = OAuth::Consumer.new(consumer_key, consumer_secret, {:site => 'http://api.twitter.com'}) access_token = OAuth::AccessToken.new(consumer, oauth_token, oauth_token_secret) response = access_token.get('/statuses/friends_timeline.json') @timeline = JSON.parse(response.body) render :text => @timeline end end
その他参考にしたサイト
http://www.atmarkit.co.jp/fsecurity/special/106oauth/oauth03.html
- oauth-plugin
http://code.google.com/p/oauth-plugin/wiki/AccessToken
いじょー(・ω・)
MongoDBのRPMを入れてみた
が、UTF-8が使えない。。誰か知ってたら教えていただけると嬉しいです!
Problem
When I run the mongo-server, it says "spider monkey build without utf8 support. consider rebuilding with utf8 support" but I don't know how..
# tail -f /var/log/mongo/mongod.log ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data ** see http://blog.mongodb.org/post/137788967/32-bit-limitations for more Tue May 4 22:48:50 *** warning: spider monkey build without utf8 support. consider rebuilding with utf8 support Tue May 4 22:48:50 db version v1.4.0, pdfile version 4.5 Tue May 4 22:48:50 git version: nogitversion Tue May 4 22:48:50 sys info: Linux chrislea.com 2.6.9-023stab048.6-enterprise #1 SMP Mon Nov 17 19:09:18 MSK 2008 i686 BOOST_LIB_VERSION=1_37
error occurs when I use Japanese in it.
> k = { name : "ほげ" }; Wed May 5 07:54:26 User Exception 10213:non ascii character detected error:non ascii character detected
hmm..
What should I do?
環境
# cat /etc/issue CentOS release 5.4 (Final) Kernel \r on an \m # uname -a Linux ip-10-130-34-195 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 i686 i386 GNU/Linux
インストール
chrisleaさんのリポジトリを使用。
> http://yum.chrislea.com/centos/5/i386/
mongo-1.4.0-mongodb_1.i386.rpm mongo-devel-1.4.0-mongodb_1.i386.rpm mongo-server-1.4.0-mongodb_1.i386.rpm
で、早速ダウンロードして入れようと思ったら案の定、依存エラー。
# rpm --test -ivh mongo-* 警告: mongo-1.4.0-mongodb_1.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 44a334da エラー: 依存性の欠如: boost >= 1.35 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_filesystem-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_program_options-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_system-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_thread-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libjs.so.1 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_filesystem-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libboost_program_options-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libboost_system-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libboost_thread-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libjs.so.1 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています
あぁそういえばboostが必要だとか書いてたな。。
ということで入れてみる。
# yum install boost … ================================================================================================================== Package Arch Version Repository Size ================================================================================================================== Installing: boost i386 1.33.1-10.el5 base 863 k Installing for dependencies: libicu i386 3.6-5.11.4 base 5.2 M Transaction Summary ==================================================================================================================
なんか一個依存関係があってついてきたけどまぁいいでしょう。
で、もう一回MongoDBを追加しようとしてみると。。
# rpm --test -ivh * 警告: mongo-1.4.0-mongodb_1.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 44a334da エラー: 依存性の欠如: boost >= 1.35 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_filesystem-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_program_options-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_system-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_thread-mt.so.4 は mongo-1.4.0-mongodb_1.i386 に必要とされています libjs.so.1 は mongo-1.4.0-mongodb_1.i386 に必要とされています libboost_filesystem-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libboost_program_options-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libboost_system-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libboost_thread-mt.so.4 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています libjs.so.1 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています
あれ、また同じエラー?
で、よくよく見るとこの部分。
boost >= 1.35
あ、なるほど、そんなことも書いてましたね。で、chrisleaさんのリポジトリを確認すると、なるほど確かにありますねと。
# yum erase boost libicu # wget http://yum.chrislea.com/centos/5/i386/boost-1.37.0-6.i386.rpm # rpm --test -ivh boost-1.37.0-6.i386.rpm
で、インストールしようとしたところでまたエラー。
# rpm --test -ivh boost-1.37.0-6.i386.rpm 警告: boost-1.37.0-6.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 44a334da エラー: 依存性の欠如: libicudata.so.36 は boost-1.37.0-6.i386 に必要とされています libicui18n.so.36 は boost-1.37.0-6.i386 に必要とされています libicuuc.so.36 は boost-1.37.0-6.i386 に必要とされています
あぁそういえばさっきlibicu みたいなの入れたなーと思ってターミナル遡って確認したらビンゴ。もういっかい普通に入れる。
# yum install libicu … # rpm -qi libicu Name : libicu Relocations: (not relocatable) Version : 3.6 Vendor: CentOS Release : 5.11.4 Build Date: 2009年06月26日 04時38分13秒 Install Date: 2010年05月04日 22時25分14秒 Build Host: builder16.centos.org Group : System Environment/Libraries Source RPM: icu-3.6-5.11.4.src.rpm Size : 13109644 License: X License Signature : DSA/SHA1, 2009年06月26日 22時56分57秒, Key ID a8a447dce8562897 URL : http://www.ibm.com/software/globalization/icu/ Summary : ユニコード用の国際化コンポーネント - ライブラリ Description : International Components for Unicode - libraries.
これでboost は大丈夫。
rpm -ivh boost-1.37.0-6.i386.rpm 警告: boost-1.37.0-6.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 44a334da 準備中... ########################################### [100%] 1:boost ########################################### [100%]
で、やっと本命のmongo さんだけど、まだひっかかる。
# rpm --test -ivh mongo-* 警告: mongo-1.4.0-mongodb_1.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 44a334da エラー: 依存性の欠如: libjs.so.1 は mongo-1.4.0-mongodb_1.i386 に必要とされています libjs.so.1 は mongo-server-1.4.0-mongodb_1.i386 に必要とされています
こんなことを言われる。RPMsearch で検索するとどうやらjsというパッケージが必要とのこと。普通に入れる。
# yum install js … # rpm -qi js Name : js Relocations: (not relocatable) Version : 1.7.0 Vendor: Dag Apt Repository, http://dag.wieers.com/apt/ Release : 1.el5.rf Build Date: 2009年11月23日 10時03分05秒 Install Date: 2010年05月04日 22時28分13秒 Build Host: lisse.hasselt.wieers.com Group : Development/Languages Source RPM: js-1.7.0-1.el5.rf.src.rpm Size : 3323391 License: GPL Signature : DSA/SHA1, 2009年11月25日 20時47分36秒, Key ID a20e52146b8d79e6 Packager : Dag Wieers <dag@wieers.com> URL : http://www.mozilla.org/js/ Summary : JavaScript interpreter Description : JavaScript is the Netscape-developed object scripting languages. This package has been created for purposes of Sablotron and is suitable for embedding in applications.
目的のファイルもちゃんと入ってる。
# rpm -ql js /usr/bin/js /usr/lib/libjs.so.1 /usr/share/doc/js-1.7.0 /usr/share/doc/js-1.7.0/README.html
# rpm -ivh mongo-* 警告: mongo-1.4.0-mongodb_1.i386.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 44a334da 準備中... ########################################### [100%] 1:mongo-server ########################################### [ 33%] 2:mongo ########################################### [ 67%] 3:mongo-devel ########################################### [100%]
入った!
起動
で、使い方がよくわからないので入ってるファイルを確認。まずはmongo
# rpm -ql mongo /usr/bin/mongo /usr/bin/mongodump /usr/bin/mongoexport /usr/bin/mongofiles /usr/bin/mongoimport /usr/bin/mongorestore /usr/bin/mongostat /usr/share/doc/mongo-1.4.0 /usr/share/doc/mongo-1.4.0/GNU-AGPL-3.0.txt /usr/share/doc/mongo-1.4.0/README /usr/share/man/man1/mongo.1.gz /usr/share/man/man1/mongod.1.gz /usr/share/man/man1/mongodump.1.gz /usr/share/man/man1/mongoexport.1.gz /usr/share/man/man1/mongofiles.1.gz /usr/share/man/man1/mongoimport.1.gz /usr/share/man/man1/mongorestore.1.gz /usr/share/man/man1/mongos.1.gz /usr/share/man/man1/mongosniff.1.gz /usr/share/man/man1/mongostat.1.gz
まぁクライアント用のコマンドなんかが入ってる。次に、mongo-server
# rpm -ql mongo-server /etc/mongod.conf /etc/rc.d/init.d/mongod /usr/bin/mongod /usr/bin/mongos /usr/share/man/man1/mongos.1.gz /var/lib/mongo /var/log/mongo
設定ファイルや起動スクリプト、データの置き場所もある。
設定ファイルを一応眺めてみるも、とりあえず変更の必要はなさそうなのでデフォルトで起動してみる。
# /etc/init.d/mongod start /etc/init.d/mongod: line 25: /etc/sysconfig/mongod: そのようなファイルやディレクトリはありません Starting mongod: runuser: mongod というユーザは存在しません
いろいろ怒られる。ユーザはとりあえず作る。よくわかんないけどapache ユーザやmysql ユーザを参考にする。nologin とかでいいんだろうか。。
# useradd mongod -d /var/lib/mongo -s /sbin/nologin useradd: warning: the home directory already exists. Not copying any file from skel directory into it.
/etc/sysconfig/mongod のほうもよくわからない。でも、/etc/sysconfig/httpd なんかを見ると特に必要がなければ中身は空っぽっぽい。
というわけで空っぽのファイルを置いておいた。
# touch /etc/sysconfig/mongod
もういっかい起動してみる。
# /etc/init.d/mongod start Starting mongod: warning: some regex utf8 things will not work. pcre build doesn't have --enable-unicode-properties all output going to: /var/log/mongo/mongod.log can't open [/var/log/mongo/mongod.log] for log file Tue May 4 22:44:57 dbexit: Tue May 4 22:44:57 shutdown: going to close listening sockets... Tue May 4 22:44:57 shutdown: going to flush oplog... Tue May 4 22:44:57 shutdown: going to close sockets... forked process: 13501 Tue May 4 22:44:57 shutdown: waiting for fs preallocator... Tue May 4 22:44:57 shutdown: closing all files... Tue May 4 22:44:57 closeAllFiles() finished Tue May 4 22:44:57 dbexit: really exiting now
うーん。うまく起動してくれない。下記に注目。
can't open [/var/log/mongo/mongod.log] for log file
ということで確認してみると、これまたおマヌケな事態に。。
# cd /var/log/ # ll … -rw-r----- 1 root root 0 4月 11 14:25 mongo
ということで調整。
# rm mongo # mkdir mongo # chown mongod:mongod mongo
これで再挑戦。
# /etc/init.d/mongod start Starting mongod: warning: some regex utf8 things will not work. pcre build doesn't have --enable-unicode-properties all output going to: /var/log/mongo/mongod.log forked process: 13568 [ OK ]
「OK」と出ているので、今度こそやったか?と思いきや、これまた動いてない模様。試しにmongo コマンドを打つも、「connect failed」してしまう。
# mongo MongoDB shell version: 1.4.0 url: test Tue May 4 22:47:13 *** warning: spider monkey build without utf8 support. consider rebuilding with utf8 support connecting to: test Tue May 4 22:47:13 JS Error: Error: couldn't connect: couldn't connect to server 127.0.0.1 127.0.0.1:27017 (anon):952 Tue May 4 22:47:13 User Exception 12513:connect failed exception: connect failed
で、ちょっと考える。
# /etc/init.d/mongod status mongod は停止していますがサブシテムがロックされています # tail -f mongo/mongod.log Tue May 4 22:47:47 dbexit: Tue May 4 22:47:47 shutdown: going to close listening sockets... Tue May 4 22:47:47 shutdown: going to flush oplog... Tue May 4 22:47:47 shutdown: going to close sockets... Tue May 4 22:47:47 shutdown: waiting for fs preallocator... Tue May 4 22:47:47 shutdown: closing all files... Tue May 4 22:47:47 closeAllFiles() finished Tue May 4 22:47:47 shutdown: removing fs lock... Tue May 4 22:47:47 couldn't remove fs lock errno:9 Bad file descriptor Tue May 4 22:47:47 dbexit: really exiting now
ロックファイルを作ろうとして、なにやら失敗しているようだ。
で、データ用のディレクトリを見てみると、あいたたた。。
# ll … drwxr-xr-x 2 root root 4096 4月 11 14:25 mongo
これまたmongod さんには権限がなかったですね。。ということで権限をあげる。
# chown mongod:mongod mongo
再び起動。
# /etc/init.d/mongod restart Starting mongod: warning: some regex utf8 things will not work. pcre build doesn't have --enable-unicode-properti es all output going to: /var/log/mongo/mongod.log forked process: 13649 [ OK ]
なんかUTF-8をサポートしてないとか不吉なことは言っているが、起動はしている模様。
# tail -f /var/log/mongo/mongod.log ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data ** see http://blog.mongodb.org/post/137788967/32-bit-limitations for more Tue May 4 22:48:50 *** warning: spider monkey build without utf8 support. consider rebuilding with utf8 support Tue May 4 22:48:50 db version v1.4.0, pdfile version 4.5 Tue May 4 22:48:50 git version: nogitversion Tue May 4 22:48:50 sys info: Linux chrislea.com 2.6.9-023stab048.6-enterprise #1 SMP Mon Nov 17 19:09:18 MSK 2008 i686 BOOST_LIB_VERSION=1_37 Tue May 4 22:48:50 waiting for connections on port 27017 Tue May 4 22:48:50 web admin interface listening on port 28017
mongo コマンドを打ってみると。。
# mongo MongoDB shell version: 1.4.0 url: test Tue May 4 22:49:18 *** warning: spider monkey build without utf8 support. consider rebuilding with utf8 support connecting to: test type "exit" to exit type "help" for help > > > exit bye
繋がった!