Herokuにサインアップ

Node.jsのデプロイ先としてHerokuを使用してみる。

参考にしたのは、ここ。

http://gihyo.jp/dev/serial/01/nodejs/0005

 

基本的には、上記記事のとおり、

https://api.heroku.com/

からサインアップを選択して、いわれるがままに進めばOKなんだけど、

少し詰まったところを書き留めておく。

 

・サインアップ後にインストールするToolbeltの対象OSにCentOSが明示されていない。

 メニューからは、Max OS X、Windows、Debian/Ubuntu、Otherが選択できるが、

 CentOSの場合は、OtherでOKっぽい。

 

・Toolbeltインストール後、PATHは自分で通す必要がある。

 CentOSの場合、デフォルトでは、/usr/local/heroku/binにインストールされるので、

 シェルのprofileにPATH=/usr/local/heroku/bin:$PATHを追記すればOK

 

・herokuコマンド実行には、rubyが必要。

 yum install rubyでインストールは簡単にできるけど、バージョンが1.8.xなので、

 最新版を1.9.3を導入してみる。

 既にrubyがインストールされている場合は、一旦アンインストール。

# yum remove ruby

 

 ついで、ruby最新版のソースコードをダウンロードしてくる。

#wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz

※2012/10/18時点の最新安定版

 

・解凍してコンパイルしてインストール

# tar zxvf ruby-1.9.3-p286.tar.gz

# cd ruby-1.9.3-p286

# ./configure --prefix=/usr

# make

# make install

 

rubyのバージョンを確認

# ruby -v

-> ruby 1.9.3p286と表示されるはず

 

・herokuが実行できるか確認

# heroku

 

 

Node.js~express.jsの導入

Node.js~express.jsを導入したときの作業メモ。

 

参考にしたのは、ここ。

http://gihyo.jp/dev/serial/01/nodejs/0001

 

OSは、CentOS 6.3 (64bit)。

 

最初にNode.js本体をインストールする。

Node.jsのソースコードを取得して、

# wget http://nodejs.org/dist/v0.8.12/node-v0.8.12.tar.gz

( 2012/10/16時点の最新版)

 

解凍&インストール。 

# tar zxvf node-v0.8.12.tar.gz

# cd node-v0.8.12

# ./configure

# make

# su (rootユーザになる)

# make install

 

次にforeverをインストールする。

これは、Node.jsプロセスが落ちても自動で再起動してくれるモジュールみたい。

インストールには、npmを使用。

# npm install -g forever

-g オプションは、グローバルインストールになるので実行にはroot権限が必要。

 

foreverは、

# forever start foge.js

みたいな感じで起動すると、foge.jsが例外等で落ちても勝手に再起動してくれる。

ちなみに停止は、

# forver stop foge.js

 

最後に、express.jsをインストール。

これは、Node.js用のWebアプリケーションフレームワーク

これもグローバルインストール

# npm install -g express

 

導入はこんな感じ。npmはwget+rpmライクで超楽ちん。

 

 

RedHat Enterprise Linux ES4 にGitをインストール

今更ながら、RedHat Enterprise Linux ES4(32bit)にGitを導入してみた。

YumやSubversionやらが導入されていない状況を想定している。

 

yumがないのでyumをインストール

 

/etc/yum.confを作成

# touch /etc/yum.conf

 

デフォルトのyumリポジトリーにはgitがないのでリポジトリにEPELを追加

 

/etc/yum.repos.d/epel.repoを編集

[epel]

enabled=0

 

SQLiteインストール

 

python系のモジュールをインストール

 

Subversionインストール(既にインストール済みの場合はスキップ)

# wget ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el4/en/i386/extras/RPMS/subversion-1.4.6-0.2.el4.rfx.i386.rpm

# rpm -ivh subversion-1.4.6-0.2.el4.rfx.i386.rpm

# svn --version --quiet (バージョンが1.4.6になっていることを確認)

 

PerlSubversionモジュールをインストール

※バージョンが1.4.6-0.2となっているが、これはインストールされているSubversionのバージョンに合わせる。

 

Gitをインストール

# yum -y --enablerepo=epel install git

 

Gitのバージョンを確認

# git --version

 

Gitで開発環境構築(3)

Gitにソース等を登録して開発環境を構築する。

 (2012/10/15: bareにすると共有リポジトリ側でコミットできないので、ローカル側からPushするように変更)

 

 

