sedovalx / taxi

6 stars 3 forks source link

Дистрибутив и развертывание сервера #28

Closed sedovalx closed 9 years ago

sedovalx commented 9 years ago

Нужно исследовать и протестировать варианты деплоймента и автозапуска сервера. Под автозапуском понимается запуск при старте машины. Так же была бы очень кстати возможность перезапуска при фатальных исключениях. Play-приложение вроде бы может запускаться само по себе, и содержит в себе http-сервер. Но может быть его лучше развернуть на каком-нибудь TomCat и т.п.

Более того, рабочим вариантом считается развертывание в амазоновском облаке. Характеристики среды в облаке пока не обсуждались, так что можно предлагать варианты. Известно то, что хотят облако для большей отказоустойчивости решения.

sedovalx commented 9 years ago

@hodkoff2 эта задача теперь достается тебе, т.к. ты уже начал по ней копать. Рассматриваем вариант с развертыванием на heroku.com

sedovalx commented 9 years ago

@v1pka @hodkoff2 ой-ой-ой, все переиграем. У Вани будет время этим заняться, пусть занимается. Требования следующие:

sedovalx commented 9 years ago

По поводу настроек билда на Travis-CI: http://docs.travis-ci.com/user/travis-pro/#Who-has-access-to-the-builds%3F Т.е. у вас у всех есть права на просмотр и запуск билдов. Конфигурируются они в основном в файле .travis.yml в корне ветки.

sedovalx commented 9 years ago

Добавлю связь на #30 и #33. После реализации данной задачи можно закрывать и те тоже.

hodkovdd commented 9 years ago

@sedovalx @v1pka напишите ваши email'ы, которым права на heroku выдать.

sedovalx commented 9 years ago

sedov.alx@gmail.com

v1pka commented 9 years ago

@hodkoff2 meus.polus@gmail.com

hodkovdd commented 9 years ago

@v1pka @sedovalx @Argelein готово, в heroku вам должно быть доступно приложение taxi-spb.

hodkovdd commented 9 years ago

@v1pka @sedovalx Ваня, привет. Получилось развернуть сервер?

v1pka commented 9 years ago

@hodkoff2 @sedovalx Привет. У меня, к сожалению, не хватило времени. Думаю, я теперь числа до 10 буду занят. А пока пища для размышления(дочитайте, плиз, до конца):

У нас неправильный подход к решению задачи развертывания. Алгоритм решения данной задачи должен быть такой: 1) Сначала надо разобраться с развертыванием всего приложения - бэкенда и фронтенда, а не отдельно бэк, а потом думать о фронте. Для этого надо сделать buildpack для фронта & бэк-энда, чтобы все деплоилось в одном application. 2) И только тогда, когда получится сделать buildpack и все приложения развернутся, заняться отладкой конфигов: а) сервер б) бэк 3) Подключить https за 20 ye в месяц (240 в год - sic(!)) и зафорсить приложение юзать https: https://addons.heroku.com/SSL

Кстати, стоимость третьего пункта вызывает у меня вопрос - а точно ли мы хотим жить с heroku? Может амазон ec2 t2.micro на linux с отдельным контейнером типа томката и простым самоподписным сертификатом будет дешевле? Или тоже самое, но здесь http://infobox.ru/hosting/linux/ ? Если мы от него откажемся, то и тогда не стоит тратить время на ковыряние heroku.

sedovalx commented 9 years ago

@v1pka я ничего не понял про buildpack. Думал, просто файлы сервера вместе с каталогом public, где лежит клиент, заливаются на heroku. А потом херак-херак, и запустилось.

v1pka commented 9 years ago

@sedovalx А как ты будешь CI обеспечивать? У тебя должен сбилдиться сервер, потом клиент, потом это все должно отправится в хероку. Но сейчас еще вопрос в цене на хттпс - стоит ли хероку того?

sedovalx commented 9 years ago

@hodkoff2 стоит ли?

hodkovdd commented 9 years ago

@sedovalx @v1pka Я пощелкал калькулятор Amazon: http://calculator.s3.amazonaws.com/index.html нащелкал примерно на 8$ c: t2.micro Linux 100Gb Magnetic 1 Elastic IP База здесь вроде тоже бесплатна, Не понял как здесь с HTTPS - специально докупать что-нибудь надо чтобы как сказал Ваня зафорсить приложение юзать https?

