Как развернуть метеорное приложение на моем собственном сервере?
Как развернуть приложение метеора на мой собственный сервер?
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, а развертывание - просто копирование файлов.
Я создал учебник, который показывает, как работает моя настройка.
Ответ 6
Вот инструкции для запуска Meteor на CentOS 7 VPS. Он должен применяться к другим средам Linux.
Ответ 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 - это ловушка, позволяющая разработчикам сразу войти в систему. После того, как вы потратили время и силы, вы узнали, что на последнем этапе развертывания вашего проекта вы должны заплатить, чтобы сделать это правильно; Кроме того, так много "полуобжаренных" решений подано в стиле продаж подержанных автомобилей "инженерами". Эти два типа потратили впустую меня и многих других много времени. Мне нужно больше выполнять домашнюю работу, чтобы в следующий раз отсеять это мошенничество.