Запуск Parse Server на Ubuntu 14.04

Parse – это мобильный бэкэнд, сервисная платформа, с 2013 года принадлежащая компании Facebook. В январе 2016 года команда Parse объявила о том, что все размещённые на данной платформе сервисы будут отключены к январю 2017.

Чтобы помочь своим пользователям перейти с этой платформы на другую, Parse выпустил открытую версию бэкэнда под названием Parse Server, которую можно развернуть в среде Node.js и MongoDB.

Данное руководство поможет установить Parse Server на сервер Ubuntu 14.04. в первую очередь оно предназначено для разработчиков, которые хотят переместить свои приложения.

Примечание: Рекомендуется выполнять все инструкции вместе с официальным руководством Parse Server.

Требования

  • Чистый сервер Ubuntu 14.04;
  • Не-root пользователь с доступом к sudo (о создании такого пользователя можно прочитать здесь);
  • Предварительно установленная MongoDB (инструкции по установке можно найти здесь).

1: Установка Node.js и инструментов разработки

Откройте домашний каталог пользователя:

cd ~

На NodeSource можно найти apt-репозиторий пакетов Node.js для систем Debian и Ubuntu. Используйте его для установки Node.js. На NodeSource можно найти скрипт установки последнего стабильного релиза (на момент написания статьи это v5.5.0). Загрузите скрипт при помощи команды:

curl -sL https://deb.nodesource.com/setup_5.x -o nodesource_setup.sh

Чтобы просмотреть содержимое скрипта, откройте его в текстовом редакторе:

nano ./nodesource_setup.sh

После этого можно запустить nodesource_setup.sh. Флаг -E команды sudo сохраняет переменные среды и даёт скрипту доступ к ним.

sudo -E bash ./nodesource_setup.sh

После выполнения скрипта репозиторий NodeSource будет доступен в системе. Установить пакет nodejs можно при помощи apt-get. Кроме того, нужно установить метапакет build-essential и систему контроля версий Git.

sudo apt-get install -y nodejs build-essential git

2: Установка приложения Parse Server

Parse Server предназначен дл работы в связке с Express, популярным веб-фреймворком Node.js. Репозиторий 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. При этом будет запущена команда, указанная в параметре start файла package.json; в данном случае это node index.js:

npm start
> parse-server-example@1.0.0 start /home/8host/parse-server-example
> node index.js
DATABASE_URI not specified, falling back to localhost.
parse-server-example running on port 1337.

Чтобы остановить приложение, нажмите Ctrl-C.

Приложение Express, указанное в index.js, будет передавать HTTP-запросы модулю parse-server, который, в свою очередь, взаимодействует с MongoDB и запускает функции, указанные в ~/parse-server-example/cloud/main.js.

В таком случае конечной точкой вывода данных Parse Server API будет:

http://your_server_IP/parse

Откройте эту ссылку в другом терминале для тестирования.

Примечание: Сначала нужно войти на сервер, поскольку эти команды ссылаются на localhost вместо определённого IP.

Отправьте POST запрос с заголовком X-Parse-Application-Id, определяющим приложение, и добавьте в него следующие данные в формате JSON:

curl -X POST \
-H "X-Parse-Application-Id: myAppId" \
-H "Content-Type: application/json" \
-d '{"score":1337,"playerName":"8host","cheatMode":false}' \
http://localhost:1337/parse/classes/GameScore
{"objectId":"fu7t4oWLuW","createdAt":"2016-02-02T18:43:00.659Z"}

Отправленные данные хранятся в MongoDB; чтобы их извлечь, отправьте запрос GET при помощи команды curl.

curl -H "X-Parse-Application-Id: myAppId" http://localhost:1337/parse/classes/GameScore
{"results":[{"objectId":"GWuEydYCcd","score":1337,"playerName":"8host","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, чтобы остановить запущенное приложение Parse Server.

Такой скрипт можно настроить при помощи шести переменных среды:

Переменная Описание
DATABASE_URI URI для подключения к MongoDB (например, mongodb://localhost:27017/dev)
CLOUD_CODE_MAIN Путь в файлу, хранящему функции Parse Cloud Code (например, cloud/main.js)
APP_ID Идентификатор строки приложения (например, myAppId)
MASTER_KEY Секретный ключ, позволяющий обойти все механизмы безопасности приложения
PARSE_MOUNT Путь к Parse Server API (например, /parse)
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
parse-server-example running on port 9999.

Остановить приложение my_app.js можно при помощи клавиш Ctrl-C. Поведение приложения my_app.js похоже на приложение index.js, однако my_app.js прослушивает порт 9999, а Parse Server смонтирован в /myparseapp. Таким образом, ссылка будет иметь следующий вид:

http://IP_сервера:9999/myparseapp

Чтобы проверить ссылку, используйте curl:

curl -H "X-Parse-Application-Id: myOtherAppId" http://localhost:9999/myparseapp/classes/GameScore`

Заключение

Теперь у вас есть базовые навыки работы с приложениями Node.js, такими как Parse Server, в среде Ubuntu. Перемещение приложения с платформы Parse требует изменений кода и тщательного планирования инфраструктуры. Подробнее об этом можно прочитать в официальном руководстве Parse Server.

Tags: , , , ,

Добавить комментарий