Развёртывание приложения DocPad на сервере Ubuntu 14.04

DocPad – это генератор статических сайтов на основе Node.js, который может управлять контентом как самостоятельно, так и в сочетании с приложением Node.js. В этом руководстве речь пойдёт о развёртывании приложения DocPad на стандартном 64-битном сервере Ubuntu 14.04.

После выполнения руководства сервер сможет обслуживать DocPad на порте 80 как не-рутового пользователя и будет восстанавливать его работу в случае какого-либо сбоя.

Требования

Для выполнения руководства понадобится:

  • Сервер Ubuntu 14.04.
  • Пользователь с расширенными привилегиями (sudo), который будет использован для установки DocPad; для удобства в руководстве такой пользователь называется docpad.

Данное руководство следует полностью выполнять через учётную запись пользователя docpad.

1: Установка Git, Node.js и NPM

Для начала нужно установить зависимости DocPad. Обновите списки пакетов:

sudo apt-get update

Установите систему контроля версий Git, которая позволяет разворачивать приложения DocPad (а также пользовательские приложения) из Git-репозитория.

sudo apt-get install git

Затем в качестве веб-сервера установите Node.js

sudo apt-get install nodejs

Примечание: В команде используется nodejs вместо node.

После установки Node.js доступен из командной строки при помощи команды nodejs.

Команда node также понадобится в дальнейшем. Чтобы сделать её доступной в командной строке, нужно создать символьную ссылку с node на Node.js. Это необходимо для того, чтобы приложение DocPad  могло загружать зависимости.

sudo ln -s /usr/bin/nodejs /usr/bin/node

Более подробную информацию можно найти в этом руководстве.

Теперь установите интерфейс командной строки менеджера пакетов Node:

sudo apt-get install npm

2: Настройка порта Node.js

Приложение должно быть доступно на порте 80. По умолчанию приложения DocPad запускаются на порт 9778. Нужно привязать Node.js к порту 80 вручную, а затем настроить приложение DocPad для запуска на том же порте. После этого сайт будет доступен по ссылке http://example.com (вместо http://example.com:9778).

Сначала убедитесь, что пакет libcap2-bin установлен.

sudo apt-get install libcap2-bin

Примечание: Как правило, системы поставляются с предустановленным пакетом libcap2-bin.

Привяжите Node.js к порту 80:

sudo setcap cap_net_bind_service=+ep /usr/bin/nodejs

3: Установка DocPad

Используйте менеджер NPM, чтобы установить DocPad:

sudo npm install -g docpad

Теперь нужно очистить права в домашнем каталоге пользователя docpad, поскольку для установки DocPad использовалась команда sudo:

sudo chown -R docpad:docpad ~

Примечание: При использовании другого пользователя не забудьте указать его имя и группу вместо docpad.

4: Создание приложения DocPad

Теперь можно приступать к созданию приложения DocPad.

Примечание: Если у вас уже есть такой проект, используйте его из репозитория Git.

Создайте каталог приложения (в данном руководстве этот проект условно называется docpad_test; укажите любое удобное имя проекта) и перейдите в него:

mkdir ~/docpad_test
cd ~/docpad_test

Загрузка приложения DocPad и его зависимостей

Если у вас уже есть приложение DocPad, следуйте инструкциям данного раздела, чтобы развернуть его на сервере. Загрузите приложение из репозитория Git.

git clone path_to_git_repository

Затем загрузите все зависимости приложения DocPad.

npm install

Если приложение использует компоненты Bower, запустите:

bower install

Создание нового приложения DocPad

Если у вас нет готового проекта DocPad, можно создать его сейчас. Откройте каталог проекта и инициируйте новое приложение DocPad:

docpad run

Если это первый запуск DocPad, вам придётся ответить на некоторые вопросы программы:

Before we continue, have you read and agree to DocPad's Terms of Service (http://bevry.me/tos) and Privacy Policy (http://bevry.me/privacy)? [Y/n] y
Would you like to subscribe to our newsletter and stay up to date with the latest releases and tutorials? [Y/n] n

Затем будет предложено выбрать «скелет» приложения. Для примера выберите Twitter Bootstrap (опция 4); эта опция создаст образец сайта, который сразу же будет доступен в браузере.

4

