ちょっと作業するときに忘れてしまうのでメモ。 さくらインターネットの VPS で適当なユーザーを作成して sudo 権限を与えてから作業。
ちょうど去年くらいの Realtime Web hack-a-thon で Windows でのビルドとかやってたんだなぁ、と振り返ると、 本体だけでなく周辺ライブラリが充実してきたスピードも目を見張るものがある。
- Porting Node to Windows With Microsoft’s Help (node blog)
- Installing Node.js On Windows (MOZILLA WEBDEV)
Node.js のインストール
基本的な環境の準備
$ cd /usr/local $ sudo mkdir src/archive $ sudo chgrp -R wheel src $ sudo chmod 775 src src/archive/ $ sudo yum -y install openssl-devel
パッケージをダウンロードして展開
$ cd /usr/local/src/archive $ wget http://nodejs.org/dist/node-v0.4.12.tar.gz $ cd .. $ tar -xzvf archive/node-v0.4.12.tar.gz
コンパイルしてインストール
$ cd /usr/local/src/node-v0.4.12 $ ./configure --prefix=/usr/local/nodejs/node-v0.4.12 $ make $ sudo make install
シンボリックリンクを作成してバージョンを確認
$ cd /usr/local/nodejs $ sudo ln -s node-v0.4.12 latest $ /usr/local/nodejs/latest/bin/node -v
npm のインストール
Node のパッケージマネージャーをインストールする。 Python における pip みたいなもの。
パスの調整をすれば、後はドキュメント通り。
$ curl http://npmjs.org/install.sh | sudo PATH=$PATH:/usr/local/nodejs/latest/bin sh
/usr/local/nodejs/latest/bin に npm コマンドがインストールされる。
npm は本体に付属してくれても良いんじゃないかな、とは思うけど、 双方の開発がかなり安定するまでは難しいのかも。 とはいえ、curl コマンドが無い Windows 環境用には同梱されて欲しい。
express のインストール
express は Web アプリケーション・フレームワークのこと。 ロガーとか、ミドルウェアが色々と実装されているので便利。
マシンの利用用途にもよるが、モジュールをシステムグローバルにインストールする場合は "-g" オプションを付ける。 /usr/local/nodejs/latest/bin に express コマンドがインストールされる。
$ export PATH=$PATH:/usr/local/nodejs/latest/bin $ sudo PATH=$PATH:/usr/local/nodejs/latest/bin /usr/local/nodejs/latest/bin/npm install -g express
たとえば、 "http-proxy" というアプリケーションの作成
$ [ -d projects ] || mkdir projects $ cd projects $ express http-proxy $ cd http-proxy $ npm install -d
開発用サーバーを起動
$ node app.js
環境を切り替えるには NODE_ENV を指定
$ NODE_ENV=production node app.js
forever でデーモン化
プロダクション環境で最適な方法は分かりませんが、この辺の記事が参考になりそう。
- node.js+express-mvc-bootstrapをdaemontoolsでデーモン化
- forever - github.com
- daemon.js - github.com
- setting NODE_ENV for node.js + expressjs application as a daemon under ubuntu - stackoverflow.com
forever を使う場合は次のような手順。
npm でシステムグローバルにインストール。
$ sudo PATH=$PATH:/usr/local/nodejs/latest/bin /usr/local/nodejs/latest/bin/npm install -g forever
forever コマンドの start アクションにスクリプトを指定。
$ export PATH=$PATH:/usr/local/nodejs/latest/bin $ forever start app.js
自前で init.d 用スクリプトなどを書くよりは断然簡単で、 list アクションで稼働アプリケーションを一覧表示できるのも嬉しい。 (ターミナルによっては色付きで表示)
$ forever list info: Running action: list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] XnU4 node app.js 32290 32291 /home/shigeru/.forever/XnU4.log 0:0:0:17.44
止めるときは stop を使う。
$ forever stop app.js
終わりに
たまには JavaScript を書かないとー、というときに、さくらのVPSは便利。 Amazon の EC2 でも変わらないけど、なんとなく SSH のレスポンスが早い気もする。
「なぜ Node.js を使うのか?」という点では Facebook の中の人の意見に賛成だけど、 そもそも JavaScript をバリバリ書ける人は多いのか、という点が大きな疑問だったり。。。
- Node.js at Facebook - Why it's Needed and What's Holding it Back - readwriteweb.com
じゃ、Dart を使えば解決?かというと、今は微妙だと感じる。 移行できる資産が存在しないのもネック。
- Dart (STRUCTURED WEB PROGRAMMING) - dartlang.org
どんなプログラミング言語を使うにしても、プロジェクトのライフサイクルを意識して開発できないと厳しい感じ。 それを支援するツールも必要で、パッケージ管理やテスト、ドキュメンテーションは必須。 誰かが開発するとは思うけど、どれだけ熱意のある人が集まるかでスタートダッシュが変わるので、 単純に構文がイケテル、とかはそこまで重要でもない気がする。 (Google にはソフトウェアエンジニアが多いので問題にはならないかもしれないが)
ちょっと関係ないけど、「コンピュータの名著・古典100冊」の一節が簡潔で分かりやすい。
日本語の場合でも、文法を知ることと文章を書くこととの間には大きなギャップがある。 プログラミングも同じである。 文法を知ることとよいプログラムを書くことの間には大きなギャップがある。
名著や古典を紹介する本だけど、これはこれで良い本。 面接で何を聞くか?というトピックは紛糾しやすいけど、この中の10冊以上をきちんと読んでいる人ならハズレない気がする。 もちろん Node.js にはノータッチだけども。
0 件のコメント:
コメントを投稿