Ubuntu14.04でParseServerを実行する方法
序章
Parseは、2013年からFacebookが所有するサービスプラットフォームとしてのモバイルバックエンドです。 2016年1月、Parse は、ホストされているサービスが2017年1月にシャットダウンすることを発表しました。
ユーザーがサービスから移行できるように、Parseは Parse Server と呼ばれるバックエンドのオープンソースバージョンをリリースしました。これは、Node.jsとMongoDBを実行している環境にデプロイできます。
このガイドは、DigitalOceanDropletなどのUbuntu14.04システムにParseServerをインストールするための詳細な手順で公式ドキュメントを補足します。 これは、何よりもまず、アプリケーションの移行を検討しているParse開発者の出発点として意図されており、公式の Parse ServerGuideと併せて読む必要があります。
前提条件
このガイドは、管理タスク用のsudo
権限を持つroot以外のユーザーで構成されたクリーンなUbuntu14.04システムを使用していることを前提としています。 新しいUbuntu14.04サーバーチェックリストシリーズのガイドを確認することをお勧めします。
さらに、システムにはMongoDBの実行中のインスタンスが必要です。 Ubuntu14.04にMongoDBをインストールする方法から始めることができます。 MongoDBは、作成時にこのスクリプトをユーザーデータに追加することで、新しいドロップレットに自動的にインストールすることもできます。 ドロップレットユーザーデータの詳細については、このチュートリアルをご覧ください。
システムがsudo
ユーザーとMongoDBで構成されたら、このガイドに戻って続行します。
ステップ1—Node.jsと開発ツールをインストールします
現在の作業パスをsudo
ユーザーのホームディレクトリに変更することから始めます。
- cd ~
NodeSource は、DebianおよびUbuntuNode.jsパッケージ用のAptリポジトリを提供します。 これを使用してNode.jsをインストールします。 NodeSourceは、最新の安定版リリース(この記事の執筆時点ではv5.5.0)のインストールスクリプトを提供しています。これは、インストール手順にあります。 curl
を使用してスクリプトをダウンロードします。
- curl -sL https://deb.nodesource.com/setup_5.x -o nodesource_setup.sh
このスクリプトの内容を確認するには、nano
、または選択したテキストエディタでスクリプトを開きます。
- nano ./nodesource_setup.sh
次に、nodesource_setup.sh
を実行します。 sudo
の-E
オプションは、スクリプトからアクセスできるように、ユーザーの環境変数を保持するように指示します。
- sudo -E bash ./nodesource_setup.sh
スクリプトが終了すると、NodeSourceリポジトリがシステムで利用できるようになります。 apt-get
を使用してnodejs
パッケージをインストールできます。 また、build-essential
メタパッケージをインストールします。これは、後で役立つ可能性のあるさまざまな開発ツールと、GitHubからプロジェクトを取得するためのGitバージョン管理システムを提供します。
- sudo apt-get install -y nodejs build-essential git
ステップ2—サンプルのParseServerアプリをインストールします
Parse Serverは、Node.jsの一般的なWebアプリケーションフレームワークである Express と組み合わせて使用するように設計されており、定義されたAPIに準拠するミドルウェアコンポーネントを特定のパスにマウントできます。 parse-server-example リポジトリには、このパターンのスタブアウトされた実装例が含まれています。
git
を使用してリポジトリを取得します。
- git clone https://github.com/ParsePlatform/parse-server-example.git
クローンを作成したparse-server-example
ディレクトリを入力します。
- cd ~/parse-server-example
npm
を使用して、parse-server
を含む依存関係を現在のディレクトリにインストールします。
- npm install
npm
は、parse-server
に必要なすべてのモジュールをフェッチし、それらを~/parse-server-example/node_modules
に格納します。
ステップ3—サンプルアプリケーションをテストする
npm
を使用してサービスを開始します。 これにより、package.json
のstart
プロパティで定義されたコマンドが実行されます。 この場合、node index.js
を実行します。
- npm start
Output> [email protected] start /home/sammy/parse-server-example
> node index.js
DATABASE_URI not specified, falling back to localhost.
parse-server-example running on port 1337.
Ctrl-C を押すと、実行中のアプリケーションをいつでも終了できます。
index.js
で定義されたExpressアプリは、HTTPリクエストをparse-server
モジュールに渡します。このモジュールは、MongoDBインスタンスと通信し、~/parse-server-example/cloud/main.js
で定義された関数を呼び出します。
この場合、ParseServerAPI呼び出しのエンドポイントはデフォルトで次のようになります。
http://your_server_IP/parse
別の端末では、curl
を使用してこのエンドポイントをテストできます。 これらのコマンドは特定のIPアドレスではなくlocalhost
を参照するため、最初にサーバーにログインしていることを確認してください。
POST
リクエストとX-Parse-Application-Id
ヘッダーを送信してレコードを作成し、JSONとしてフォーマットされたデータとともにアプリケーションを識別します。
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-d '{"score":1337,"playerName":"Sammy","cheatMode":false}' \
http://localhost:1337/parse/classes/GameScore
Output{"objectId":"fu7t4oWLuW","createdAt":"2016-02-02T18:43:00.659Z"}
送信したデータはMongoDBに保存され、curl
を使用してGET
リクエストを送信することで取得できます。
- curl -H "X-Parse-Application-Id: myAppId" http://localhost:1337/parse/classes/GameScore
Output{"results":[{"objectId":"GWuEydYCcd","score":1337,"playerName":"Sammy","cheatMode":false,"updatedAt":"2016-02-02T04:04:29.497Z","createdAt":"2016-02-02T04:04:29.497Z"}]}
~/parse-server-example/cloud/main.js
で定義された関数を実行します。
curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-d '{}' \
http://localhost:1337/parse/functions/hello
Output{"result":"Hi"}
ステップ4—サンプルアプリケーションを構成する
元の端末で、 Ctrl-C を押して、実行中のバージョンのParseServerアプリケーションを停止します。
記述されているように、サンプルスクリプトは、6つの環境変数を使用して構成できます。
変数 | 説明 |
---|---|
DATABASE_URI |
mongodb://localhost:27017/dev のようなMongoDB接続URI |
CLOUD_CODE_MAIN |
cloud/main.js のようなParseCloudCode関数を含むファイルへのパス |
APP_ID |
myAppId などのアプリの文字列識別子 |
MASTER_KEY |
アプリのすべてのセキュリティメカニズムをバイパスできる秘密のマスターキー |
PARSE_MOUNT |
/parse のように、ParseServerAPIが提供されるパス。 |
PORT |
1337 のように、アプリがリッスンする必要のあるポート |
export
コマンドを使用してスクリプトを実行する前に、これらの値のいずれかを設定できます。 例えば:
- export APP_ID=fooApp
index.js
の内容を一読する価値はありますが、何が起こっているのかをより明確に把握するために、例の独自の短いバージョンを作成することもできます。 エディターで新しいスクリプトを開きます。
- nano my_app.js
そして、必要に応じて強調表示された値を変更して、以下を貼り付けます。
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
// Configure the Parse API
var api = new ParseServer({
databaseURI: 'mongodb://localhost:27017/dev',
cloud: __dirname + '/cloud/main.js',
appId: 'myOtherAppId',
masterKey: 'myMasterKey'
});
var app = express();
// Serve the Parse API on the /parse URL prefix
app.use('/myparseapp', api);
// Listen for connections on port 1337
var port = 9999;
app.listen(port, function() {
console.log('parse-server-example running on port ' + port + '.');
});
ファイルを終了して保存し、Node.jsで実行します。
- node my_app.js
Outputparse-server-example running on port 9999.
ここでも、いつでも Ctrl-C を押して、my_app.js
を停止できます。 上記のように、サンプルmy_app.js
は、提供されたindex.js
とほぼ同じように動作しますが、ポート9999でリッスンし、解析サーバーが/myparseapp
にマウントされている点が異なります。エンドポイントURLは次のようになります。
http:// your_server_IP :9999 / myparseapp
そしてそれは次のようにcurl
でテストすることができます:
- curl -H "X-Parse-Application-Id: myOtherAppId" http://localhost:9999/myparseapp/classes/GameScore`
結論
これで、Ubuntu環境でParseServerのようなNode.jsアプリケーションを実行するための基本を理解する必要があります。 Parseからアプリを完全に移行することは、コードの変更とインフラストラクチャの慎重な計画を必要とする、より複雑な作業になる可能性があります。
このプロセスの詳細については、このシリーズの2番目のガイド Ubuntu14.04で解析アプリを解析サーバーに移行する方法を参照してください。 また、公式の解析サーバーガイド、特に既存の解析アプリの移行に関するセクションも参照してください。