node.jsをいじり始める

公開:2013-03-03 17:36
更新:2020-02-15 04:37
カテゴリ:node.js,webmatrix,javascript

Linuxにもnodeをインストールできたので、本格的に勉強し始めている。 ExpressというのがWebサーバーを作っていく上でほぼ必須だそうなので、npmでインストールする。そしてデーモン化するためにforeverも入れてみた。 今は8080ポートで動かしているが、そのうち本格的に使えるようになったら、node-http-proxyを入れてapacheと80番ポートを共存させたいなと思っている。

Expressはコマンドでひな形を作ってくれるのだが、ここで少しはまってしまった。まずウェブの情報ではテンプレートを選択するのに-tを使ってejsかjadeかhamlを選べると書いてあったのだが、この情報は少々古いらしく現バージョンでは-eでejsに切り替えができるようである。jadeのほうがコード量が少なくなるようだけれども、ejsはphpなどでおなじみの方式なのでejsでしばらくやってみようかなと思っている。

しばらくはWebMatrixを使ってローカルで作り、そのコードをSCPでLinuxサーバーにアップしようかなと思う。vsftpdを入れてFTPでデプロイできるようにしようかなと思ったけど、インストールがうまくいかなかったのとセキュリティが気になるのでとりあえずやめておくことにした。

で、WebMatrixのテンプレートにExpressがあるんだけれども、それを使うとjadeになってしまう。いろいろやってみた結果、下記のやり方でできた。ほかにもっといいやり方があるかもしれないが。

  1. コマンド・プロンプトで-eオプションを使ってexpressテンプレートフォルダを作成する。このコマンドを使えるようにするにはひょっとするとnpm ギャラリーで予めexpressをインストールしておかなくてはいけないかもしれない。

    H:\satoshi_documents\documents\My Web Sites>express -e testweb
    
       create : testweb
       create : testweb/package.json
       create : testweb/app.js
       create : testweb/public/stylesheets
       create : testweb/public/stylesheets/style.css
       create : testweb/public
       create : testweb/routes
       create : testweb/routes/index.js
       create : testweb/routes/user.js
       create : testweb/public/javascripts
       create : testweb/views
       create : testweb/views/index.ejs
       create : testweb/public/images
    
       install dependencies:
         $ cd testweb && npm install
    
       run the app:
         $ node app
    
    
    H:\satoshi_documents\documents\My Web Sites>
    
  2. 作成されたフォルダに移動し、npm installする。これで依存するモジュールがインストールされる。

    H:\satoshi_documents\documents\My Web Sites\testweb>npm install
    npm WARN package.json application-name@0.0.1 No README.md file found!
    npm http GET https://registry.npmjs.org/express/3.1.0
    npm http GET https://registry.npmjs.org/ejs
    npm http 304 https://registry.npmjs.org/ejs
    npm http 304 https://registry.npmjs.org/express/3.1.0
    npm http GET https://registry.npmjs.org/methods/0.0.1
    npm http GET https://registry.npmjs.org/cookie-signature/0.0.1
    npm http GET https://registry.npmjs.org/cookie/0.0.5
    npm http GET https://registry.npmjs.org/commander/0.6.1
    npm http GET https://registry.npmjs.org/send/0.1.0
    npm http GET https://registry.npmjs.org/range-parser/0.0.4
    npm http GET https://registry.npmjs.org/fresh/0.1.0
    npm http GET https://registry.npmjs.org/buffer-crc32/0.1.1
    npm http GET https://registry.npmjs.org/debug
    npm http GET https://registry.npmjs.org/mkdirp/0.3.3
    npm http GET https://registry.npmjs.org/connect/2.7.2
    npm http 304 https://registry.npmjs.org/send/0.1.0
    npm http 304 https://registry.npmjs.org/methods/0.0.1
    npm http 304 https://registry.npmjs.org/commander/0.6.1
    npm WARN package.json methods@0.0.1 No README.md file found!
    npm http 304 https://registry.npmjs.org/cookie/0.0.5
    npm http 304 https://registry.npmjs.org/cookie-signature/0.0.1
    npm http 304 https://registry.npmjs.org/range-parser/0.0.4
    npm http 304 https://registry.npmjs.org/fresh/0.1.0
    npm http 304 https://registry.npmjs.org/buffer-crc32/0.1.1
    npm http 304 https://registry.npmjs.org/debug
    npm http 304 https://registry.npmjs.org/mkdirp/0.3.3
    npm http 304 https://registry.npmjs.org/connect/2.7.2
    npm WARN package.json connect@2.7.2 No README.md file found!
    npm http GET https://registry.npmjs.org/mime/1.2.6
    npm http 304 https://registry.npmjs.org/mime/1.2.6
    npm http GET https://registry.npmjs.org/pause/0.0.1
    npm http GET https://registry.npmjs.org/bytes/0.1.0
    npm http GET https://registry.npmjs.org/qs/0.5.1
    npm http GET https://registry.npmjs.org/formidable/1.0.11
    npm http 304 https://registry.npmjs.org/bytes/0.1.0
    npm http 304 https://registry.npmjs.org/qs/0.5.1
    npm http 304 https://registry.npmjs.org/pause/0.0.1
    npm http 304 https://registry.npmjs.org/formidable/1.0.11
    ejs@0.8.3 node_modules\ejs
    
    express@3.1.0 node_modules\express
    ├── methods@0.0.1
    ├── buffer-crc32@0.1.1
    ├── fresh@0.1.0
    ├── range-parser@0.0.4
    ├── cookie-signature@0.0.1
    ├── cookie@0.0.5
    ├── commander@0.6.1
    ├── debug@0.7.2
    ├── mkdirp@0.3.3
    ├── send@0.1.0 (mime@1.2.6)
    └── connect@2.7.2 (pause@0.0.1, bytes@0.1.0, qs@0.5.1, formidable@1.0.11)
    
  3. WebMatrixを立ち上げ、メニュー→開く→サイトとしてのフォルダーをクリックする。そして先ほど作ったフォルダーを指定して開く。

  4. 「続行」をクリック。しばらくするとIIS Express Webサイトに変換され、使用できるようになる。