Подготовка приложений к развертыванию в Сети
Чтобы развернуть приложение, вам понадобится инструмент, называемый 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!