Как развернуть метеорное приложение на моем собственном сервере?

Как развернуть приложение метеора на мой собственный сервер?

flavor 1: сервер разработки и развертывания одинаковый;

flavor 2: сервер разработки один (возможно, мой локальный хост), а сервер развертывания - другой (возможно, VPS в облаке);

flavor 3: Я хочу создать домен "meteor hosting", как "meteor.com". Является ли это возможным? Как?

Обновление

Я запускаю Ubuntu, и я не хочу "деметировать" приложение. Спасибо.

Ответ 1

Метеоритная документация в настоящее время говорит:

"[...] вам необходимо предоставить Node.js 0.8 и сервер MongoDB. Затем вы можете запустить приложение, вызвав узел, указав порт HTTP для приложения, которое будет прослушиваться, и конечную точку MongoDB".


Итак, среди нескольких способов установки Node.js я запустил его и выполнил, следуя лучшему совету, который я нашел: распаковка последней версии, доступной непосредственно на официальном сайте Node.JS, уже скомпилированной для Linux (64 бита, в моем случае):

# Does NOT need to be root user:

# create directory
mkdir -p ~/.nodes && cd ~/.nodes

# download latest Node.js distribution
curl -O http://nodejs.org/dist/v0.10.13/node-v0.10.13-linux-x64.tar.gz

# unpack it
tar -xzf node-v0.10.13-linux-x64.tar.gz

# discard it
rm node-v0.10.13-linux-x64.tar.gz

# rename unpacked folder
mv node-v0.10.13-linux-x64 0.10.13

# create symlink
ln -s 0.10.13 current

# add path to PATH
export PATH="~/.nodes/current/bin:$PATH"

# check
node --version
npm --version


А чтобы установить MongoDB, я просто следовал инструкциям в руководстве MongoDB, доступном в разделе "Документация" на его официальном сайте:

# Needs to be root user (apply "sudo" if not at root shell)

apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list
apt-get update
apt-get install mongodb-10gen



Сервер готов к запуску приложений Meteor! Для развертывания основной "проблемой" является то, где происходит операция " связки ". Нам нужно запустить команду meteor bundle из дерева исходных файлов приложения. Например:

cd ~/leaderboard
meteor bundle leaderboard.tar.gz


Если развертывание произойдет на другом сервере (вариант 2), нам нужно загрузить на него файл tar.gz пакета, используя sftp, ftp или любой другой метод передачи файлов. Как только файл будет найден, мы будем следовать и документации Meteor, и файлу README, который волшебным образом включен в корень дерева комплектов:

# unpack the bundle
tar -xvzf leaderboard.tar.gz

# discard tar.gz file
rm leaderboard.tar.gz

# rebuild native packages
pushd bundle/programs/server/node_modules
rm -r fibers
npm install [email protected]
popd

# setup environment variables
export MONGO_URL='mongodb://localhost'
export ROOT_URL='http://example.com'
export PORT=3000

# start the server
node main.js


Если развертывание будет на том же сервере (разновидность 1), файл tar.gz комплекта уже существует, и нам не нужно перекомпилировать нативные пакеты. (Просто перейдите в соответствующий раздел выше.)



Здорово! С этими шагами у меня развернут пример Leaderboard, развернутый на моем пользовательском сервере, а не "meteor.com"... (только для изучения и оценки их услуг!)

Мне все еще нужно, чтобы он работал на порте 80 (я планирую использовать NginX для этого), сохраняю переменные среды, запускаю Node.JS, отсоединенный от терминала, и так далее... Я знаю, что эта установка "почти голая"... только основа, первый шаг, основные камни основания.

Приложение было "вручную" развернет, без используя всего meteor deploy команды магических функций... Я видел, что люди опубликовали свой " meteor.sh " и " meteoric.sh " и я по тому же пути... создайте сценарий для эмуляции функции "развертывания одной команды"... помните, что в ближайшем будущем все это будет частью только первопроходцев Метеора, поскольку оно превратится в целую Галактику! и большинство из этих вопросов будут архаичными вещами прошлого.

В любом случае, я очень рад видеть, как быстро развернутое приложение работает на самом дешевом VPS, с удивительно низкой задержкой и почти мгновенными одновременными обновлениями в нескольких различных браузерах. Фантастика!

Спасибо!!!

Ответ 2

Попробуйте Meteor Up тоже

С этим вы можете развертываться на любом сервере Ubuntu. Для этого используется команда meteor build. И используется многими для развертывания производственных приложений.

Я создал Meteor Up, чтобы разработчики могли развертывать приложения Meteor для повышения качества продукции до появления Galaxy.

Ответ 3

Я бы порекомендовал аромат два с отдельным сервером развертывания. Разделение проблем приводит к созданию более стабильной среды для вашего кода и ее легче отлаживать.