v1pka commented 9 years ago

@hodkoff2 @sedovalx В данном варианте https будет делаться на уровне контейнера(томката, например) Зачем нужен эластик ип? Если не перезагружать инстанс, то у него не изменится айпи.

hodkovdd commented 9 years ago

@sedovalx @v1pka

  1. Эластик IP - можно без него начать, пока я не представляю нужно ли перезагроужать инстанс.
  2. В данном варианте https будет делаться на уровне контейнера(томката, например) - Можешь подробнее описать, я не знаком с терминами. Контейнер это процесс в данном случае?
v1pka commented 9 years ago

@sedovalx @hodkoff2

  1. Вряд ли :) ugcs.com жил без эластик ип больше года :)
  2. Грубо говоря, на уровне того, где будет запускаться наше приложение.
sedovalx commented 9 years ago

@hodkoff2 сделай пожалуйста виртуалку на амазоне. Постараемся остаться в рамках максимально бесплатно возможного. На ней нужно развернуть PostgreSQL, а все явки/пароли отдать @v1pka . Ваня сделает разворачивание приложения на этой виртуалке. Сможешь это сделать сегодня-завтра?

hodkovdd commented 9 years ago

@sedovalx @v1pka Займусь сейчас, о результатах отпишусь здесь

sedovalx commented 9 years ago

@hodkoff2 на общее обозрение учётку выставлять не нужно. Удали свой комментарий. Я Ване письмом его отправил.

hodkovdd commented 9 years ago

@sedovalx удалил

sedovalx commented 9 years ago

@hodkoff2 @v1pka Дима, с амазоном проблемы. Если вернуться к варианту с хероку, то для заказчика платить 20$ в месяц за https будет норм?

v1pka commented 9 years ago

@sedovalx @hodkoff2 Итак, коллеги, по результатам убитого дня:

  1. Мы переехали из Frankfurt в Ireland
  2. Старый инстанс был убит, а новый развернут. Наше приложение в папочке home/ec2-user/git/taxi
  3. На новом инстансе развернут и настроен postgresql, npm, bower, ember-cli, sbt, git, java 1.8.
  4. Т.к. CodeDeploy сейчас не работает, то вариант обновления видится выполнение четырех команд:
    1. Убиваем запущенный activator - вводим ps aux | grep activator , дальше смотрим pid(четырехзначное число) и пишем kill -9 pid
    2. Переходим в наши sources(см пункт 2) и делаем git pull
    3. cd client && npm install && bower install && npm run build
    4. cd server && nohup env JAVA_OPTS="-Xmx512m -Dhttp.port=disabled -Dhttps.port=9443" activator ~run
    5. если не работает последняя команда, то вводим: export TYPESAFE_ACTIVATOR=/home/ec2-user/activator-1.3.2-minimal/ export PATH=$PATH:$TYPESAFE_ACTIVATOR
  5. Проверяем, что все нормально стартовало.

Сейчас наше приложение развернуто здесь: https://54.72.96.97:9443/login http отключен.

В принципе, для нечастого обновления такой план сойдет.

Файлик для подключения к серверу здесь: https://dl.dropboxusercontent.com/u/30160713/TaxiSpbIrelandKey.pem.txt

sedovalx commented 9 years ago

@v1pka а под кем заходить в приложение? Напиши в скайп. И еще расскажите мне кто-нибудь, как подключиться к инстансу, чем каталоги файлов смотреть и чем к БД соединяться.

v1pka commented 9 years ago

@sedovalx Хм. А как вы по дефолту входили? Как подключиться к инстансу - читай и про putty, и про WinSCP(это для копирования файлов): http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html Для подключения к БД используй PgAdmin - адрес сервера знаешь, порт 5432, пароль такой же, как в конфиге.

v1pka commented 9 years ago

@sedovalx Похоже, там что-то на клиенте с токеном - он при логине его получает в респонсе, а потом не использует.

hodkovdd commented 9 years ago

@sedovalx @v1pka должен быть тот же админ для входа? меня чего то не пускает.

sedovalx commented 9 years ago

@v1pka не, что-то с сервером. Он токен в теле ответа отдавать должен. Не отдает. Попробую разобраться.

sedovalx commented 9 years ago

@hodkoff2 @v1pka починил. Заходите под админом.

sedovalx commented 9 years ago

В wiki описана процедура обновления стенда.