В процессе очередного подхода в обучении разработке для Android Studio я наткнулся на Parse Server. Решил поднять его на своем VDS, поднял, использую. Эта статья просто шпаргалка по установке Parse Server  на собственный VDS с Debian 8 Jessie x64.

Что такое Parse Server

Parse Server сейчас (раньше это был готовый сервис для бэкэнда приложений, и в этом качестве все это выглядело куда интереснее) — это бесплатная софтовая прокладка (backend) для соединения внешних приложений (Android, iOS и любых других) с noSQL БД MongoDB для хранения данных используемых приложением.

Для обеспечения доступа к серверу Parse Server поднимает HTTP сервер на фреймворке ExpressJS для Node.js. Кроме обеспечения доступа к MongoDB Parse Server  умеет делать WebHooks, то есть можно создавать свои endpoints для выполнения скриптов на JS выполняемых в Node.JS. А также может делать задачи по расписанию — Jobs, которые также пишутся на JavaScript для Node.JS.

Панель управления для Parse Server — Parse Dashboard

parse server dashboard

У Parse Server есть довольно симпатичная и удобная Parse Dashboard, в которой можно админить как монгу, так и вебхуки с кронджобами. В пределах одного инстанса Parse Server и одного инстанса Parse Dashboars можно создавать backends для нескольких приложений (то есть не нужно под каждое приложение поднимать свой Parse Server).

Впечатления вебразработчика о Parse Server

С позиции вебразработчика все это нагромождение технологий выглядит сомнительно. На мой взгляд просто для доступа к базе было бы достаточно в качестве вебсервера nginx для ограничений доступа и самой базы хоть MySQL хоть MongoDB, но возможно это просто дело привычки.

parse-server-aws

 

Но, как бы то ни было, сложилось впечатление что Parse Server на рынке мобильных приложений уже сложился. AWS предлагает его установку из коробки, DigitalOcean вроде бы тоже (но это не точно), но мне было интересно развернуть его на своем VDS от RuWEB (который мне стоит 130 рублей в месяц и соотв. значительно дешевле чем любое облако).

Установка Parse Server на VDS с Debian 8 Jessie

Для установки Parse Server нам будут нужны MongoDB и NodeJS с npm. Я не использую эти технологии в основной работе, знаком с ними поверхностно,  и не профессиональный админ, поэтому схема установки наверняка может быть более эффективной, однако описанная схема вполне рабочая. Поскакали.

Установка MongoDB на Debian 8 Jessie x64

Для Parse Server нам нужна MongoDB > 2.6 , оптимальная на момент написания статьи это 3.2 (самая свежая 4.0). Нюанс о который я убил больше часа в том что коммьюнити версия монги для 32 битных версий Debian не ставится из репозитория, только из архивов ручками. А из репозитория Debian ставится версия 2.4 на которую не ставится Parse Server !!!! Поэтому для Parse Server лучше заказывать VDS с 64 разрядной операционкой. В этом случае схема установки проста и описана на https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-debian/


Если получаем ошибку


То, скорее всего, это как раз ситуация когда у вас 32 разрядная ОС ( можно уточнить командой arch  , а версию ОС можно уточнить cat /etc/issue  ). В этом случае можно поставить MongoDB командой


Однако в этом случае она будет установлена из репо Debian, и в моем случае ставилась версия 2.4, что мало для Parse Server. Кстати для удаления не нужной версии монги нужно


Монгу коммьюнити (mongodb-org) для 32 разрядной версии Debian можно поставить только из tar ручками. Я этого делать не стал, а взял под Parse Server 64 битный Debian.

Затем запускаем  sudo service mongod start  проверяем версию mongod --version . С базой все.

Установка NodeJS

Здесь все гораздо проще. Стабильная версия на момент написания статьи 10. Полезная статья https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-debian-9


Если версии вывелись, то все готово и переходим к установке Parse Server.

Установка Parse Server

Для его установки нам может понадобится git. Parse Server будет установлен в папку пользователя под которым все эти действия происходят.


Если npm start отработал успешно и без ошибок, то устанавливаем модуль npm parse-dashboard , который и есть та панель управления .


Обратите внимание на параметр -g который означаем что мы ставим модуль глобально. Это позволило бы нам запускать панель из командной строки с прописыванием настроек в config.json (как пишут во многих инструкциях), но мы так делать не будем — мы пропишем загрузку панели в настройку Parse Server и запуск одновременно с ним.

Также установим модуль npm forever, который позволит запустить сервер в фоне и позволит работать и ему и панели управления после завершения сеанса SSH.


Теперь перейдем к настройке Parse Server

Настройка Parse Server

Все настройки сервера хранятся в файле ~/parse-server-example/index.js , открываем его и заполняем его примерно таким образом (см. комментарии).


Это настройка для одного приложения. Для нескольких нужно создать несколько объектов ParseServer со своими appId, masterKey и endPoint и прописать их в массив ParseDashboard apps.

Если на VDS используется iptables , то надо не забыть прописать rules на порт 1337 и 4040. Например такие


После этого Панель Управления будет доступна по адресу http://:4040, ну а сам Parse Server соотв. на http://:1337 . Также обратите внимание на то что в настройке мы не поднимали сертификаты, соотв. доступ у нас по http, а не по https, а при разработке приложений для Android это нужно учитывать. Лучше, конечно, убрать все эти порты внутрь сервера, получать доступ по url и настроить сертификаты. В таком виде в продакшн выпускать стоит только петпроекты.

Подключение своего Parse Server в Android Studio

В build.gradle (Module) добавляем блок


В strings.xml прописываем url до Parse Server и ключи


В манифест


И используем в приложении подобным образом


С необходимыми импортами.