Подготовка приложений к развертыванию в Сети



Чтобы развернуть приложение, вам понадобится инструмент, называемый cf. Ин­сталляция его на локальную машину требует предварительной установки языка Ruby и пакет-менеджера RubyGems. Я включил приложение cf в проект node-dev- bootstrap, так что вы можете начать развертывание прямо с гостевой машины без всяких дополнительных установок!

Чтобы начать, создайте папку Chapter8клонированием проекта node-dev-bootstrap, как вы уже делали в предыдущих двух главах. Покончив с этим, запустите гостевую машину и подключитесь к ней по SSH.

Начнем с развертывания базовой программы server.js, которая появилась у нас вместе с node-dev-bootstrap, но перед этим нам придется проделать еще две вещи. Вначале понадобится добавить файл package.json, так как Cloud Foundry ожидает найти его во всех приложениях, которые мы будем разворачивать. Поскольку наше серверное приложение по умолчанию не зависит от каких-либо внешних модулей Node.js, файл будет очень коротким:

{

"name":"sp_example",

"description": "Мое первое приложение Cloud Foundry!"

}

Затем нужно сделать небольшое изменение в файле по умолчанию server.js, который поставляется вместе с проектом node-dev-bootstrap. Это изменение затра­гивает номер порта, по которому производится слушание сервера: по техническим причинам Cloud Foundry сам должен назначить нам номер порта для слушания, но мы не будем знать этот номер до запуска кода. К счастью, Cloud Foundry достав­ляет номер порта через переменную окружения, которая называется PORT. Мы можем получить к ней доступ через переменную process.env.PORT в программе Node.js:

var http = require("http"),

// если переменная окружения PORT настроена,

// слушать по ней, если же нет, слушать // по порту 3000

port = process.env.PORT || 3000; var server = http.createServer(function (req, res) { res.writeHead(200, {"Content-Type": "text/plain"}); res.end("Привет от Cloud

Foundry!");

});

server.listen(port);

console.log("Сервер слушает по порту " + port);

Здесь мы снова встречаем идиому || , с которой уже столкнулись в главе 7. А вообще этот код делает следующее: если process.env.port определена, использо­вать ее, если нет, слушать по порту 3000. Это позволяет настроить номер порта так, что приложение будет корректно работать, будучи как размещенным на гостевой машине, так и развернутым на Cloud Foundry.

Развертывание приложения

К этому моменту мы уже можем запустить виртуальную машину и подключиться к ней через браузер, как и раньше. А сейчас, создав файл package.json и настроив приложение на слушание по корректному порту, мы также готовы загрузить его на Cloud Foundry.

Как я упоминал ранее, это потребует использования программы cf, которая уже установлена на гостевой машине. Чтобы начать, перейдите на гостевой машине в папку, где находится файл server.js

API платформы Cloud Foundry располагается на api.run.pivotal.io. Поэтому начнем с указания cf, где находится целевая платформа Cloud Foundr, с помощью субкоманды target:

vagrant $ cf target api.run.pivotal.io

Setting target to https://api.run.pivotal.io... OK

Затем нужно авторизоваться с помощью команды login и ввести данные для входа в учетную запись Cloud Foundry. После авторизации cf спросит, какое про­странство для развертывания мы хотим использовать. Я обычно использую про­странство development, когда экспериментирую:

vagrant $ cf logintarget: https://api.run.pivotal.io Email> me@semmy.me Password> ************

Authenticating... OK 1: development 2: production 3: staging Space> 1

Switching to space development... OK

Если все сделано правильно, следующий шаг — отправка приложения на Cloud Foundry! Как это сделать? Это так же просто, как использовать команду push. Вме­сте с субкомандой push нужно включить команду для запуска приложения:

vagrant $ cf push --command "node server.js"

Субкоманда push отправляет нас к диалогу с Cloud Foundry. Нужно будет отве­тить на несколько вопросов о приложении и об окружении, которое мы будем ис­пользовать. Вот диалог, который я провел с Cloud Foundry, — ваш, скорее всего, будет очень похожим:

Name> sp_example

Instances> 11: 128M 2: 256M 3: 512M 4: 1G

Memory Limit> 256MCreating sp_example... OK 1: sp_example 2: none

Subdomain> sp_example1: cfapps.io 2: none

Domain> cfapps.io

Creating route sp_example.cfapps.io... OK Binding sp_example.cfapps.io to sp_example... OK Create services for application?> nSave configuration?> nUploading sp_example... OK

Preparing to start sp_example... OK

 > Downloaded app package (4.0K)

 > Resolving engine versions

WARNING: No version of Node.js specified in package.json, see: https://devcenter.heroku.com/articles/nodejs-versions Using Node.js version: 0.10.21 Using npm version: 1.2.30

 > Fetching Node.js binaries

 > Vendoring node into slug

 > Installing dependencies with npm

npm WARN package.json sp_example@ No repository field. npm WARN package.json sp_example@ No readme data.

Dependencies installed

 > Building runtime environment

 > Uploading droplet (15M)

Checking status of app 'sp_example'...

1 of 1 instances running (1 running)

Push successful! App 'sp_example' available at sp_example.cfapps.io

Если все прошло хорошо, ваше приложение сейчас запущено в Веб! Можете убедиться в этом, открыв браузер и перейдя по URL, который выдала вам cf (в моем примере это http://sp_example.cfapps.io). Сделав это, вы должны увидеть ответ от вашего приложения.


Дата добавления: 2018-02-28; просмотров: 288; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!