Если найдётся ещё кто-нибудь, кто как и я вдруг решить использовать RPI в качестве домашнего или тестового сервера с развёрнутым meteor-приложением, надеюсь ему пригодится эта инструкция. Выбор пал именно на Arch Linux, поскольку, как мне известно, в настоящее время это единственный дистрибутив для платформы ARM, поддерживающий работу MongoDB на localhost.
Обычно я пользуюсь Mac OS X и Ubuntu, и это была моя первая встреча с Arch Linux, поэтому кое-какие процедуры вызвали вопросы и заставили покопаться в интернете. Возможно, кому-то эта инструкция покажется примитивной, но я хотел бы найти такую до того, как столкнулся с трудностями. Если вы найдёте неточность, ошибку или захотите что-то добавить — милости прошу в комментарии.
1. Установка Arch Linux ARM
Скачиваем и распаковываем архив с img-образом отсюда, затем записываем его на mSD-карту. На своём маке я использовал для этого приложение ApplePi Baker. После записи вставляем карту памяти в RPI и логинимся через ssh:
$ ssh root@192.168.1.11
Пароль по умолчанию — 'root'.
2. Расширение корневого раздела
Достаточно подробно процедура расширения дискового пространства раздела описана в этом материале юзера dmitriy5181. От себя хочу добавить, что для обеспечения работы MongoDB не следует устанавливать в файле /etc/fstab параметр noatime — с ним Mongo у меня не заработал.
3. Установка часового пояса
Проверяем текущие установки
# timedatectl status
При необходимости смотрим, какие есть часовые пояса, выбираем подходящий
# timedatectl list-timezones
И устанавливаем его командой
# timedatectl set-timezone Europe/Minsk
4. Установка node.js и зависимостей
В общем случае для работы node,js понадобятся python2, утилита make и набор компиляторов GCC. Установим всё необходимое
# pacman -Sy nodejs mongodb python2 make gcc
5. Создание символьной ссылки на python
При установке python2 в Arch Linux создаётся символьная ссылка /usr/bin/python2, но нам потребуется ссылка с именем python, поэтому просто скопируем существующую
# cp /usr/bin/python2 /usr/bin/python
6. Запуск установленного Mongo
# systemctl start mongodb
Проверить состояние его работы можно командой
# systemctl status mongodb
В Arch Linux присутствует демон systemd, поэтому для добавления MongoDB в автозапуск достаточно выполнить команду
# systemctl enable mongodb
7. Перенос проекта
На рабочей машине (на той, где вы ведёте разработку проекта с MeteorJS) в папке с приложением (например, ~/meteorapps) создаём бандл нужного проекта командой
$ meteor bundle myapp.tgz
Затем переносим созданный app.tgz на карту памяти mSD и распаковываем
tar -xvzf myapp.tgz
8. Установка специфических зависимостей
Для начала переустановим библиотеку для работы с unicode (с системной версией что-то было не так)
# pacman -Sy libunistring
Установим пакеты для node.js
# npm install fibers@1.0.1 bcrypt@0.7.7
Я использовал специфические версии, но полагаю, что с последними тоже всё заработает. Если нет — их всегда можно переустановить, используя команду, приведённую выше.
Также для моего проекта понадобились некоторые библиотеки
# npm install underscore source-map-support semver
# npm install
9. Запуск приложения
Если всё готово, запуск приложения можно осуществить следующим образом.
Создадим файл, в котором будет описан наш сервис и способ его запуска
# nano /usr/lib/systemd/system/myapp.service
Содержимое файла myapp.service
[Unit]
Description=My awesome Meteor.JS app
After=mongodb.target
[Service]
User=pi
Environment=ROOT_URL=http://192.168.1.11 PORT=80 MONGO_URL=mongodb://localhost:27017/myapp
ExecStart=/usr/bin/node /home/pi/meteorapps/myapp/main.js
[Install]
WantedBy=multi-user.target
Здесь нужно подставить имя пользователя, PORT, ROOT_URL и путь к main.js.
Запуск сервиса осуществляется командой
# systemctl start myapp
Аналогично случаю с MongoDB сервис можно добавить в автозапуск
# systemctl enable myapp
Если всё прошло гладко, теперь можно зайти с рабочей машины по адресу 192.168.1.11 и увидеть морду приложения.
Автор: kakawajazz