mazeltov7のweb断片

備忘録的なテキトーなことを書きます。(技術記事はQiitaに移行しました http://qiita.com/mazeltov7 )

System Wideにrbenvを入れて、rubyとrailsを入れる

サーバーを管理・運用するのに、複数ユーザーでいじれるようにする(sistem wide)ために、rbenvを入れて、rubyrails入れて設定した。
まぁ、一人でやってるんだけど、userAというユーザーがすでにあって、deployってユーザーを新たに作ったので、こんな状況に。。w

この作業をしながら、某チャットに一人でつぶやいていた内容をtogetherしてお送りする。
長くてうっとおしいので、いらない人は、まとめは下にあるのでそこまでスクロール願います。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

→サーバーに2ユーザー作ってる場合って、それぞれのユーザーのHOMEに.bash_profile作るもんなんかな?
→/home/userA/.bash_profile
→/home/deploy/.bash_profile
→deployで接続した場合、userA/.bash_profileは読んでくれないぽい
⇒読まれないですね!
⇒.bash_profileの読み込みの順番は
http://d.hatena.ne.jp/pasela/20090209/bashのようですね
⇒サーバーだとglobalでやるのが一番いい気がするんですけどねぇ
http://kataring.hatenablog.com/entry/2013/05/22/011527
http://randomtype.ca/blog/installing-rbenv-outside-the-home-directory/
→うひょおおおおお、あざす!これやね!
→はじめのリンク→
/usr/localにrbenv入れて、deployグループにいじれる許可与えて、/usr/local/rbenvにパス通して、global
後者のリンク→
/.rbenvにrbenv入れて、ユーザーの.bash_profileにそこへのPATHを通して、global
って感じか。
後者の方が効率よさ気かな
あとは、パスをどこにかいとくかだなー
/etc/bash.bashrcにかくと全体に効く感じなんだけど、なんかここにぶちこんでええのかちょい戸惑う感あるなぁー
でも、/home/deploy/.bash_profile /home/userA/.bash_profileに両方PATH通すの書くのは、微妙かなぁー
→ふーむ
→起きてる人おらんのか
→(゚∀゚)キタコレ!!
→チャンス
http://gyazo.com/24e24588c1872d00740e2585776066b3
=> In the case of a server, steps 2-4 would need to be done for any users that need access to the Ruby install.
ほう
→やはり、/etc/bash.bashrcに書くべきか
$ echo 'export PATH="/.rbenv/bin:$PATH"' >> /etc/bash.bashrcてきな
→むむ、まてよ、bashrcはbash起動時に読み込むとあるな、、
bash起動時ってなんだよ
ログイン毎(ssh接続毎)に読んでくれるのは、profile系だけみたいだ。。つまり、/etc/profileにぶちこむってことか…
ここにぶちこんでええんかなぁー
→この辺はこれよくまとまってるな
http://takuya-1st.hatenablog.jp/entry/20110102/1293970212
→fmfm,,,hoge
→結論、/etc/profileにねじこみ、、か
→ん、というか、ログイン時に/etc/profile起動、で、その中でbash.bashrc起動、って流れか
なので、profileにbash.bashrcを起動させるってことが書いてたら、bash.bashrcにねじ込みでおkってことか
→ふむ、先の記事は、そのbash.bashrc起動の部分を無効化したからなんやな、ふむ
元にもどってきたw
→そもそも、/etc/profileと/etc/bash.bashrcはなんでわかれてるんやろう。それぞれのキャラはなんでござろうか
→元の全体に効かせる/usr/binとかusr/local/binとかにパス通してるのはprofileの方っぽいなー
ってことはやっぱこっちに追加するのがよさげかなー
→むー、/etc/profileはsudoでも書き込みができないな

  • rw-r--r--ってなってて、sudoはroot権限のはずやのに、書き込みできへんのか

→なんぞ
→おこ
パーミッションいじったらできるけど、どうなんかな
→まぁ、bash.bashrcも同じくやな
→一時的にchmod 755 profileしてやろう、ぐへへ
→あぁぁ~れぇぇ〜

  • bash: profile: Permission denied

→これでもあかんのか
bashでアクセスできんてことか、ちょくせつvimやれってことかね
→一番下に書けばええんかな…hoge
→ねじこんだで
→一旦exitして出て、からまた入ると
→むむ
→mkdir: cannot create directory `/.rbenv/shims': Permission denied
mkdir: cannot create directory `/.rbenv/versions': Permission denied
→たしかに、一方の記事にはshimsとversionsをmkdirしとく感じやったもんな、、でもこっちの記事にはそんなんかいてへんかったぞ、おこ
→これら必要そうやなぁ、ってことでsudo mkdirで作る
http://gyazo.com/cbd086f2676a7195826fc28914673ff9
というか、こやつなんで、ruby-buildをrbenvの中のpluginsとかでやってないんやろうか、、 hoge!?!?!?!?!??!
→むむ、あれか、ruby-buildでrubyをインストールしようとしているのか
→ふむ、rbenv install hoge versionとせずに、ruby-buildで入れると、
→ふむ
→うーん、でも、pluginsでやるほうがきもちいいかんあるな
→えい、pluginsで入れて、rbenv installでやったろう
ruby-buildドキュメントにどっちのやり方も書いてたな
→shimsとversionsを作ったらログイン時のエラーはなくなったな
→rbenv installめちゃ時間かかってるけど、こんなもんなんか。。?
→something's happening??
→なんぞ、遅すぎやん
→おろ、エラーでたな
→sudoでやらなあかんかったのかな?
→むむむ、sudo rbenv install 2.0.0-p247とすると
sudo: rbenv: command not foundとなるな、、
→ふつーにrbenv -v
→は通ってるのに…
→alias sudo='sudo env PATH=$PATH'が、/etc/profileに必要なんかな、、ちょっと調べる
→ふむふむ、sudo環境でパス効かせるのは上のやつでけるみたいやな。
→すでに片方のユーザーのとこのbash_profileに書いてあるし、/home/deploy/.bash_profileにかいておこう
→yes!
→sudo rbenv install 2.0.0-p247すると
rbenv: no such command `install'
→ほげ!?
→ふーむ、どこぞの記事によるとさっきのaliasのとこのenvを除けば、いけるっぽいけど、これsudoですべきなのかなぁ
→sudo envとすると、何やら、sudoの環境の情報がわさわさ出てくる感じぽいな
→上のaliasはsudo env hogehogeとかしないといけないところを、sudo hogehogeでいけるようにしてるのね
→ただ、envとってaliasしたら、rbenv のインストール取れるのなんでや
→mfmf
また新たな感じの設定があるな
http://qiita.com/dayflower/items/a07762f53e19850ea43e
→/etc/profile.d/rbenv.shとかにかくと
→しかも、/usr/local/rbenvで入れてるのか
→というかsystem wideで探ると結構でてくるな。/usr/localに入れてるの多いな。ふむふむ
→どれでいくかざっと読んで決めよう
http://qiita.com/chezou/items/86ee6ded253c094a23b6
http://qiita.com/semind/items/8e973a544b592376a07e
→......


~~~~~~~~~~~~~~~~~~~~~~~~~~~~


ということで、実際どうやってやったか、を以下に書いていきます!
なんだかんだ、PATHとかパーミションとかちょっと勉強できたので、よかった。

最終的に参考にしたところ

http://kataring.hatenablog.com/entry/2013/05/22/011527
rbenv を system-wide にインストールする際の傾向と対策
rbenvでsystem wideに入れるときに気をつけたいこと
rbenvを使ってシステムワイドにrubyをインストールする方法
Installing rbenv Outside the $HOME Directory(rbenv installせずに、ruby-buildでやる感じ、rbenv installしたかったので、上のやり方にした)

やったのは、/usr/localにrbenvを作って、そこへのパスを/etc/profileに書きました。

$ sudo cd /usr/local
$ sudo mkdir rbenv
$ sudo cd rbenv
$ sudo git clone git://github.com/sstephenson/rbenv.git rbenv
$ sudo mkdir shims
$ sudo mkdir versions
$ sudo chgrp -R deploy rbenv
$ sudo chmod -R g+rwxXs rbenv
$ sudo mkdir /usr/local/rbenv/plugins
$ sudo cd plugins
$ sudo git clone git://github.com/sstephenson/ruby-build.git
$ sudo chgrp -R deploy ruby-build
$ sudo chmod -R g+rwxs ruby-build
$ sudo vim /etc/profile
#export RBENV_ROOT=/usr/local/rbenv
#export PATH="$RBENV_ROOT/bin:$PATH"
#eval "$(rbenv init -)"

上記を追加。

$ sudo vim /home/deploy/.bash_profile
#PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
#alias sudo='sudo env PATH=$PATH'
$ source .bash_profille #変更を効かせる

上記を追加。1行目はコマンドを効かせるため。二行目は、sudoでパスの環境を効かせるため。

$ rbenv install 2.0.0-p247
$ rbenv rehash
$ rbenv global 2.0.0-p247

これでrubyはおk!

次、rails!
この辺詳しくはこちら「さくらVPS(Debian)にrbenv,ruby,mysql,railsを入れる

$ gem update  
$ gem install rails
$ exec $SHELL -l
$ rails -v  #確認

これで、/home/deploy/.gemにgemが入ってくれる!

あと余談だけど、
rbenvで複数バージョン入れるときはこちらが参考なるかも。
rbenvで複数のバージョンのrubyを使用する環境を整える