Мой блог - Тестирование GIT-версии Rocket.Chat (Обновление Rocket.Chat)

Тестирование GIT-версии Rocket.Chat (Обновление Rocket.Chat)

Я активно использую в своей работе Rocket.Chat и честно говоря меня все устраивает, но недавно мне преподнесли небольшой сюрприз объявив мобильную версию для Android устаревшей фактически принудительно ее обновив, точнее они навязчиво рекомендовали обновиться при каждом запуске приложения и однажды я все же случайно нажал на обновление и в общем зря я это сделал ...

Фотография автора

Автор: Антон Черноусов
Опубликовано: 2 недели, 5 дней (последние правки: 0 минут назад) - 0 комментариев
Категории записи: Linux, RocketChat, Ubuntu, Системное администрирование


После того как мне обновили Android-версию мобильного клиента Rocket.Chat до 2.1.0 он перестал работать и постоянно пытается подключиться, но естественно у него ничего не получается и я таким образом лишился удобного инструмента.

Rocket.Chat не может подключится к серверу

Что интересно, я использую стабильную версию с их официального сайта и как оказалось не такая уж она и стабильная. Теперь в принципе осталось два варианта, первый это собрать из исходных кодов старую версию для Android, отвязать ее от маркета и пользоваться дальше, а второй, это попробовать обновиться до последней версии сервера из репозитория. Если обновление не поможет, то будем переходить к первой версии плана и начнем переписку с разработчиками.

В логах при сбое подключения мобильного клиента мы видим запись:

Rocket.Chat[6118]: Can't mix remove and get fields

Для чистоты эксперимента проведем сборку GIT-версии Rocket.Chat и заодно посмотрим как собирать эти Meteor.js приложения. Особенностью сборки этих приложений является то, что сборка будет проходить от имени непривилегированного пользователя, например от имени пользователя rocket_chat от имени которого у меня сервис и работает. Тестирование я буду проводить на копии контейнера и если, что сломать Rocket.Chat мне не жалко и я смогу быстро восстановить контейнер web-приложения целиком.

Начнем с подготовки окружения для сборки Rocket.Chat:

# mkdir /opt/Developmet
# mkdir /opt/Developmet/source
# mkdir /opt/Developmet/build
# git clone https://github.com/RocketChat/Rocket.Chat.git /opt/Developmet/source
# chown -R rocket_chat:rocket_chat /opt/Developmet

В корне пакета исходных кодов имеется файл example-build-run.sh, который мы и будем использовать для сборки, но в этом файле необходимо закомментировать запуск сервиса после сборки и изменить путь к каталогу куда поместить собранный проект:

# Requires Node.js version 4.x
# Do not run as root

DEPLOY_DIR=/opt/Developmet/build
...
#cd $DEPLOY_DIR/bundle
#NODE_ENV=production \
#PORT=3000 \
#ROOT_URL=http://localhost:3000 \
#MONGO_URL=mongodb://localhost:27017/rocketchat \
#MONGO_OPLOG_URL=mongodb://localhost:27017/local \
#node main.js

Если посмотреть скрипт сборки, то вы увидите что для сборки используется утилита meteor которой в штатной поставке дистрибутива Ubuntu нет и вам потребуется ее установить при помощи команды:

# curl https://install.meteor.com/ | sh

После того как мы установили Meteor.js, нам необходимо остановить запущенную службу Rocket.Chat, перелогиниться в требуемого пользователя и задать переменные окружения необходимые для запуска нашего приложения:

# systemctl stop rocketchat
# su rocket_chat
$ export NODE_ENV=production
$ export PORT=3000
$ export ROOT_URL=https://chat.gita-dev.ru
$ export MONGO_URL=mongodb://localhost:27017/gita-rocket
$ export MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=001-rs

Для сборки нам потребуется запустить модифицированный скрипт сборки и все дальнейшие операции будут выполнены полностью автоматически:

$ ./example-build-run.sh

У меня при сборке приложения вышла ошибка:

While minifying app stylesheet:               
packages/modules-runtime.js:231:12: Cannot find module 'postcss-import'

В принципе это оказалось не существенным и приложение в любом случае было собрано успешно, хотя конечно разумнее добавить недостающий пакет в файл конфигурации package.json при помощи команды:

$ npm install postcss-import --save

Приложение собрано и мы можем попробовать его запустить, а так как все переменные окружения мы уже задали, то нам потребуется просто перейти в каталог собранного проекта и выполнить команду:

$ node ./main.js

Как вы наверное обратили внимание, в сборочном скрипте имеется комментарий:

# Requires Node.js version 4.x

Но это не правда и как вы можете видеть в собранном приложении имеется файл node_version.txt в котором указывается требуемая для работы версия 8.11.1 и установить ее можно при помощи команды:

# n 8.11.1

Если при старте приложения вы получили ошибку:

module.js:549
    throw err;
    ^
Error: Cannot find module 'fibers'

То это означает, что вы забыли выполнить установку зависимых модулей при помощи команды:

$ cd ./programs/server/
$ npm install

При первом запуске сервера Rocket.Chat будет произведено обновление базы данных и пути назад у вас уже не будет:

connect deprecated limit: Restrict request size at location of read npm/node_modules/connect/lib/middleware/multipart.js:86:15
{"line":"160","file":"rocketchat_migrations.js","message":"Migrations: Migrating from version 109 -> 115","time":{"$date":1525405594835},"level":"info"}
{"line":"160","file":"rocketchat_migrations.js","message":"Migrations: Running up() on version 110","time":{"$date":1525405594836},"level":"info"}
{"line":"160","file":"rocketchat_migrations.js","message":"Migrations: Running up() on version 111","time":{"$date":1525405594841},"level":"info"}
{"line":"160","file":"rocketchat_migrations.js","message":"Migrations: Running up() on version 112","time":{"$date":1525405594849},"level":"info"}

Именно поэтому я и настаиваю на резервном копировании перед любыми обновлениями, перед обновлением у меня была версия приложения Rocket.Chat 0.63.2:

Перед обновлением Rocket.Chat

После обновления версия Rocket.Chat стала :

Версия после обновления

Но это все равно не помогло мобильной версии клиента и ошибка все еще появляется в логах сервера:

Can't mix remove and get fields

Как вы видите версия сервера 0.64 и ветка по умолчанию в GIT-репозиторий Develop, а не Master, следовательно мы можем попробовать версию еще свежее и для этого переключаем гит-репозиторий на удаленную ветку Master при помощи команды:

$ git reset --hard origin/master

Собирая Master-ветку вы получите версию 0.64.1:

Сборка мастер-ветки Rocket.Chat

С процессом сборки Rocket.Chat мы разобрались, опыт полезный хоть и не помог, и в следующей статье переходим к первой части плана, а именно будем собирать legacy-версию отвязанную от маркета и вести переговоры с разработчиками, у меня на эту систему большие планы.

Пожалуйста, оцените мою статью (всего оценок 0, средняя оценка 4.00):

Комментарии к статье:

Пока комментариев нет

Оставьте комментарий:

обязательно

обязательно (не публикуется)

необязательно

обязательно

обязательно