タグ: centos

node.js をインストールしてみるまでのあれこれ

node.js でテストしたいことがあったので入れてみる。
まず、node.jsから「Source Code」をダウンロードする。
「Linux Binaries (.tar.gz)」は中にmakeファイルとかなくてどうしたら良いか分からなかったので、ソースコードの方で進める。
落としてきた「node-v0.10.19.tar.gz」を解凍する。

# tar -zxvf node-v0.10.19.tar.gz

解凍した中身を見てみる。

# cd node-v0.10.19

中にconfigureとMakefileがあるので、とりあえずmakeしてみる

# make
python ./configure
  File "./configure", line 442
    fpu = 'vfpv3' if armv7 else 'vfpv2'
                   ^
SyntaxError: invalid syntax
make: *** [config.gypi] エラー 1

おーぅ・・・

python入れます。

yum install python

と、すると

Package python-2.4.3-56.el5.i386 already installed and latest version

古い、古すぎる!ハッハー!
まぁ5系だからねぇ。
ダウンロードページには

Note: Python 2.6 or 2.7 is required to build from source tarballs.

と書いてあるので、これも入れることにする。

# wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz
# tar -zxvf Python-2.7.5.tgz
# cd Python-2.7.5
# configure

configure時に –enable-shared をつけている記事が多いのですが
LinuxでPythonをビルドするときの –enable-shared オプションについて
を見ると初心者にはオススメしない的なことが書いてあるので、それに従って何もつけないことにする。

# make
# make install

で、いいのかな?

# python
Python 2.7.5 (default, Sep 25 2013, 13:40:17)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

いいっぽい。python のインストールは終了。

node.jsに戻る。

# cd node-v0.10.19
# make

で、

which: no g++ in・・・
make: *** [out/Makefile] エラー 1

はい。そっちもですね。

GCC++入れます。

# yum install gcc*

もやる。
なんとなく gcc-c++ だけでもいいような気がするけど。

node.jsに戻って再度make。

# make

で、

ImportError: No module named bz2
make: *** [node] エラー 2

ういーす。

bz2入れます。

yum install bzip2*

node.jsに戻って再々度make。

# make

で、

ImportError: No module named bz2
make: *** [node] エラー 2

???
Rackhubで新しいnode.jsを入れるときにImportError: No module named bz2が出たら
」こちらを確認させていただくと、「bz2が入ってなくてpythonがbz2入りでビルドされていないから」ということらしい。
てことは再度python入れなおしって事か。

# configure --with-bz2
# make
# make install

これでどうでしょう?

再度、node.jsに戻って再々々度make。

# make

で、いけた。

# make install

うむ、いけた。

# node -v
v0.10.19

できた。

ログファイルの位置を変更する

アクセスログをデフォルトの場所にいつまでも保存しておくと、ディスクの容量が…
って事にならないよう、予めログファイルを作成するディレクトリを指定しておく。

httpd.conf の500行目あたりに以下の指定があるのでそれぞれ変更する。
場所はServerRoot(デフォルトだと[ /etc/httpd ])からの
相対パスで記入されているので、それに合わせる。

ErrorLog logs/error_log
CustomLog logs/access_log combined
↓
ErrorLog ../../home/httpd_logs/error_log
CustomLog ../../home/httpd_logs/access_log combined

こんなカンジで。

書き換えたら、httpdの再起動で指定した場所にログが生成されていくことを確認して終了。

手動で時刻合わせ

適当に時刻合わせしておきたいとき。
NTPと同期を取れる環境にない時は手動でやることになるので。

date --set='2013/06/28 15:48:20'

のようにして設定。

NTPサーバと同期設定したけど、すぐさま合わせたいときは

# /etc/init.d/ntpd stop
# ntpdate time.asia.apple.com
# /etc/init.d/ntpd start

で。

NTPDを止めておかないと

# ntpdate time.asia.apple.com
 7 Sep 09:54:43 ntpdate[14802]: the NTP socket is in use, exiting

こんなカンジで怒られる。

いまさらのnamazuインストール(途中)

分かってる。
使う期間は数週間、もしくは数日しかないことはよく分かってる。
けど、全く同じ環境を構築しなきゃいけない以上やらざるを得ない…!
でも最低限でいいや。
なんか書いてたら長くなってきたのであとで分割しよう。

namazuを入れるにはいろいろと下準備が必要。

  • kakasiインストール
  • nkfインストール
  • File-MMagicインストール