クライアント(Linux

ローカルリポジトリ作成

 ・適当な場所にローカルリポジトリを作成する。

# git init

 

ソースコード展開

 ・ソースコードを展開してgit addおよびgit commitでローカルリポジトリにチェックイン

 # git add .

# git commit -a -m "message"

 

共有リポジトリの情報を登録

 ・共有リポジトリの情報をリモートとして登録

# git remote add origin git://<共有リポジトリのパス>

 

ホスト(Windows7

共有リポジトリの作成

  ・ベースフォルダ配下に管理するソースを含む共有リポジトリフォルダを作成する

  例:project_foge.git

 

共有リポジトリ初期化

 ・ターミナル起動

  共有リポジトリフォルダを右クリック->Git Bush Here

 

 ・ターミナルからコマンド入力

# git init --bare --shared=true

 

クライアント(Linux

リモートリポジトリにプッシュ

  ・ローカルリポジトリの変更内容をリモートリポジトリにプッシュしてマージ

# git push origin master

 

共有リポジトリの変更をローカルに反映させる場合

 ・共有リポジトリからPullしてマージする。

# git pull origin master

 

 以降、他ホストなどで作業したい場合は、Cloneを作成する。

# git clone git://<共有リポジトリのパス>

 

Gitで開発環境構築(2)

ローカル側の環境構築。

CentOS 5.6 (64bit)にGitをインストールする。

 

yumリポジトリーに設定を追加する

 ・EPELのrpmファイルをダウンロードする。

  http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm

 ・rpmをインストールする。

#rpm -ivh epel-release-5-4.noarch.rpm

 ・/etc/yum.repos.d/epel.repoの設定を変更

[epel]

enabled=0

 

gitをインストールする

 ・ターミナルからコマンド入力

yum -y --enablerepo=epel install git

 ・バージョンの確認

git --version

 

Gitで開発環境構築(1)

ホストOSのWindows7VMWareで仮想化したLinux環境とでGitを使用してソースコードを共有する環境を構築してみる。

方針は、

・共有リポジトリはWindows上に構築

・WindowsではGitは、msysGitを使用

な感じで、構成イメージは、以下のとおり。

f:id:kisk0419:20121011115358p:plain

 Linux環境が複数あるのは、それぞれ異なるバージョンでアプリの動作確認を行いたいから。

 

まずは、WIndows環境に共有リポジトリを作成してみる。

 

msysGitインストール

 ・モジュールを下記アドレスからその時点の最新版をダウンロードする。

  http://code.google.com/p/msysgit/

  (2012/10/11時点では、Git-1.7.11-preview20120710.exe

 

  ・インストーラーを起動してインストール。

   基本はデフォルトで変更した箇所は以下のとおり。

   f:id:kisk0419:20121011105356p:plain

   右クリックからシェルを起動したいのでチェック

   

   f:id:kisk0419:20121011105400p:plain

   WindowsアプリとLinuxアプリの両方を管理したいので、改行コードの変換はナシ

 

共有リポジトリ作成

 ・リポジトリのベースフォルダを作成する

  例:F:\Git\repos

 

 ・ベースフォルダ配下にテスト用の共有リポジトリフォルダを作成する

  例:sample.git

 

共有リポジトリ初期化

 ・ターミナル起動

  共有リポジトリフォルダを右クリック->Git Bush Here

 

 ・ターミナルからコマンド入力

# git init --bare

 

 ・sample.gitフォルダ配下に色々作成されるのを確認する。

 

外部から接続するためにデーモン起動設定

 ・batファイルなどで以下のコマンドがスタートアップ時に実行されるようにする。

# git daemon --verbose --export-all --enable=receive-pack --base-path=D:\Git\repos

  (パスの部分は環境にあわせる)

 

接続確認

 ・ターミナルからコマンド入力

# git ls-remote git://サーバ名/sample.git

  Request upload-pack for <リポジトリのパス>がでればOK

 

Web関連単語の備忘録

誤解を恐れない備忘録。

 

Node.js

 サーバサイドのJavaScript。シングルスレッド、ノンブロッキングI/Oで実装されており、I/Oバウンドな用途に向いていると思われ。逆にCPUバウンドな用途は苦手。

 

 IndexedDB

 JavaScriptを使用してアクセスできるクライアントサイドのKVS。

 トランザクション、インデックスも使用でき、ブラウザで実装される。

 

Squid

 プロキシサーバやWebキャッシュサーバで使用されるフリーソフト。

 HTTP、FTPといった多様なプロトコルに対応。

 

WebSocket(NodeならSocket.IO)

 ブラウザーWebサーバ間で使用することを想定した双方向通信用の通信規格

 

PushState(pjax)

 ブラウザの履歴を変更する仕様。

 ajaxと組み合わせる(pjaxはajax+pushStateのjQueryプラグイン)ことでajaxコンテンツでも「戻る」、「進む」ボタンが有効になる。

 

WebStorage(localStorage,IndexedDB)

 ブラウザで実装されたクライアントサイドDB(KVS)。

 sessionStorage ... ウィンドウ、タブの中でデータを共有

 localStorage ... オリジン(ドメイン+ポート番号)内でデータを共有

 

WebWorker

 JavaScript用マルチスレッドライブラリ(HTML5 API

 

backbone.js(CSMVC)

 クライアントサイドMVCフレームワーク

 http://documentcloud.github.com/backbone/

 http://d.hatena.ne.jp/kazuk_i/20110407/1302130947

 

underscore.js(utility)

 JavaScriptの配列や連想配列系のライブラリ。

 backbone.jsが依存。