アーカイブ

投稿者のアーカイブ

[さくらVPS(CentOS)]Ruby 1.9.3 インストール時の対応メモ(zlib, readline らへん)

2012 年 3 月 22 日



なんかやたらと手間取った。
rvm インストール はてなブックマーク数 して、適当なライブラリをインストールして、上手くインストールできたと思ったら、gem install ruby-gems-update でネットでよく見かけるエラーに遭遇。

$ gem install rubygems-update
ERROR:  Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR:  While executing gem ... (NameError)
    uninitialized constant Gem::Commands::InstallCommand

(もちろん zlib, zlib-devel はインストール済みで install 時にも –with-zlib-dir を渡してる)
このパターンのトラブルシューティングは、以下のようにして回避ってのが定番なんだが、どうもうまくいかない。

$ $rvm_path/src/ruby-1.9.3-p125/ext/zlib
$ ruby extconf.rb
$ ../../
$ make
$ make install

でも、エラーでまくり。

checking for deflateReset() in -ltrue... no
checking for deflateReset() in -llibz... no
checking for deflateReset() in -lzlib1... no
checking for deflateReset() in -lzlib... no
checking for deflateReset() in -lzdll... no

散々調べまっくた経緯を4000字ほど書きたいところだが、結論だけ書くと、公式にあるようにすれば一発で OK だった。

Remove all the manually installed packages:

$ rm -rf $rvm_path/usr

Find the requirements (follow the instructions):

$ rvm requirements

Reinstall ruby:

$ rvm reinstall 1.9.3

RVM: Ruby Version Manager – ‘rvm pkg install zlib’ はてなブックマーク数

ちなみに、readline やら、openssl でエラーが出ても、手順は似たようなものになると思う。

あと、rvm pkg install readline のときに、autoreconf でエラーが出てたんだが、これも公式にあったように、

$ rvm --skip-autoreconf pkg install readline

とすれば、インストールできた。(いいのか??)

まぁ、とりあえずは動きそうだからよいか。
しかし、なんで –with-zlib-dir… を指定して、reinstall してもエラーなのに、何の指定もなしでエラーが無くなったんだろう。余分だったのかな。

最後に

ライブラリはこれだけインストールしときゃ、だいたい幸せなはず。

sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison iconv-devel

参考URL



Programming ,

[さくらVPS(CentOS)]Gitolite で git ホスティングの準備

2012 年 3 月 20 日



gl-easy-install スクリプトがなくて、gl-system-install に変わってた?のかよくわからないが、gitolite をさくら VPS に設定した手順。基本的には、本家の quick install はてなブックマーク数 の手順どおりだが。

準備

Git のバージョンは、1.6.2 以上。perl, OpenSSH は準備できているものとする。
作業用端末で新しい認証鍵(公開鍵・秘密鍵のペア)を作成する。

$ ssh-keygen -t rsa
$ Generating public/private rsa key pair.
Enter file in which to save the key (/User/suVene/.ssh/id_rsa): /User/suVene/.ssh/suVene

注意事項として、普段 ssh でログインとは別に作成しておく必要がある。gitlite のインストールに設定する認証鍵でターミナルでログインすると、git 管理用に操作が制限されてしまうので、レンタルサーバなどだとログイン不可能になってしまう。

管理用ユーザー作成

普段通りに作業用端末からログインし、管理用ユーザを作成する。
/tmp/id_rsa.pub は、ログインユーザ(作業用端末)の公開鍵。

$ sudo adduser gitolite --shell /bin/bash --home-dir /home/gitolite -c 'gitloite'
$ sudo passwd gitolite
$ sudo su - gitlite
$ cd
$ mkdir -p .ssh -m 0700
$ cp /tmp/id_rsa.pub .ssh/authorized_keys
$ chmod 0600 .ssh/authrized_keys
$ exit

gitolite インストール

まず、パスが上手くとおらないことがあるので、以下を .bashrc に記述しておく。

export PATH="$HOME/bin:$HOME/gitolite/bin:/usr/local/bin:/usr/bin:/bin"

gitolite をクローンして、スクリプト叩くだけ。
suVene.pub は、「準備」で作成した、新しい公開鍵。

$ ssh gitolite@vps.example.com
$ git clone git://github.com/sitaramc/gitolite
$ gitolite/src/gl-system-install -q
Usage:
    gl-system-install [bin-dir conf-dir hooks-dir]