下準備を経てnamazuインストールにいたるのだが、その後もいろいろと作業が必要。

  1. kakasi のインストール
    • まず、kakasi をダウンロードしてくる。kakashi ではなく、kakasi 。
      http://kakasi.namazu.org/ にある [ ダウンロード > ソース ] から持ってくる。2013/05/31 時点での最新は2.3.4みたい。

      wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz
    • ダウンロードが終わったら解凍。
      tar -zxvf kakasi-2.3.4.tar.gz
    • [ kakasi-2.3.4 ] というディレクトリができるので、そちらに移動。
      cd kakasi-2.3.4
    • configure と make と make install をおこなう。
      configure
      make
      make install
  2. nkf のインストール
    • nkfを sourceforge からダウンロード。
      http://sourceforge.jp/projects/nkf/ にある [ ダウンロード > ソース ] から持ってくる。2013/05/31 時点での最新は2.1.2。

      wget http://iij.dl.sourceforge.jp/nkf/53171/nkf-2.1.2.tar.gz
    • ダウンロードが終わったら解凍。
      tar -zxvf nkf-2.1.2.tar.gz
    • [ nkf-2.1.2 ] というディレクトリができるので、そちらに移動。
      cd nkf-2.1.2
    • configure がないので、make と make install をおこなう。
      make
      make install
  3. namazu 前の File-MMagic インストール
    • namazuを サイトからダウンロード。
      http://www.namazu.org/ にある [ ダウンロード ] から持ってくる。2013/05/31 時点での最新は2.1.2。

      wget http://www.namazu.org/stable/namazu-2.0.21.tar.gz
    • ダウンロードが終わったら解凍。
      tar -zxvf namazu-2.0.21.tar.gz
    • [ namazu-2.0.21 ] というディレクトリができるので、そちらに移動。
      cd namazu-2.0.21
    • [ File-MMagic ] というディレクトリがあるので、そちらに移動。
      cd File-MMagic
    • ここに [ Makefile.PL ] というファイルがあるのでこれを以下のようにして実行。
      実行時に「Can’t locate ExtUtils/MakeMaker.pm」とか出てきたら、その旨対処。

      perl Makefile.PL LIB=/root/lib INSTALLMAN3DIR=/root/man
    • 同一階層内に [ Makefile ] というファイルを作ってくれるので、makeとmake installする。
      make
      make install
    • ここまでで[ File-MMagic ]のインストールが終わるので、一つ上の階層に戻ってnamazu本体のインストールに戻る。
  4. namazu インストール
    • [ File-MMagic ]の位置を指定しつつ、configure。
      ./configure --with-pmdir=/root/lib

      「./configure」だけだと、途中でエラーが出る。

    • いつもどおり、make & make install。
      make
      make install
    • ここまで出来たら、[ /usr/local/libexec ] に [ namazu.cgi ] が入っているので、これを [ /var/www/cgi-bin/namazu ] あたりにコピー。
      cp /usr/local/libexec/namazu.cgi /var/www/cgi-bin/namazu/.
    • 続いて、[ /usr/local/etc/namazu ] に [ namazurc-sample ] が入っているので、これを [ /var/www/cgi-bin/namazu ] あたりにリネームしつつコピー。
      cp /usr/local/libexec/namazurc-sample /var/www/cgi-bin/namazu/.namazurc

locateのインストール

locateがない・・・
findは入ってるけど、locateも使いたい。
そんな時は

yum install mlocate

これでまだ行けそう。
どうしようもない時は

find / -name hogehoge

で行くしか無い。

iptables を直接編集で

いろいろと面倒になってきたので、iptablesは直接編集することにする。
Stray Penguinさまのサイトにすごく詳しく書いてある。全部通して読みたいけど時間がない。
とりあえず、

vi /etc/sysconfig/iptables

で、編集することができる。

デフォルトは

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*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 --dport 5353 -d 224.0.0.251 -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
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

ってカンジで、2行目に「このファイルを直接編集するのはお勧めしないよ」って書いてあるけど、
気にしないことにする。

iptables -F

をやってしまった直後だと、

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

しか書いてなくて、参考になるものがないかもしれない。
この状態だと、

INPUT → すべて許可
FORWARD → すべて許可
OUTPUT → すべて許可

ということになる。
サーバだからINPUTがなきゃOUTPUTしない、と思い込んでいるので、INPUTとFORWARDについて主に書いていく。
デフォルトのファイルを参考に修正するだけなら、大丈夫かな?

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*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 --dport 5353 -d 224.0.0.251 -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
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
# HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# NTP
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
# HTTPS
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
# MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 3306 -j ACCEPT
# Zabbix-Agent
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 10050 -j ACCEPT
# Zabbix-Trapper
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1.0/24 --dport 10051 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

こんなかんじにしてみた。
SSH、MySQL、Zabbixは家の中からのアクセスしか無いので。
デフォルトで入ってる631(IPP)とか5353(mDNS)は使うかどうかわからないので一旦コメントアウト。

必要に応じて、

# zend server
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10081 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10082 -j ACCEPT
# deep security
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4118 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4119 -j ACCEPT

とか加えてもいいかも。

du で指定ディレクトリの容量を見たい

たまにはmanを見てみるのもいいもので。
du の man ページ を見てみたら

–max-depth=N
コマンドライン引数より最大 N 個下の階層までのディレクトリを (–all の指定があればファイルも)集計する。 –max-depth=0 なら、–summarize と同等となる。

とのこと。

つーことで

du -h --max-depth=1 /var/www/

とかやってみたら

58G     /var/www/html
924K    /var/www/icons
224K    /var/www/error
8.0K    /var/www/cgi-bin
58G     /var/www/

みたいな。

便利。