Cài đặt NodeJS trên WebFaction server


NodeJS gần như là tùy chọn mặc định cho các web application hoạt động trên thời gian thực. Cài đặt và sử dụng NodeJS không khó, nhưng cài đặt lên các đám mây như AWS, Cloud9 IDE,  WebFaction, ModolusIO...  lại là những câu chuyện hoàn toàn khác. Mỗi hệ thống này được thiết kế một kiểu, cấu hình và platform của chúng khác nhau, phiên bản ứng dụng, ngôn ngữ cũng rất khác biệt.

Cái tôi cần là một server chạy NodeJS và có Forever để giữ nó chạy liên tục. Phải mất tới 3 tiếng mày mò, install và uninstall vài lần, tôi mới tạo được NodeJS server như ý muốn trên WebFaction. Lần đầu tiên, tôi clone thẳng repository của NodeJS từ GitHub về WebFaction, gói này đã có sẵn NPM nhưng khi cài đặt Forever bằng lệnh install của npm thì nhận được thông báo lỗi "shasum check failed" mà khá nhiều người gặp phải. Gỡ bỏ NPM và cài lại bằng gói chính thức cũng không ăn thua. Cài lại NodeJS bằng bản tar.gz, sau đó cài thêm NPM cũng gặp một số vấn đề khác. Sau cùng, tôi uninstall toàn bộ những gì đã cài đặt và thực hiện lại quá trình 4 bước rất đơn giản như sau :


1. Tạo application có port riêng

Từ WebFaction dashboard, tôi tạo 1 application mới để chạy dịch vụ NodeJS.

Ở đây tôi thiết lập app là Custom app (listening on port) để WebFaction mở ra một cổng cho NodeJS về sau.


Kết quả, tôi có một application mới với tên node. Chú ý cổng được cấp phát là 13166. NodeJS server sẽ nói chuyện với các clients qua cổng này.



2. Cài đặt NodeJS

Bây giờ, tôi mở command line và đăng nhập tài khoản WebFaction qua SSH, đưa con trỏ vào webapps/node, tạo thêm thư mục src để lấy source về cài đặt :

$ cd webapps/node/
mkdir src
cd src
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=$HOME
make install

Note :

- Tham số --prefix=$HOME chỉ định hệ thống sao chép chương trình Node vào ~/bin/
- Cài đặt NodeJS yêu cầu phải có Python 2.6 trở lên. Gói account WebFaction của tôi được cấp phát máy chủ chạy Python 2.7, do đó không cần quan tâm đến vấn đề này. Một số tài khoản WebFaction khác chạy phiên bản Python cũ hơn yêu cầu sẽ phải dùng lệnh alias để fake thông số phiên bản Python. Các bạn có thể tham khảo chi tiết trong hướng dẫn của Akseli Palén trên StackOverflow.

Tiến trình cài đặt NodeJS của tôi chỉ diễn ra trong vài phút. Sau khi hoàn tất, tôi gõ lệnh node -v để kiểm tra lại phiên bản NodeJS. Mọi thứ suôn sẻ.


3. Cài đặt NPM

NPM là chương trình được thiết kế để quản lý các modules chạy trên server NodeJS. Đó là thứ không thể thiếu được. Tôi dùng dòng lệnh sau để cài đặt :

curl https://npmjs.org/install.sh | sh

Isaac hay ai đó ở Joyent đã thay đổi giao thức HTTP cũ bằng  HTTPS. Một số hướng dẫn trên mạng dùng đường dẫn trước đây sẽ không chạy.


4. Cài đặt Forever

Với NodeJS, chúng ta thường chạy nó qua command line, nhưng khi đóng cửa sổ command line, server sẽ tắt. Để giữ NodeJS server chạy suốt, người ta thường sử dụng một daemon tool nào đó hỗ trợ tự động kiểm tra và kích hoạt lại NodeJS server khi bị tắt ngoài ý muốn. Forever được tạo ra để duy trì trạng thái running của server NodeJS. Đã có NPM, việc cài đặt Forever rất đơn giản :

npm install -g forever


Kết quả cuối cùng như hình dưới. Không có error nào cả :D



Vậy là xong, mọi thứ đã sẵn sàng để tôi build các ứng dụng NodeJS trên WebFaction server của tôi.