Развёртывание приложения DocPad на сервере Ubuntu 14.04
Java, Ubuntu, VPS | Комментировать запись
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: DocPad, Git, Node.js, npm, Ubuntu 14.04, Upstart