Сборка и запуск приложения DocPad займёт несколько минут. После успешной загрузки на экране появится такое сообщение:

info: Installed the skeleton succesfully
notice: Shutting down the global DocPad, and starting up the local
info: Welcome to DocPad v6.63.8 (local installation: /home/docpad/docpad_test/node_modules/docpad)
info: Contribute: http://docpad.org/docs/contribute
info: Plugins: cleanurls, coffeescript, downloader, eco, less, livereload, marked, partials, related, stylus, text
info: Environment: development
info: DocPad listening to http://0.0.0.0:9778/ on directory /home/docpad/docpad_test/out
info: LiveReload listening to new socket on channel /docpad-livereload
info: Generating...
info: Generated 168/173 files in 15.012 seconds
info: Watching setup starting...
info: Watching setup
info: The action completed successfully

Процесс будет продолжать работать в окне терминала.

Теперь посетите IP-адрес или домен на порте 9778:

http://example.com:9778

На экране появится стандартная домашняя страница DocPad:

Welcome to your new site! …

Позже нужно будет настроить приложение для запуска на порт 80; это устранит необходимость указывать номер порта при посещении сайта.

Чтобы остановить приложение, нажмите CTRL+C.

Если просмотреть файлы в каталоге приложения при помощи команды ls, можно увидеть следующие файлы и каталоги, сгенерированные Bootstrap skeleton:

docpad.coffee  LICENSE.md  node_modules  out  package.json  Procfile  README.md  src

Исходный код приложения находится в src.

5: Настройка порта DocPad

Чтобы запустить приложение на порт 80, отредактируйте конфигурационный файл docpad.coffee:

nano ~/docpad_test/docpad.coffee

Добавьте строку «port: 80» в блок docpadConfig = {}. Строка port должна находиться на первом уровне блока (то есть, должна следовать сразу же после строки docpadConfig = {):

docpadConfig = {
. . .
port: 80
. . .
}

Убедитесь, что вы находитесь в каталоге приложения. Запустите DocPad при помощи следующей команды. При первом запуске DocPad нужно принять лицензию, чтобы запустить приложение.

./node_modules/docpad/bin/docpad run

После успешного запуска приложения можно открыть сайт в браузере.

Если вы не можете найти сайт, попробуйте посетить http://example.com:9778. Если теперь сайт открылся, то настройка порта в файле docpad.coffee была выполнена некорректно. Вернитесь в этот файл и проверьте, не допущено ли в нём ошибок.

Затем остановите процесс, нажав Ctrl+C.

6: Скрипт Upstart для сервиса DocPad

В завершение нужно создать скрипт Upstart для приложения DocPad. Этот скрипт позволяет запускать, останавливать, перезапускать команды для приложения из командной строки. Он запускается в фоновом режиме и не требует постоянного подключения SSH. Также нужно настроить систему для автоматического перезапуска приложения в случае сбоя или презагрузки сервера.

Чтобы создать скрипт Upstart:

sudo nano /etc/init/docpad_test.conf

Внесите в файл такой код:

description "DocPad Test Application"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345] # If the process quits unexpectedly trigger a respawn
respawn
env HOME=/home/docpad/
chdir /home/docpad/docpad_test/
setuid docpad
setgid docpad
exec /home/docpad/docpad_test/node_modules/docpad/bin/docpad run

  • description: это поле содержит краткое описание сервера.
  • env HOME: домашний каталог пользователя DocPad.
  • chdir: root-каталог приложения.
  • setuid и setgid: имя и группа пользователя DocPad (должны иметь одно и то же имя).
  • exec: полный путь к версии DocPad, которую нужно запустить.

Запустите приложение из командной строки (не забудьте заменить docpad_test.conf именем своего файла):

sudo service docpad_test start

Создание приложения DocPad занимает около 30 секунд (в целом, это время зависит от размера приложения).

Затем откройте в браузере доменное имя или IP-адрес. На экране появится сайт DocPad. При желании можете запустить команду:

sudo reboot

и убедиться, что приложение восстанавливается автоматически.

Заключение

Итак, теперь сайт DocPad полностью готов к работе. Чтобы получить инструкции по разработке сайтов при помощи DocPad, обратитесь к документации проекта.

Tags: , , , , ,

Добавить комментарий