본문 바로가기

Development/Servers

CentOS 5 에 NodeJS, MongoDB 설치하기

최근 남는 피시에 센트OS 최신(5.6)을 설치하였습니다. DVD 한장 구워서 쭉 진행하니 깔끔히 설치되더군요. Server GUI 셋업으로 했더니 장착되어 있던 SB Audigy 드라이버도 함께 설치되어 소리도 납니다. Samba 포트를 비롯하여 자주 사용되는 80 포트, 3000 포트, 8080 포트 등을 열어두고 셋업을 마쳤습니다.

YUM 업데이트로 모든 업데이트를 설치하고 일반 계정 하나 만들어 GUI 위에 System Monitor 프로그램 하나 띄워두고 키보드 마우스를 덮었습니다. (더이상 만지지 않겠다는 얘기죠)

제가 사용하는 PC 에서 터미널을 열었습니다. NodeJS 홈페이지로 들어가 설치 부분을 살펴봅니다.
https://github.com/joyent/node/wiki/Installation



컴파일해서 설치할 생각이 없기 때문에 아래쪽에 있는 링크를 통해 패키지 설치로 이동합니다.



CentOS 는 데비안 패키징이 아니라 레드햇의 RPM 이기 때문에 오픈수세 항목을 참고하여 YUM 으로 설치해줍니다. (http://download.opensuse.org/repositories/home:/SannisDev/CentOS_CentOS-5/)


먼저 레포지토리를 추가합니다.


cd /etc/repos 에서 SannisDev.repo 파일을 만들어줍니다.


[root@localhost yum.repos.d]# vi SannisDev.repo

[home_SannisDev]
name=SannisDev's Home Project (CentOS_CentOS-5)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/home:/SannisDev/CentOS_CentOS-5/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/home:/SannisDev/CentOS_CentOS-5/repodata/repomd.xml.key
enabled=1

파일 안에 들어갈 내용은 위와 같습니다.


이제 yum install nodejs 해봅니다.


[root@localhost yum.repos.d]# yum install nodejs
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.daum.net
 * extras: ftp.daum.net
 * updates: ftp.daum.net
home_SannisDev                                                          | 1.3 kB     00:00    
home_SannisDev/primary                                                  |  19 kB     00:00    
home_SannisDev                                                                           89/89
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nodejs.i386 0:0.4.8-1.1 set to be updated
--> Processing Dependency: libv8_g.so.3 for package: nodejs
--> Processing Dependency: libv8.so.3 for package: nodejs
--> Processing Dependency: libev.so.4 for package: nodejs
--> Processing Dependency: libcares.so.2 for package: nodejs
--> Running transaction check
---> Package c-ares.i386 0:1.6.0-5.el5 set to be updated
---> Package libev4.i386 0:4.04-4.1 set to be updated
---> Package libv8-3.i386 0:3.1.8-1.1 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================
 Package             Arch             Version                 Repository                  Size
===============================================================================================
Installing:
 nodejs              i386             0.4.8-1.1               home_SannisDev             769 k
Installing for dependencies:
 c-ares              i386             1.6.0-5.el5             base                        49 k
 libev4              i386             4.04-4.1                home_SannisDev              65 k
 libv8-3             i386             3.1.8-1.1               home_SannisDev             3.8 M

Transaction Summary
===============================================================================================
Install       4 Package(s)
Upgrade       0 Package(s)

Total download size: 4.7 M
Is this ok [y/N]:

친절한 yum 이 필요한 패키지 알아서 다운로드 하고 nodejs 를 설치해주고 있습니다.


Downloading Packages:
(1/4): c-ares-1.6.0-5.el5.i386.rpm                                      |  49 kB     00:00    
(2/4): libev4-4.04-4.1.i386.rpm                                         |  65 kB     00:01    
(3/4): nodejs-0.4.8-1.1.i386.rpm                                        | 769 kB     00:04    
(4/4): libv8-3-3.1.8-1.1.i386.rpm                                       | 3.8 MB     00:19    
-----------------------------------------------------------------------------------------------
Total                                                          144 kB/s | 4.7 MB     00:33    
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID dfef6298
home_SannisDev/gpgkey                                                   | 1.0 kB     00:00    
Importing GPG key 0xDFEF6298 "home:SannisDev OBS Project <home:SannisDev@build.opensuse.org>" from http://download.opensuse.org/repositories/home:/SannisDev/CentOS_CentOS-5/repodata/repomd.xml.key
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : libev4                                                                  1/4
  Installing     : c-ares                                                                  2/4
  Installing     : libv8-3                                                                 3/4
  Installing     : nodejs                                                                  4/4

Installed:
  nodejs.i386 0:0.4.8-1.1                                                                     

Dependency Installed:
  c-ares.i386 0:1.6.0-5.el5       libev4.i386 0:4.04-4.1       libv8-3.i386 0:3.1.8-1.1     

Complete!
[root@localhost yum.repos.d]#

설치가 잘 되었는지 확인해봅니다.


[root@localhost yum.repos.d]# clear

[root@localhost yum.repos.d]# which node
/usr/bin/node
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# node -v
v0.4.8
[root@localhost yum.repos.d]#

이로 nodejs 설치 완료!


추가로 패키지매니저인 npm 도 설치해봅니다.


[root@localhost ~]# which curl
/usr/bin/curl
[root@localhost ~]#
[root@localhost ~]# curl http://npmjs.org/install.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3902  100  3902    0     0   4362      0 --:--:-- --:--:-- --:--:--  5185
fetching: http://registry.npmjs.org/npm/-/npm-1.0.15.tgz
0.4.8
1.0.15
prefix=/usr

This script will find and eliminate any shims, symbolic
links, and other cruft that was installed by npm 0.x.

Is this OK? enter 'yes' or 'no'

yes 해주면 설치가 됩니다.


find: /usr/lib/node: No such file or directory
find: /usr/lib/node: No such file or directory

All clean!
! [ -d .git ] || git submodule update --init
node cli.js cache clean
node cli.js rm npm -g -f --loglevel error
node cli.js install -g -f
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm.js
/usr/bin/npm_g -> /usr/lib/node_modules/npm/bin/npm.js
/usr/bin/npm-g -> /usr/lib/node_modules/npm/bin/npm.js
npm@1.0.15 /usr/lib/node_modules/npm
It worked
[root@localhost ~]#


설치확인


[root@localhost ~]# which npm
/usr/bin/npm
[root@localhost ~]# npm -v
1.0.15
[root@localhost ~]#

이후 npm 을 사용해 여러 node 패키지를을 사용해볼 수 있습니다.

http://blog.outsider.ne.kr/638

를 참고하세요.


node 용 MVC 웹 프레임워크인 express 를 설치하려면 아래와 같이 입력합니다.


$ npm install -g express

express 에 대한 자세한 내용은 아래 링크를 참고해주세요.

http://expressjs.com/guide.html



추가로 mongodb 설치하기


함께 사용할 DB 로 최근 가장 핫 한 아이템인 몽고를 설치해보기로 했습니다.


아래 링크에서 다운로드 가능합니다.

http://www.mongodb.org/downloads


받아서 올리고 하는게 귀찮아서 그냥 wget 으로


[root@localhost ~]# wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz
--2011-07-04 15:14:08--  http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz
Resolving fastdl.mongodb.org... 216.137.53.184, 216.137.53.191, 216.137.53.227, ...
Connecting to fastdl.mongodb.org|216.137.53.184|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 27688859 (26M) [application/x-tar]
Saving to: `mongodb-linux-i686-1.8.2.tgz'

100%[=====================================================>] 27,688,859  6.22M/s   in 4.3s   

2011-07-04 15:14:13 (6.10 MB/s) - `mongodb-linux-i686-1.8.2.tgz' saved [27688859/27688859]

[root@localhost ~]#

압축을 풀고 설치합니다.


[root@localhost ~]# tar zxvfp mongodb-linux-i686-1.8.2.tgz
mongodb-linux-i686-1.8.2/
mongodb-linux-i686-1.8.2/THIRD-PARTY-NOTICES
mongodb-linux-i686-1.8.2/GNU-AGPL-3.0
mongodb-linux-i686-1.8.2/README
mongodb-linux-i686-1.8.2/bin/
mongodb-linux-i686-1.8.2/bin/mongofiles
mongodb-linux-i686-1.8.2/bin/mongostat
mongodb-linux-i686-1.8.2/bin/bsondump
mongodb-linux-i686-1.8.2/bin/mongos
mongodb-linux-i686-1.8.2/bin/mongodump
mongodb-linux-i686-1.8.2/bin/mongoimport
mongodb-linux-i686-1.8.2/bin/mongosniff
mongodb-linux-i686-1.8.2/bin/mongo
mongodb-linux-i686-1.8.2/bin/mongod
mongodb-linux-i686-1.8.2/bin/mongoexport
mongodb-linux-i686-1.8.2/bin/mongorestore
[root@localhost ~]#

bin 안의 파일들을 /usr/bin 으로 이동시켜서 항상 사용할 수 있도록 합니다. (개인 취향이니 편하신 대로 해주세요)


[root@localhost ~]# mv mongodb-linux-i686-1.8.2/bin/* /usr/bin

잘 위치했는지 확인


[root@localhost ~]# which mongod
/usr/bin/mongod
[root@localhost ~]# which mongo
/usr/bin/mongo
[root@localhost ~]#

몽고 DB 데몬으로 실행하기 위해 데이터가 저장될 위치를 준비합니다.


저는 /var/mongo 로 하기로 했습니다.


[root@localhost ~]# ls /var
account  crash  empty  games  lib    lock  mail   nis  preserve  run    tmp  www
cache    db     ftp    gdm    local  log   named  opt  racoon    spool  tux  yp
[root@localhost ~]# mkdir /var/mongo


[root@localhost ~]# mongod --dbpath=/var/mongo &
[1] 24348
[root@localhost ~]# Mon Jul  4 15:20:35 [initandlisten] MongoDB starting : pid=24348 port=27017 dbpath=/var/mongo 32-bit

** 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
**       with --dur, the limit is lower

Mon Jul  4 15:20:35 [initandlisten] db version v1.8.2, pdfile version 4.5
Mon Jul  4 15:20:35 [initandlisten] git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
Mon Jul  4 15:20:35 [initandlisten] build sys info: Linux bs-linux32.10gen.cc 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_37
Mon Jul  4 15:20:35 [initandlisten] waiting for connections on port 27017
Mon Jul  4 15:20:35 [websvr] web admin interface listening on port 28017

[root@localhost ~]#

[root@localhost ~]# ps -ef | grep mongo
root     24348  3709  0 15:20 pts/1    00:00:00 mongod --dbpath=/var/mongo
root     24451  3709  0 16:11 pts/1    00:00:00 grep mongo
[root@localhost ~]#


프로세스가 잘 돌아가는지 확인합니다.