Geddy.JS: простейший фреймворк Node.js
Debian, Java, Ubuntu | Комментировать запись
Geddy.JS – это полноценный открытый MVC-фреймворк, основанный на методологии ruby on rails, с интеграцией socket.io и встроенным модулем авторизации passportjs. Для создания надёжных приложений в реальном времени Geddy.JS требуется всего несколько команд. В целом же фреймворк предоставляет довольно большой набор команд, которые работают через интерфейс командной строки и позволяют автоматизировать большинство рутинных задач, например, создание модели, контроллера, вида и даже настройку аутентификации интеграцию socket.io. Таким образом Geddy позволят разработчику сосредоточиться на основной логике приложения.
Кроме того, Geddy поддерживает широкий диапазон шаблонизаторов; стандартным шаблонизатором является EJS.
Geddy.JS использует встроенный модуль кластеризации Node.js для работы с многоядерными процессорами. Таким образом, Node.js приложение получается довольно простым, но автоматически использует несколько ядер.
1: Подготовка системы
Для начала установите Node.js и npm.
sudo apt-get install python-software-properties python g++ make
В Ubuntu 12.10 и более старых системах нужно также запустить:
sudo apt-get install software-properties-common
Добавьте репозиторий PPA, рекомендуемый разработчиками Node.js.
sudo add-apt-repository ppa:chris-lea/node.js
Обновите список пакетов системы:
sudo apt-get update
Установите Node.js и npm:
sudo apt-get install nodejs
2: Установка Geddy.js
Чтобы установить фреймворк глобально, используйте:
sudo npm install -g geddy
3: Структура Geddy.js
Каждое приложение Geddy.js основано на принципе MVC и помещается отдельный каталог; также требуются отдельные файлы для моделей, контроллеров и видов.
Генераторы Geddy.js
Генераторы Geddy.js – это доступные списки команд, которые позволяют облегчить процесс разработки.
Команда geddy gen используется для создания нового приложения, модели и контроллера, а также может выполнять множество других рутинных задач разработки.
geddy gen app your_app
Эта команда создаст новое приложение по имени your_app и поместит его в одноимённый каталог в рабочем каталоге.
geddy gen resource profile name:string
Эта команда создаст ресурс (модель+контроллер+маршрут) по имени profile, содержащий модель типа string. Если тип не был указан, тип string будет установлен автоматически. Все необходимые атрибуты можно внести в команду или позже добавить их вручную в файл модели (app/models/profile.js).
geddy gen secret
Эта команда удаляет существующие и создаёт новые secret приложения. Session Secret используется для вычисления хэша, потому без secret вам будет отказано в доступе к сессии; это предотвращает захват сессии. У этой команды нет аргументов.
geddy gen controller
Эта команда создаёт контроллер, вид и маршрут к контроллеру.
geddy gen model notes title:default content:string
Данная команда создаёт модель о свойствами title и content. При отображении модели используется свойство default. Чтобы свойством по умолчанию сделать тип integer, нужно использовать title:int:default. В Geddy свойство ID всегда создается автоматически и является свойством по умолчанию, если не указано другое. Этот ID совпадает с соответствующим документом MongoDB.
geddy gen scaffold personal_detail name:string
Эта команда выполняет scaffold ресурса и по имени personal_detail и создаёт его макет, в котором можно добавлять, просматривать и удалять отдельные записи при помощи браузера.
Во время scaffolding-а есть возможность задать шаблонизатор для видов. Можно использовать шаблонизаторы swig, jade, handle or mustache; стандартным шаблонизатором является EJS. Например:
geddy gen scaffold personal_detail --jade
Создание приложения со встроенной авторизацией чрез Facebook
Выполните scaffold тестового приложения:
geddy gen app Edupi
Перейдите в каталог приложения:
cd Edupi
Выполните scaffold авторизации на основе passport.js для нового приложения.
Примечание: Не стоит выполнять scaffold для ранее созданных приложений, поскольку это может повлиять на их код.
geddy auth
Откройте developers.facebook.com и получите Secret key для приложения. Это делается следующим образом:
- Кликните Apps.
- Выберите Create new App в верхнем правом углу (для этого нужно зарегистрироваться).
- Заполните появившуюся форму и нажмите Continue.
- Выберите Website with Facebook Login и введите url или IP сервера. Можно указать IP виртуального сервера (http://192.168.1.2:80/), но если вы просто хотите протестировать работу приложения на локальной машине, введите http://localhost:4000/.
- На этой же странице запишите App ID и App Secret, а затем нажмите Save Changes.
Примечание: Ни при каких обстоятельствах не раскрывайте App ID и App Secret.
Вернитесь в каталог приложения и откройте файл config/secrets.json.
{
"passport": {
"successRedirect": "/",
"failureRedirect": "/login",
"twitter": {
"consumerKey": "XXXXXX",
"consumerSecret": "XXXXXX"
},
"facebook": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
},
"yammer": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
}
}
}
Директива successRedirect – это путь, который вернётся пользователю в случае успешной авторизации. Директива failureRedirect задаёт url-адрес, по которому будет переадресован пользователь в случае ввода некорректных учётных данных. К примеру, строка:
"successRedirect": "http://localhost:4000/login/"
вернёт ошибку. В случае изменения маршрутов можно изменить значения этих директив.
Внесите в файл AppId как значение clientID и App Secret как значение Client Secret.
{
"passport": {
"successRedirect": "/",
"failureRedirect": "/login",
"twitter": {
"consumerKey": "XXXXXX",
"consumerSecret": "XXXXXX"
},
"facebook": {
"clientID": "670657392948407",
"clientSecret": "1beefd26e84f7e7adb4eb8a371c41af8"
},
"yammer": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
}
}
}
Сохраните и закройте файл. Запустите сервер:
geddy app
Теперь в приложение встроена авторизация через аккаунт facebook. Во время авторизации в сессию пользователя будут добавлены userId (ID пользователя в mongodb) и authtype (вданном случае это facebook).
Проверьте эти переменные в контроллерах.
Настройка HTTPS
Фреймворк Geddy поддерживает HTTPS через SSL/TLS или SPDY. Чтобы включить эту поддержку, просто добавьте данные сертификата в файл конфигураций. Опции key и cert являются обязательными, остальные параметры, доступные для HTTPS и модуля spdy, являются опциональными.
Чтобы добавить SSL/TLS, просто внесите в конфигурационный файл следующее:
// ...
, ssl: {
key: 'config/key.pem',
cert: 'config/cert.pem'
}
// ...
Чтобы включить поддержку SPDY, добавьте:
// ...
, spdy: {
key: 'config/key.pem',
cert: 'config/cert.pem'
}
// ...
Предполагается, что key.pem и cert.pem находятся в конфигурационном каталоге. Остальное фреймворк обрабатывает самостоятельно.
Режим производства
Создайте файл по имени app.js со следующим содержимым:
var geddy = require('geddy');
geddy.start({
environment: 'production'
});
Используйте Forever, чтобы запустить приложение в фоновом режиме. Чтобы установить Forever:
sudo npm install forever -g
Чтобы запустить приложение, перейдите в каталог, в котором находится app.js и выполните:
forver start app.js
Теперь в случае возникновения ошибки приложение восстановится автоматически.
Tags: Facebook, Geddy.js, HTTPS, MVC, Node.js, Ubuntu 12.10