Для этого есть отличный Meteoric bash script, который поможет вам развернуть Amazon EC2 или собственный сервер.

Что касается того, как сворачивать свой собственный meteor.com, я предлагаю вам разбить его на свой собственный вопрос StackOverflow, поскольку он не связан. Кроме того, я не могу ответить на него:)

Ответ 4

Я сделал это несколько дней назад. Я применил приложение Meteor к своему серверу на DigitalOcean. Я использовал инструмент Meteor Up для управления развертываниями и Nginx на сервере для обслуживания приложения.

Он очень прост в использовании. Вы должны установить meteor с помощью команды:

npm install -g mup

Затем создайте папку для конфигурации развертывания и перейдите в созданный каталог. Затем запустите команду meteor init. Он создаст два файла конфигурации. Мы заинтересованы в файле mup.json. Он имеет конфигурации для процесса развертывания. Это выглядит так:

{
  // Server authentication info
  "servers": [
    {
      "host": "hostname",
      "username": "root",
      "password": "password",
      // or pem file (ssh based authentication)
      //"pem": "~/.ssh/id_rsa",
      // Also, for non-standard ssh port use this
      //"sshOptions": { "port" : 49154 },
      // server specific environment variables
      "env": {}
    }
  ],

  // Install MongoDB on the server. Does not destroy the local MongoDB on future setups
  "setupMongo": true,

  // WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
  "setupNode": true,

  // WARNING: nodeVersion defaults to 0.10.36 if omitted. Do not use v, just the version number.
  "nodeVersion": "0.10.36",

  // Install PhantomJS on the server
  "setupPhantom": true,

  // Show a progress bar during the upload of the bundle to the server.
  // Might cause an error in some rare cases if set to true, for instance in Shippable CI
  "enableUploadProgressBar": true,

  // Application name (no spaces).
  "appName": "meteor",

  // Location of app (local directory). This can reference '~' as the users home directory.
  // i.e., "app": "~/Meteor/my-app",
  // This is the same as the line below.
  "app": "/Users/arunoda/Meteor/my-app",

  // Configure environment
  // ROOT_URL must be set to https://YOURDOMAIN.com when using the spiderable package & force SSL
  // your NGINX proxy or Cloudflare. When using just Meteor on SSL without spiderable this is not necessary
  "env": {
    "PORT": 80,
    "ROOT_URL": "http://myapp.com",
    "MONGO_URL": "mongodb://arunoda:[email protected]:10023/MyApp",
    "MAIL_URL": "smtp://postmaster%40myapp.mailgun.org:[email protected]:587/"
  },

  // Meteor Up checks if the app comes online just after the deployment.
  // Before mup checks that, it will wait for the number of seconds configured below.
  "deployCheckWaitTime": 15
}

После заполнения всех полей данных вы можете запустить процесс настройки с помощью команды mup setup. Он настроит ваш сервер.

После успешной настройки вы можете развернуть свое приложение. Просто введите mup deploy в консоли.

Ответ 5

Другая альтернатива - просто начать работу на своем собственном сервере. Я просто создал окно Digital Ocean, а затем подключил свою учетную запись Cloud9 IDE.

Теперь я могу правильно работать на машине в Cloud IDE, а развертывание - просто копирование файлов.

Я создал учебник, который показывает, как работает моя настройка.

Ответ 7

У меня было много проблем с метеоритом, поэтому я решил написать собственное собственное развертывание script. Я также добавил дополнительную информацию о том, как настроить nginx или mongodb. Надеюсь, это поможет!

См. папку /sh в репозитории

Что делает script meteor-deploy.sh:

  • Выберите среду (./meteor-deploy.sh для постановки, ./meteor-deploy.sh prod для производства)
  • Сборка и комплектация производственной версии приложения meteor.
  • Скопировать пакет на сервер
  • SSH на сервер
  • Сделайте mongodump для резервного копирования базы данных
  • Остановить запущенное приложение
  • Распаковать пакет
  • Перезаписать файлы приложений
  • Переустановите приложения node зависимостей пакетов
  • Запустите приложение (используется навсегда)

Протестировано для следующих конфигураций сервера:

  • Ubuntu 14.04.4 LTS
  • meteor --version 1.3.2.4
  • node --version v0.10.41
  • npm --version 3.10.3

Ответ 8

Я понял, что выбор метеора для моего проекта - ошибка. Meteor - это ловушка, позволяющая разработчикам сразу войти в систему. После того, как вы потратили время и силы, вы узнали, что на последнем этапе развертывания вашего проекта вы должны заплатить, чтобы сделать это правильно; Кроме того, так много "полуобжаренных" решений подано в стиле продаж подержанных автомобилей "инженерами". Эти два типа потратили впустую меня и многих других много времени. Мне нужно больше выполнять домашнюю работу, чтобы в следующий раз отсеять это мошенничество.