nodejsで作ったWebアプリを80番ポートで動作させたいけど、Apacheが使っているし、Apacheを止めてルートで80番ポートを割り当てるのもセキュリティ的にいやなんでApacheを使ってポート8080を80にリバースプロキシさせてみました。
Apacheの設定はこんな感じ。
続きを読む Nodejsでポート80で動かす
nodejsで作ったWebアプリを80番ポートで動作させたいけど、Apacheが使っているし、Apacheを止めてルートで80番ポートを割り当てるのもセキュリティ的にいやなんでApacheを使ってポート8080を80にリバースプロキシさせてみました。
Apacheの設定はこんな感じ。
続きを読む Nodejsでポート80で動かす
ubuntuにmeteor.jsを入れてみました。
【環境】
Ubuntu12.04
meteor.jsはjavascritptによるWebアプリのフレームワーク。
クライアントサイドJS(ブラウザで動くJS)やサーバーサイドJS(Node.jsとか)ではなく、
その両方で動く(Isomorphicな)フレームワークです。
まずは、インストール用のスクリプトを叩く
$ wget install.meteor.com
$ sudo sh index.html
これでインストールは完了。パッケージはdebパッケージでインストールしてくれる。
インストールされた内容は以下でチェックできる。
$ dpkg –listfiles meteor
ここまでで環境構築完了。
次にに、サンプルアプリケーションを作ってみる。
/usr/lib/meteor/examples/ 配下にサンプルがインストールされてる。
$ ls
todos wordplay leaderbord
ここではtodos 展開する。適当なディレクトリで以下のコマンドを叩く
$ meteor create –example todos
todos: created.
To run your new app:
cd todos
meteor
これで、叩いた場所に todosディレクトリが作られる。
それでは実行。
$ cd todos
$ meteor
[[[[[ ~/todos ]]]]]
Running on: http://localhost:3000/
///////////////////////////////////////////////
///////////////////////////////////////////////
meteor is out of date. Please run;
meteor update
///////////////////////////////////////////////
///////////////////////////////////////////////
これで、http://localhost:3000 にアクセスするとtodo管理アプリできている。
次に実際に、プロジェクトを作成してみる
$ meteor create firstApp
firstApp: created.
To run your new app:
cd firstApp
meteor
$ ls
firstApp.css firstApp.html firstApp.js
とりあえずは何か作ってみよう。
初めてNodeを使ったときは、どばーっと1ファイルに書いちゃって
ものすごく可読性が良くないソースを書いてしまった。
nodeで独自モジュールを作成できるので、その方法についてメモ。nodejsでの「モジュール」というのはオブジェクト指向言語でいう「クラス」みたい位置づけです。
javascriptなので、中身はライブラリみたいな関数オブジェクトの集合体になります。
続きを読む nodejsでモジュール(クラス)作成
前にnode-inspectorを使ってのデバッグ方法を書いたけど、node-inspectorをバッググランドで起動させたり、デバック用のポート(例:http://localhost:8080/debug?port=5858)にアクセスするとか面倒だったのNode.jsのデバッグオプションを使ってgdbライクにデバッグしてみました。
※サンプルはお絵描きアプリです。
続きを読む Node.jsをデバッグオプションでデバッグしてみる
dotcloudがバージョンアップしてから、今までのDeploy出来てたものが出来なくなった。。。
port8080のwarningがでてるし、吐き出されたURLにアクセスすると、502。。
同じ現象で解決している人がいたので参考にしながらやったらうまくいったのでメモを。
まずログの確認。
$ dotcloud logs アプリケーション名.www
# tail -F /var/log/supervisor/*.log
==> /var/log/supervisor/node-stderr—supervisor-BkNQQ9.log <==
at Function._resolveFilename (module.js:317:11)
at Function._load (module.js:262:25)
at require (module.js:346:19)
at Object.
at Module._compile (module.js:402:26)
at Object..js (module.js:408:10)
at Module.load (module.js:334:31)
at Function._load (module.js:293:12)
at require (module.js:346:19)
at Object.compress (/home/dotcloud/rsync-xxxxxx/フォルダ名/node_modules/express/node_modules/connect/lib/connect.js:89:14)
==> /var/log/supervisor/node-stdout—supervisor-l9fdKH.log <==
express/node_modules/connect/lib/middleware/compress.jsとexpress/node_modules/connect/lib/connect.jsで何かやらかしてるらしい。。原因はローカルとdotCloudでconnectのバージョンが違うことらしい。
expressを使用してBASIC認証を試してみたよ。
やり方は、expressのbasicAuthメソッドをcreateServer時に叩くだけ。
これで、サーバはクライアントに401を返すので、ブラウザからユーザ名とパスワードを入力すると
authorizeメソッドが呼ばれます。
var app = express.createServer(express.basicAuth(authorize)); // Basic Auth function authorize(username, password) { return 'username' === username & 'password' === password; }
3行目以降を次のように変更すれば、パスを分けてBasic認証することが可能っす。
app.all('/hoge/*', express.basicAuth(function(user, password) { return user === 'username' && password === 'password'; }));
■■■■■■■■ 追記(2012/10/18) ■■■■■■■■
expressのバージョンがあがって使い方が少し変わりました。
app.configure(function(){ app.use(express.basicAuth(function(user, pass){ return 'username' == user & 'password' == pass; })); app.use(app.router); // これより前にBasic認証を書く });
dotCloud上でNodejsを使ってみたときのメモ。
まずはアプリケーションの作成(nodechatがアプリ名)
$ dotcloud create nodechat
ビルドファイル(dotcloud.yml)の作成
#dotcloud.yml www: type: nodejs approot: chat
packge.jsonはこんな感じ
#packge.json { "name": "nodechat", "version": "0.0.0", "dependencies": { "express": "*", "ejs": "*", "socket.io": "*" }, "devDependencies": {} }
続いて、supervisord.confをこんな感じに設定する
#supervisord.conf [program:node] command = node server.js directory = /home/dotcloud/current
最後に、グローバルにインストルしたnpmのモジュールを紐つけます。
$ npm link express ejs socket.io
dotcloudを試してみました。
dotcludはPHPやPerl、Ruby、Java、Python、Node.jsなど複数の言語と、MySQL、PostgreSQL、MongoDB、CouchDB、Redisなど複数のデータベースを開発者が
自由に組み合わせてプラットフォームを構成できて、クラウド上のPaaSとして利用できるみたい。
料金はどのプログラミング言語とデータベースを選択しても同一で、2サービスまでは無料で利用可能とのこと。
これは試すしかないと思ってとりあえず、チュートリアルに従ってやったときの手順をまとめておきます。
まずはdotcloudへの登録
dotcloudへアクセスしてのFreeの「Sing up now」を選択。
いろいろ登録
次にクライアントCLIをインストール
書いてあるけど念のためここにも書いておく
【Linux】
$ sudo easy_install pip && sudo pip install dotcloud
$ dotcloud
Enter your api key (You can find it at http://www.dotcloud.com/account/settings):APIキーを入力
【Mac】
$ sudo easy_install pip && sudo pip install dotcloud
$ dotcloud
Enter your api key (You can find it at http://www.dotcloud.com/account/settings):APIキーを入力
これでクライアントCLIツールのインストールが完了
次は実際にphpで書いてみよう。
続きを読む php on dotcloud
Nodejsのインストールについて書かれている記事はたくさんあるけど、Nodejsやパッケージのアンインストールあまり記事か無いので書いておきます。
■ Nodejsのアンインストール
$ cd node-v0.1.103
$ sudo make uninstall
■ npmのアンインストール
$ sudo npm uninstall npm -g
■ パッケージ(グローバルオプション付き)のアンインストール
$ npm uninstall -g “パッケージ名”
グローバルオプション(-g)を指定ないでインストールをしたパッケージは
$ npm uninstall “パッケージ名”
これでインストールしたものは削除完了なはずです。