序章
Geddyは、組み込みの認証モジュール、passportjs、および socket.io 統合を備えた、RubyonRails手法に基づくフルスタックのオープンソースMVCフレームワークです。 Geddyでリアルタイムの安全なアプリケーションを作成するには、いくつかのコマンドしか必要ありません。 これは、コマンドラインインターフェイスを介して機能する非常に多くのジェネレータコマンドのセットを提供し、モデル、コントローラ、ビュー、さらには認証やsocket.io統合の作成などの重要なタスクのほとんどを自動化します。 Geddyでは、メインのアプリケーションロジックにのみ焦点を当て、残りはgeddyに任せる必要があります。
また、EJSがデフォルトである、幅広いテンプレートエンジンをサポートします。 新しいプロジェクトまたはリソースを作成するときに、プロジェクトのテンプレートエンジンを指定できます。
Geddyは、マルチコアプロセッサを利用するNodeの組み込みクラスタモジュールを使用します。 したがって、node.jsアプリケーションはもはやシングルスレッドアプリケーションではありませんが、複数のコアを自動的に活用します。
インストール
nodejsとnpmをインストールするための前提条件:
sudo apt-get install python-software-properties python g++ make
Ubuntu 12.10以降を使用している場合は、次のことも行う必要があります。
sudo apt-get install software-properties-common
Joyent(Node.jsのメンテナ)が推奨するPPAリポジトリを追加します。
sudo add-apt-repository ppa:chris-lea/node.js
システムパッケージリストを更新します。
sudo apt-get update
npmを含むNode.jsをインストールします。
sudo apt-get install nodejs
jakeと一緒にgeddyをグローバルにインストールする
sudo npm install -g geddy
ここでは、geddyジェネレーターを使用できるように、geddyをグローバルにインストールします。
ゲディ構造を理解する
MVCの原則に基づいている各geddyアプリには、モデル、コントローラー、ビューごとに個別のディレクトリとファイルがあります。
geddyアプリの典型的な構造は次のようなものです
ゲディジェネレーター
Geddyジェネレーターは、開発プロセスを容易にするために使用できるコマンドのリストです。
Geddy genコマンド-新しいアプリ、モデル、コントローラーを生成するために使用され、その他のさまざまな日常の開発作業を行います。
geddy gen app your_app
これにより、作業ディレクトリのyour_appという名前のディレクトリにyour_appという名前のgeddyアプリが作成されます。
geddy gen resource profile name:string
これにより、「プロファイル」と呼ばれるリソース(モデル+コントローラー+ルート)が作成され、モデルのプロパティ名とタイプは文字列になります。 タイプを指定しない場合は、自動的に文字列タイプに設定されます。 ここで属性について言及するか、後でapp / models/profile.jsにあるモデルファイルに手動で入力することができます。
geddy gen secret
このコマンドは、既存のシークレットを削除し、アプリケーションの新しいシークレットを作成します。 セッションシークレットはハッシュの計算に使用されるため、シークレットがないと、セッションへのアクセスが拒否され、セッションハイジャックなどからユーザーを保護します。 このコマンドは引数を取りません
geddy gen controller
このコマンドは、インデックスビューとコントローラにアクセスするためのルートとともにコントローラを作成します
geddy gen model notes title:default content:string
このコマンドは、titleとcontentという2つの文字列プロパティを持つモデルを生成します。 ここでは、モデルを表示するときにデフォルトのプロパティが使用されます。 整数型をデフォルトのプロパティにしたい場合は、title:int:defaultを実行できます。 geddyでは、IDプロパティが常に作成され、何も言及されていない場合はデフォルトのプロパティになります。 このIDは、作成された対応するmongodbドキュメントと一致します。
geddy gen scaffold personal_detail name:string
このコマンドは、personal_detailと呼ばれるリソースに加えて、ブラウザー自体から個々のエントリを追加、表示、および削除できるpersonal_detailのモックアップビューをスキャフォールドします。
スキャフォールディングの場合、作成するビューに使用するテンプレートエンジンを指定するオプションもあります。スウィッグ、ジェイド、ハンドル、またはヒゲのテンプレートエンジンを使用できますが、言及されていない場合はEJSが使用されます。 例えば:
geddy gen scaffold personal_detail --jade
Facebook認証が組み込まれたアプリの作成
サンプルアプリケーションを足場にします。
geddy gen app Edupi
ディレクトリに移動します。
cd Edupi
passport.jsベースの認証をアプリケーションに足場します。
注:古いアプリケーションに認証をスキャフォールドしないでください。コードが上書きされる可能性があります。
geddy auth
developers.facebook.com にアクセスし、以下の手順に従ってアプリケーションのシークレットキーを取得します。
アプリをクリックします
[新しいアプリの作成]をクリックします(登録する必要があります)
アプリ名とその他の関連情報を入力し、[続行]をクリックします。
FacebookログインのあるWebサイトをクリックし、サーバーのURLまたはIPを入力します。 ローカルサーバーでアプリケーションをテストする場合は、 http://192.168.1.2:80/ のように仮想サーバーのIPを入力するか、 http:// localhost:4000/と入力できます。 別の画面が表示された場合は、編集アプリをクリックしてこの画面にアクセスしてください。
アプリIDとアプリシークレットをメモし、[変更を保存]をクリックします。
注:アプリIDとアプリシークレットを他人と共有しないでください。 混乱を最小限に抑えるために行いました。
次に、サーバーのディレクトリに戻り、Edupiフォルダーでconfig/secrets.jsonファイルを開きます。
{
"passport": {
"successRedirect": "/",
"failureRedirect": "/login",
"twitter": {
"consumerKey": "XXXXXX",
"consumerSecret": "XXXXXX"
},
"facebook": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
},
"yammer": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
}
}
}
ここで、successRedirectは、承認が成功した場合にユーザーが返されるパスです。 failure Redirectは、認証が失敗した場合にユーザーがリダイレクトされるURLです。 相対リンクのみを渡すことが許可されていることに注意してください。 たとえば、「successRedirect」を設定すると、「 http:// localhost:4000 / login/」はエラーを返します。 ルートを変更する場合は、両方のURLを変更できます。
以下に示すように、クライアントIDとしてAppIdを入力し、クライアントシークレットとしてAppSecretを入力します。
{
"passport": {
"successRedirect": "/",
"failureRedirect": "/login",
"twitter": {
"consumerKey": "XXXXXX",
"consumerSecret": "XXXXXX"
},
"facebook": {
"clientID": "670657392948407",
"clientSecret": "1beefd26e84f7e7adb4eb8a371c41af8"
},
"yammer": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
}
}
}
Twitterとyammerのアプリケーション設定を取得し、上記のように入力して機能させることができます。 見つけにくい場合は検索できます。
次に、ファイルを保存し、を使用してサーバーを実行します
geddy app
そして出来上がり、これであなたはあなたのgeddyアプリケーションに組み込まれたFacebook統合を持っています。 認証時に、userId(この場合はfacebookであるユーザー広告authtypeのmongodb ID)である2つのアイテムがユーザーのセッションに追加されます。
コントローラーでこれらの変数をチェックして、仮想サーバーで実行される前に要求を認証できます。
GeddyでHTTPSに移行
Geddyは、SSL/TLSまたはSPDYを介したHTTPSをサポートしています。 有効にするには、証明書の詳細を構成ファイルに追加するだけです。 キーと証明書のオプションが必要ですが、httpsとspdyモジュールで使用できる他のオプションはオプションです。
SSL / TLSを追加するには、構成ファイルに次の行を追加するだけです。
// ...
, ssl: {
key: 'config/key.pem',
cert: 'config/cert.pem'
}
// ...
SPDYのサポートを追加するには、次を追加します。
// ...
, spdy: {
key: 'config/key.pem',
cert: 'config/cert.pem'
}
// ...
ここでは、key.pemとcert.pemがconfigフォルダーに配置されていると想定しています。 そして残りはゲディによって処理されます。
本番モードに入る
次の内容でapp.jsという名前のファイルを作成します。
var geddy = require('geddy');
geddy.start({
environment: 'production'
});
次に、Foreverを使用してサーバーを実行します。これにより、アプリがダウンするのを防ぐことができます。
永久にインストールするには
sudo npm install forever -g
次に、アプリを起動するには、ターミナルでapp.jsを含むディレクトリに移動して実行します
forver start app.js
これで、クラッシュした場合にアプリが自動的に起動します。