Requires all 3 arguments or none.  All arguments supplied must be absolute
paths.  The following defaults are used if arguments are not supplied:

    as normal user: $HOME/bin, $HOME/share/gitolite/conf, $HOME/share/gitolite/hooks
    as root:        /usr/local/bin, /var/gitolite/conf, /var/gitolite/hooks
$ gitolite/src/gl-system-install $HOME/bin $HOME/share/gitolite/conf $HOME/share/gitolite/hooks
$ gl-setup -h
Usage:
  gl-setup [-q] [-q] [YourName.pub]       # ssh mode
  gl-setup [-q] [-q] [YourName]           # http mode

Please see 'appendix d' in doc/install.mkd for more.  (Online at
  http://sitaramc.github.com/gitolite/install.html#gl-setup)
$ gl-setup -q suVene.pub
creating gitolite-admin...
Initialized empty Git repository in /home/gitolite/repositories/gitolite-admin.git/
creating testing...
Initialized empty Git repository in /home/gitolite/repositories/testing.git/
[master (root-commit) 8fe8e24] gl-setup -q suVene.pub
 2 files changed, 8 insertions(+), 0 deletions(-)
 create mode 100644 conf/gitolite.conf
 create mode 100644 keydir/suVene.pub

これでインストール完了。
作業用端末の ~/.ssh/config に以下の設定を追記。

Host gitolite
    User gitolite
    Hostname vps.example.com
    IdentityFile /Users/suVene/.ssh/{新しい秘密鍵}

管理用リポジトリ

git clone gitolite:gitolite-admin

あとは、このリポジトリに対してユーザの追加や読み書き設定を commit して push すればよい。かなり細かい制御ができるのだが、それは、「参考 URL」などを参考に。

以上、おわり。

参考URL



Programming , ,

[vim]plugin 管理を pathogen からいけてる neobundle に変更

2012 年 3 月 19 日



vim の plugin 管理は pathogen で管理していたのだが、vundle がいけているらしいので乗り換え。
とおもったが、neobundle にした。
Vim-users.jp – Hack #238: neobundle.vim で plugin をモダンに管理する はてなブックマーク数

何がいけているか

これは、vandle の説明だが、基本は同じ。

Vundleは、Rails 3 でも採用されている依存性を解決するためのライブラリであるBundlerにインスパイアされたVimプラグインマネージャです。

Vundleを使えば、あなたのVimプラグイン生活が一新します。

  • .vimrcの中でプラグインを一元管理できます
  • Vim上でプラグインの検索ができます
  • Vim上で再起動することなくプラグインのインストール、アップデートができます

blog.shu-cream.net: 2011年のVimプラグインの管理はVundleで はてなブックマーク数

それプラス、

  • コマンド名が改善されている
  • shellslashがオンでも動作する
  • vimprocに対応している
  • unite.vimインタフェースの実装
  • Subversion, Mercurialへの対応
  • リビジョン指定

Vim-users.jp – Hack #238: neobundle.vim で plugin をモダンに管理する はてなブックマーク数

インストール手順

pathogen で管理していた submodule 削除

手順は How do I remove a git submodule? – Stack Overfdilow にあるとおり。

To remove a submodule you need to:

  1. Delete the relevant line from the .gitmodules file.
  2. Delete the relevant section from .git/config.
  3. Run git rm --cached path_to_submodule (no trailing slash).
  4. Commit and delete the now untracked submodule files.

How do I remove a git submodule? – Stack Overflow はてなブックマーク数

なにこれ、めんどくさい。
(これ 使えば良いっぽいけど、数が少ないから手で消した)

NeoBundle install

git submodule add https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

NeoBundle 用の設定

README にあるとおりだけど。

if has('vim_starting')
  set runtimepath+=~/.vim/bundle/neobundle.vim/
  call neobundle#rc(expand('~/.vim/bundle'))
endif
" let NeoBundle manage NeoBundle
" required!
NeoBundle 'Shougo/neobundle.vim'
" recommended to install
NeoBundle 'Shougo/vimproc'
" after install, turn shell ~/.vim/bundle/vimproc, (n,g)make -f your_machines_makefile
NeoBundle 'Shougo/vimshell'
NeoBundle 'Shougo/unite.vim'

"" My Bundles here:
"
"" original repos on github
NeoBundle 'tpope/vim-fugitive'
NeoBundle 'Lokaltog/vim-easymotion'
NeoBundle 'rstacruz/sparkup', {'rtp': 'vim/'}
NeoBundle 'tpope/vim-rails.git'
NeoBundle 'fholgado/minibufexpl.vim'
NeoBundle 'Shougo/neocomplcache'
NeoBundle 'othree/eregex.vim'
NeoBundle 'ornicar/vim-mru'
NeoBundle 'mattn/zencoding-vim'
NeoBundle 'kana/vim-surround'
NeoBundle 'gmarik/vundle'
" BundleSearch 用に
set runtimepath+=~/.vim/bundle/vundle.git/
call vundle#rc()

"" vim-scripts repos
NeoBundle 'L9'
NeoBundle 'FuzzyFinder'
NeoBundle 'ruby.vim'

"" non github repos
NeoBundle 'git://git.wincent.com/command-t.git'

"" non git repos
NeoBundle 'http://svn.macports.org/repository/macports/contrib/mpvim/'
NeoBundle 'https://bitbucket.org/ns9tks/vim-fuzzyfinder'

filetype plugin indent on     " required!

Pluginインストール

vim を起動して

:NeoBundleInstall

コマンドとか

:NeoBundleList
インストールしている bundles
:NeoBundleInstall(!)
インストール(! はアップデート) bundles
:NeoBundleClean(!)
bundle 削除とunset. (.vimrc の削除も忘れずに)
:NeoBundleLog
ログ閲覧

参考URL(NeoBundle)

参考URL(Vundle)

注意事項

vimproc は make して .so を作る必要がある。

$ cd ~/.vim/bundle/vimproc
$ make -f make_mac.mak # 環境により異なる
$ ln -s $HOME/.vim/bundle/vimproc/autoload/proc.so $HOME/.vim/autoload

参考URL(その他)



Programming

[さくらVPS(CentOS)]初期設定(ssh, iptables, demon, etc)

2012 年 3 月 16 日



昨日、レンタルサーバに Rails をインストールしても意味が無いことに気づいたので、さっそくさくらの VPS を借りた。

とりあえず、色々なサイトを参考にして初期設定を。

コントロールパネル

https://secure.sakura.ad.jp/vpscontrol/
IPアドレス: xxx.xxx.xxx.xxx
パスワード: XXXXXXXXXXXXXXX

にログインして、「起動」する。

初期設定

作業用ユーザ作成と設定

通常用のユーザー作成。

# useradd suVene
# passwd suVene
# usermod -G wheel suVene # あとで sudo するために
# su - suVene # 一旦作成したユーザに戻る

SSH用の設定

パスワード認証は危険なので、公開鍵認証に限定。

$ ssh-keygen -t rsa
$ vi ~/.ssh/authorized_keys
(作業用PCで作成した公開鍵貼付け)
$ chmod 600 ~/.ssh/authorized_keys
$ su -
# vi /etc/ssh/sshd_config
# /etc/init.d/sshd

ちなみに、sshd_config の diff.

< Port 22922
--- > #Port 22
42c42
< PermitRootLogin no
---
> #PermitRootLogin yes
66c66
< PasswordAuthentication no
---
> PasswordAuthentication yes
96,97c96,97
< UsePAM no
< # UsePAM yes
---
> #UsePAM no
> UsePAM yes

sudo の設定

sudo の設定と、ルートパスワード無効化
ついでに、sudo のログを syslog に出力して、ログローテーション設定。

# passwd -l root
# visudo
// coment in
wheel ALL=(ALL)  ALL
Defaults syslog=local3

# vi /etc/syslog.conf
local3.*

# touch /var/log/sudo
# chmod 600 /var/log/sudo
# vi /etc/logrotate.d/syslog
/var/log/sudo

ネットワークとサービス

iptables

sudo vi /etc/sysconfig/iptables

さくらのVPS を使いはじめる 3 – iptables を設定する | アカベコマイリ
が参考になる。
行末に空白が入っていたらダメなので注意。
解放するポートは適宜修正すること。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306  -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

設定できたら、iptables の再起動。

sudo /etc/rc.d/initd/iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

設定の確認。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
……

不要なデーモンをストップ

はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ | ウェブル
の設定をそのまま頂いた。でも、さくらのVPSではほとんど止まっている。

/sbin/chkconfig auditd off
/sbin/chkconfig autofs off
/sbin/chkconfig avahi-daemon off
/sbin/chkconfig bluetooth off
/sbin/chkconfig cups off
/sbin/chkconfig firstboot off
/sbin/chkconfig gpm off
/sbin/chkconfig haldaemon off
/sbin/chkconfig hidd off
/sbin/chkconfig isdn off
/sbin/chkconfig kudzu off
/sbin/chkconfig lvm2-monitor off
/sbin/chkconfig mcstrans off
/sbin/chkconfig mdmonitor off
/sbin/chkconfig messagebus off
/sbin/chkconfig netfs off
/sbin/chkconfig nfslock off
/sbin/chkconfig pcscd off
/sbin/chkconfig portmap off
/sbin/chkconfig rawdevices off
/sbin/chkconfig restorecond off
/sbin/chkconfig rpcgssd off
/sbin/chkconfig rpcidmapd off
/sbin/chkconfig smartd off
/sbin/chkconfig xfs off
/sbin/chkconfig yum-updatesd off

不要コンソール無効に(さくらではDefault無効)

$ sudo vi /etc/inittab
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

selinux を無効に(さくらではDefault無効)

$ sudo vi /etc/sysconfig/selinux
SELINUX=disabled

reboot before/after

$ free
             total       used       free     shared    buffers     cached
Mem:        502572     122084     380488          0      11488      60348
-/+ buffers/cache:      50248     452324
Swap:      2088440          0    2088440

$ free
             total       used       free     shared    buffers     cached
Mem:        502572      85824     416748          0       6736      31248
-/+ buffers/cache:      47840     454732
Swap:      2088440          0    2088440

その他設定

日本語設定

sudo vi /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"

yum アップデート

sudo yum update

とりあえずこれだけ。

参考URL



Web・Net関連 , ,

[さくらレンタル] ruby 1.9.3 と Rails 3.2.2 インストール

2012 年 3 月 16 日




追記1 2012/3/16 01:03

そもそも、Rails はバージョン 2.3 以降から Rack 採用だから、CGI 経由じゃ動かないのか。VPS 借りようかな。
Daisakkkuのblog : さくらインターネット(共用・スタンダード)にRubyOnRailsをインストールしてみた。(その1) はてなブックマーク数
Daisakkkuのblog : さくらインターネット(共用・スタンダード)にRubyOnRailsをインストールしてみた。(その1) はてなブックマーク数

↓ ここから下は「ただインストールしてみました」ってだけとなる↓

初期状態

% ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [i386-freebsd7]

% gem --version
1.6.2

Rubyインストール

まずは、最新版 Ruby のインストールから。

% mkdir -p ~/local/src/
local/src/

% wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-rc1.tar.gz

% tar xzvf ruby-1.9.3-rc1.tar.gz
ruby-1.9.3-rc1/

% ./configure --prefix=$HOME/locale
% make && make install

環境設定

export して、version 確認。

% vim ~/.zshenv
export PATH=$HOME/local/lib/ruby/gems:$HOME/local/bin:$HOME/usr/local/bin:$PATH
export RUBYLIB=$HOME/local/lib/ruby/site_ruby/1.9.1:$HOME/local/lib/ruby
export GEM_HOME=$HOME/local/lib/ruby/gems

% source .zshenv
ruby 1.9.3dev (2011-09-23 revision 33323) [i386-freebsd7.1]

% gem -v
/home/zeromemory/local/lib/ruby/1.9.1/yaml.rb:56:in `':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

なにやら、libyaml が必要とのことなので、LibYAMLからダウンロード。

% tar xzvf yaml-0.1.4.tar.gz
% yaml-0.1.4.tar.gz
% ./configure --prefix=$HOME/locale
% make && make install

もっかい ruby インストール。 –with-opt-dir 付きで。
http://d.zeromemory.info/2012/03/16/install-ruby-rails-for-sakura.html

% ./configure --prefix=$HOME/local --with-opt-dir=$HOME/local --enable-shared --disable-install-doc --enable-option-checking
% gem --version
1.8.19

最後に Rails インストール

% gem install rails
% rails -v
Rails 3.2.2

おわり。
動作確認はまだしていない。

参考URL



Programming ,