В качестве отклика на инструкцию «Как сделать простой веб-сайт за один час» я решил опубликовать собственную, состоящую из пяти простых и обозримых ?пятиминутных шагов.
Шаг 1. Установитьдвижок Node.js в соответствии с инструкциями, имеющимися в вики для каждой из поддерживаемых операционных систем. (Для Windows достаточно скачать и запустить MSI-файл, для CentOS — воспользоваться системным менеджером пакетов, и так далее.)
Шаг 2. Создать пустой каталог и поместить в нём файл«site.js» следующего содержания:
Настройки staticSiteOptions можно переменить по собственному вкусу.
Шаг 3. В том же каталоге подать команду«npm install express», которая автоматически создаст подкаталог «node_modules» и установит туда Express, скачав из Интернета.
Шаг 4. В том же каталоге создать подкаталог«static» и поместить в нём файлы статического сайта. Этот подкаталог станет корнем сайта. Файлы с именами «index.html» будут использоваться как файлы-индексы. Иными словами, при ответе сервера на запрос с адресом, содержащим только имя некоторого каталога (будь то корень сайта или один из его подкаталогов), будет показан файл с именем «index.html» из указанного каталога (если есть).
Шаг 5. В том же каталоге подать команду«node site», которая запустит сервер. Убедившись в её работоспособности, обеспечить автозапуск этой команды в этом каталоге после каждой перезагрузки операционной системы. (Например, на CentOS 6.2 можно использовать upstart для этой цели.)
Всё.
Под хабракатом уместно упомянуть (и упоминаю) о том, что просто запустить сервер на некотором компьютере может быть не достаточно: у этого компьютера также должно быть некоторое имя, известное читателям сайта, а до сервера должны доходить запросы, отправляемые на слушаемый им внешний порт.
Но задачу о том, как назначить имя тому компьютеру, на котором запущен сервер, я оставляю на усмотрение читателя, потому что у ней есть несколько общеизвестных решений.
(Можно купить VPS с фиксированнымIP-адресом, запустить на нём веб-сервер, а затем купить домен, купить DNS-серверы или подобрать бесплатные по вкусу, сообщить их имена доменоторговцу, а затем связать IP-адрес с желаемым именем в панели управления первичным DNS-сервером. Можно запускать веб-сервер на домашнем компьютере, а фиксированный IP-адрес для него купить у поставщика Интернета. Можно использовать динамический DNS, обходиться без фиксированного IP-адреса. А может оказаться, что внешнего IP-адреса и вовсе не надо, если веб-сервер нужен для интранета.)
Да и задачу о том, как пробросить через файерволл тот порт, который слушает сервер, я также оставляю на усмотрение читателя. Её решение обыкновенно излагается в инструкции к файерволлу.
Шаг 1. Установить
Шаг 2. Создать пустой каталог и поместить в нём файл
site.js
// Перечисление зависимостей:
var path = require('path');
var express = require('express');
// Описание настроек:
var staticSiteOptions = {
portnum: 80, // слушать порт 80
maxAge: 1000 * 60 * 15 // хранить страницы в кэше пятнадцать минут
};
// Запуск сайта:
express().use(express.static(
path.join(__dirname, 'static'),
staticSiteOptions
)).listen(staticSiteOptions.portnum);
Настройки staticSiteOptions можно переменить по собственному вкусу.
Шаг 3. В том же каталоге подать команду
Шаг 4. В том же каталоге создать подкаталог
Шаг 5. В том же каталоге подать команду
Всё.
Под хабракатом уместно упомянуть (и упоминаю) о том, что просто запустить сервер на некотором компьютере может быть не достаточно: у этого компьютера также должно быть некоторое имя, известное читателям сайта, а до сервера должны доходить запросы, отправляемые на слушаемый им внешний порт.
Но задачу о том, как назначить имя тому компьютеру, на котором запущен сервер, я оставляю на усмотрение читателя, потому что у ней есть несколько общеизвестных решений.
(Можно купить VPS с фиксированным
Да и задачу о том, как пробросить через файерволл тот порт, который слушает сервер, я также оставляю на усмотрение читателя. Её решение обыкновенно излагается в инструкции к файерволлу.
Комментарии (19)
Crandel
30.03.2015 16:22+1если нету готового сайта, то это будет явно побольше времени. у меня иногда придумывание названия переменной занимает больше 5 минут, а тут во втором шаге настройки надо придумывать)
stan_jeremy
30.03.2015 19:52-3Mithgol открыл для себя nodejs.org
Mithgol Автор
30.03.2015 22:28-1Открыть-то я открыл, но так давно и так гласно, что в правом столбце в хабе Node.js видно, что именно я — лидер хаба (по крайней мере, в настоящее время).
StreetStrider
30.03.2015 23:31+1Mithgol, претензия к вам выше была, безусловно, необоснованна: мы давно знаем, что вы занимаетесь нодой. Но, при всём при этом, признайте — эта статья и правда слабовата — так что она естественным образом вызывает подобную реакцию.
dark_ruby
зачем тянуть тяжелый експресс, если можно использовать node-static
Mithgol Автор
На вырост.
Да и не особенно тяжёлый он: в нём и мегабайта кода не наберётся даже с основными зависимостями его.
printf
Да. Из четверки вообще все выкинули, кроме собственно express.static. Хороший сервер.
Nerten
Куда может рости статический сайт?
Mithgol Автор
Он может перестать быть статическим, когда обстоятельства дела потребуют этого.