WordPress рекламирует впечатляющую «5-минутную» установку, позволяющую клиенту и разработчику погрузиться в среду, в которой будет работать конечный пользователь. Я хотел иметь возможность разместить приложение где-нибудь на сервере, чтобы показать его своим друзьям, без необходимости придумывать, как просто вывести текст на экран. Итак, чтобы свести все к минимуму, чтобы Тими в будущем мог понять и украсть, давайте рассмотрим создание и развертывание приложения Node на Heroku.
Это предполагает, что у вас установлен Heroku toolkit и учетная запись Heroku. Вы можете проверить репозиторий, если вам просто нужен код
Сначала мы создаем папку проекта, может быть что-то вроде super-sweet-node-app или что у вас есть. Внутри этой папки, которую мы с этого момента будем называть корневая/корневая папка, запустите npm init -y, чтобы мы могли использовать пакеты NPM. Кстати, давайте установим два пакета, которые мы будем использовать: express и marked-engine.
$ npm install — save express marked-engine
И теперь, когда у нас есть детали, давайте заставим их работать. Во-первых, давайте создадим основные файлы, которые нам всегда нужны:
$ touch server.js .gitignore README.md LICENSE.md
Мы хорошие разработчики, поэтому привыкли использовать git сейчас, на ранней стадии. Поместите файлы, которые вы хотите, чтобы git не отслеживал, или каталоги внутри .gitignore. README и LICENSE не являются обязательными, но это заставляет вас выглядеть круто, так что можете их использовать.
Внутри server.js давайте создадим экземпляр экспресс-сервера, который сообщает нам, когда он запускается.
var express = require('express'); var app = express(); var PORT = process.env.PORT || 5000; app.listen(PORT, function(val){ console.log('I am listening on the port ' + PORT); console.log('this callback received val as ' + val); });
val прямо сейчас возвращает null, так что это может быть нереально. Но теперь мы можем увидеть это мгновенно, запустив в корне нашего проекта
$ node server.js
Вводить все это было бы трудоемко, а мы ленивы, особенно когда дело доходит до добавления множества флагов или других действий в консоли. Давайте абстрагируем эту команду в нашем файле package.json.
... “scripts”: { “test”: “echo \”Error: no test specified\” && exit 1", “start”: “node server.js” }, ...
Теперь вы можете
$ npm start
и он запустит сервер для нас локально. Но это довольно скучно, когда мы ничего не отправляем клиенту. Давайте сделаем то, чему нас учит каждый язык и фреймворк: Привет, мир!
app.get('/', function(req, res){ res.send('Hello world!'); });
Поместите это где-нибудь после app = express(), и когда вы зайдете на localhost:5000, вы должны получить Hello world! печать в браузере. Довольно круто, но что, если я хочу отправить файл уценки вместо статического текста? Вот где в игру вступает marked-engine. Измените свой код, чтобы сообщить нашему экспресс-серверу, какой движок ему нужно использовать, и сообщите ему, чтобы он использовал будущий файл с именем TUTORIAL.md.
... app.engine('md', require('marked-engine').renderFile); ... app.get('/', function(req, res){ res.render('TUTORIAL.md'); }); ...
Это говорит нашему рабочему процессу обработать этот файл. Но поскольку мы не использовали app.configure для настройки некоторых параметров, нам нужно создать папку с именем views и создать в ней файл .md.
$ mkdir views && touch views/TUTORIAL.md
Теперь давайте заполним этот файл некоторой уценкой. Вы можете написать свой собственный или скопировать его из моего репозитория. Теперь запустите npm start и убедитесь, что TUTORIAL.md отображается на экране.
Как только вы это сделаете, давайте добавим и зафиксируем в git, чтобы обновить его с нашими файлами. Убедитесь, что у вас есть node_modules внутри вашего .gitignore.
$ git add — all $ git commit -m “App finished”
Внутри вашей корневой папки запустите
$ heroku create
Как только это будет сделано, давайте отправим наш код на рабочий сервер.
$ git push heroku master
Это развернет наши файлы и приложение на сервере Heroku. Он будет использовать пакеты, установленные с флагом — сохранить, для создания среды. Когда он будет завершен, вам будет предоставлен URL-адрес. Если вы перейдете по этому URL-адресу, вы должны увидеть то же самое, что и при посещении localhost:5000, если он запущен локально.
И вот оно! Самый простой способ запустить экспресс-сервер на размещенном сервере. Heroku имеет гораздо больше инструментов и предлагает гораздо лучшие учебные пособия, чем это, для каждого шага пути.
Но, как сказал один мудрый человек: как только вы чему-то научились, создайте учебник о том, как это делать.
Был ли я неправ в чем-то из этого? Есть ли явные ошибки, которые я слишком зеленый, чтобы понять? Откройте вопрос в github repo или отправьте мне твит. Помогло ли это и хотите помочь другим? Нажмите на маленькое милое сердечко ниже и поделитесь им!