ふにょい日記

ふにょ・い 2 (形)[文]ク ふにょ・し 思い通りにならない為力が入らなくなる様。[派生] ――げ(形動)――さ(名)

FreeBSD をインストールして node.js (0.4.1) をセットアップしようとして駄目だった時の記録

2011-03-01 23:56:09 | FreeBSD
Linux が流行ってるので BSD 系のを応援したくて
FreeBSD がインストールできる、さくらインターネットのVPSにした。

http://support.sakura.ad.jp/support/vps/menu_oscustom_freebsd.shtml
「[STEP 6] 配布パッケージの選択」の「All」の設定でインストールした。


■SSH
デフォルトでは、秘密鍵と公開鍵のファイルが必要になるようなので、
下記を参考に鍵ファイル無しで、パスワード入力で SSH でログイン出来るようにした。
http://www.kishiro.com/FreeBSD/ssh.html

上のサイトにあるように /etc/ssh/sshd_config の次の項目を書き換えた

Port xxxxx
Protocol 2
PermitRootLogin no
PasswordAuthentication yes
PermitEmptyPasswords no


■firewall
FreeBSD では、ファイヤーウォールに ipfw を使うらしい。
IPFW を使うのにカーネルを再構築しないといけないというのは古い情報らしく、今はカーネル再構築などしなくても /etc/rc.conf に firewall_enable="YES" を書くだけで有効になる。

http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=ipfw&dir=jpman-4.5.0%2Fman&sect=0
http://d.hatena.ne.jp/ham68616d/20100831/1283271909
http://suteneko.org/diary/?date=20041215
http://peta.dip.jp/pc/freebsd/freebsd_r70_simple_security_memo.htm
http://suken.jp/~tet/FreeBSD/ipfw.rhtml
http://www17.ocn.ne.jp/~tsns/html/ipfw.html
間違い→http://blogs.dion.ne.jp/zengaichi/archives/9209904.html
外部設定ファイルを読み込むのに rc.firewall を書き換える必要は無い。 firewall_flags="-p cpp" を指定すれば良い。(m4は分からないのでcppにした)

/etc/rc.conf に下記を追記
----
firewall_enable="YES"
firewall_quiet="NO"
firewall_flags="-p cpp"
firewall_type="/etc/ipfw.conf"
firewall_logging="NO"
----

ipfw.conf を作成して下記のようなかんじで記述した。
----
add 00110 allow tcp from any to me 80
add 00111 allow tcp from me 80 to any
add 00112 allow tcp from me to any 80
add 00113 allow tcp from any 80 to me

add 00120 allow tcp from any to me 8521
add 00121 allow tcp from me 8521 to any

add 00132 allow tcp from me to any 21
add 00133 allow tcp from any 21 to me

add 01000 allow udp from me to any 53
add 01001 allow udp from any 53 to me

add 60000 allow tcp from me to any setup
add 61000 pass tcp from any to any established

add 65000 deny ip from any to any
----

サーバー内から外に対して ftp が使えないと ports のをインストールする時に困るはず。
なので、サーバー内から外に接続しに行くパケットとそれに続くパケットは全て許可した。
そうすれば、パッシブモードで FTP が使える。
ピンポイントで FTP 用の穴を開ける方法は無いみたい。


■node.js
/usr/ports/archivers/gtar と
/usr/ports/devel/git をインストールしたら、
curl も python も入ったみたい。
そのあと /usr/ports/shells/bash もインストールした。
nave で node.js の latest (0.4.1) をインストールしようとしたら
libexecinfo のインストールが必要とも言われたのでインストールした。

nave は、シェルスクリプトの実行に /bin/bash を使うので bash のリンクを貼る
# cd /bin
# ln /usr/local/bin/bash

nave は、 gtar を使うので環境変数 TAR に設定する。
$ TAR=/usr/local/bin/gtar; export TAR

gmake じゃないと変数が展開できないエラーになるので下記のように gmake を使うようにする。
使う make の実装を設定する為の環境変数は nave には無かったので。
$ mkdir $HOME/bin
$ cd $HOME/bin
$ ln /usr/local/bin/gmake make
$ PATH=$HOME/bin:$PATH

nave をインストールする。
$ git clone http://github.com/isaacs/nave.git ~/.nave

◆node.js 0.4.1 は、コンパイルに失敗した。

V8 のコンパイル中に
error: cannot allocate an object of abstract type 'v8::internal::FreeBSDMutex'
が出てコンパイルできない
http://code.google.com/p/v8/issues/detail?id=966#c9

http://code.google.com/p/v8/issues/attachmentText?id=966&aid=-1192974939171566093&name=v8-issue-966-r6475.patch&token=a5c64ddc1ae2ee0bbc5d74f388b1888c
という V8 のパッチがあるようで、
これを参考に書き換えれば、上手くいく可能性もあるかもしれないが、分からない。


◆node.js 0.2.6 はインストール出来た。

$ ~/.nave/nave.sh install 0.2.6
でコンパイルとインストールをして
$ ~/.nave/nave.sh use 0.2.6
で実際に使えるようにする(PATH に設定する)。

npm は、 nave.sh use した後にインストールする。

node.js 0.2.6 だと、
$ curl http://npmjs.org/install.sh | sh
で最新の npm をインストールしようとすると node.js 0.4 か 0.5 じゃないとだめみたいなエラーがでた。
なので、
https://github.com/isaacs/npm/downloads
で v0.2.16 の tar.gz の方をインストールした。
ダウンロードしたら、展開して make したらインストール出来た。

/usr/ports/databases/sqlite3 (3.6.23.1)を make install clean したが、
npm install sqlite3 は失敗した。


やはり、更新の激しい node.js で古い処理系を使うのは、厳しいので、
FreeBSD は、諦めた。