Создание приложения Node.js при помощи Sails.js на сервере Ubuntu

Что такое Sails.js?

Sails.js – это фреймворк, который позволяет быстро собирать пользовательские приложения Node.js корпоративного класса. Он разработан на основе шаблона MVC (Model-View-Controller), как Ruby On Rails, но также поддерживает требования современных приложений: программные интерфейсы с масштабируемой, сервисно-ориентированной архитектурой. Этот фреймворк особенно хорошо подходит для разработки чатов, инструментальных панелей реального времени и многопользовательских игр.

Другими словами, Sails.js позволяет быстро собирать приложения Node.js по шаблону MVC с легко поддерживаемым кодом. Также Sails.js предоставляет различные команды для автоматизации создания моделей и контроллеров, экономя время и силы разработчика. Виды нужно создавать вручную в каталоге /views согласно шаблону /views/:controller/:method.ejs. Также можно использовать различные языки шаблонов, хотя проще и безопаснее пользоваться стандартным языком – EJS.

Sails.js также оборудован различными адаптерами, что позволяет использовать практически любую базу данных и обеспечивает максимальную гибкость, в отличие от многих других фреймворков на основе MVC, которые привязываются к MongoDB.

Кроме того, при развёртывании все файлы проходят процедуру конкатенации и минификации.

Примечание: Код, выделенный красным, нужно отредактировать или самостоятельно ввести. Остальное можно просто скопировать и вставить.

Установка Node.js

Установите зависимости:

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:

sudo apt-get install nodejs

Установка Sails.js

Чтобы установить последний доступный релиз фреймворка, запустите:

sudo npm install sails -g

Флаг –g выполняет глобальную установку, благодаря чему sails можно использовать как инструмент командной строки.

Создание приложения Sails.js

Перейдите в каталог для приложения (в данном случае это /var/www) и запустите:

sails new project-name

Это добавит необходимые файлы и создаст каталог по имени project-name.

Запуск сервера Sails.js

Чтобы просмотреть шаблон приложения, перейдите в каталог проекта, а затем запустите сервер:

cd project-name
sails lift

Это создаст сервер, запущенный на 123.456.78.90:1337. Откройте ссылку, чтобы просмотреть приветственную страницу приложения.

Создание контроллера

Создать контроллер достаточно просто, так как Sails.js самостоятельно выполняет самую сложную часть работы. Чтобы создать контроллер по имени user с методами «index, show, edit, delete», используйте:

sails generate controller user index show edit delete

Это создаст в каталоге api/controllers файл по имени UserController.js, содержимое которого выглядит примерно так (обратите внимание на полезные подсказки и объяснения):

/*---------------------
:: User
-> controller
---------------------*/
var UserController = {
// To trigger this action locally, visit: 'http://localhost:port/user/index'
index: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/index.ejs
res.view();
},
// To trigger this action locally, visit: 'http://localhost:port/user/show'
show: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/show.ejs
res.view();
},
// To trigger this action locally, visit: 'http://localhost:port/user/edit'
edit: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/edit.ejs
res.view();
},
// To trigger this action locally, visit: 'http://localhost:port/user/delete'
delete: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/delete.ejs
res.view();
},
};
module.exports = UserController;

Создание модели

Создать модель Sails.js так же просто, как контроллер. Не нужно беспокоиться о перемещении баз данных, так как Sails.js выполняет это самостоятельно. Кроме того, можно использовать базу данных по умолчанию, MySQL или многие другие СУБД с помощью адаптеров, которые можно найти в репозитории проекта на GitHub.

При создании модели нужно указать поля, которые будут добавлены в эту модель. Для этого используется формат [name]:[type].

Например, чтобы создать модель по имени user с полями «name, email, password», нужно просто запустить команду:

sails generate model user name:string email:string password:string

Эта команда создаст файл User.js в каталоге api/models. Содержимое файла выглядит примерно так:

/*---------------------
:: User
-> model
---------------------*/
module.exports = {
attributes: {
// Simple attribute:
// name: 'STRING',
// Or for more flexibility:
// phoneNumber: {
//    type: 'STRING',
//    defaultsTo: '555-555-5555'
// }
name: {
type: 'STRING'
},
email: {
type: 'STRING'
},
password: {
type: 'STRING'
},
}
};

Создание Blueprint-интерфейса

Контроллер и модель можно создать одновременно, создавая Blueprint интерфейс, который позволит просмотреть /user.

sails generate user

Интерфейс Blueprint экономит время, автоматически создавая соединения между моделью и контроллером, позволяя добавлять записи в БД при помощи этого маршрута; например, если перейти по http://localhost/user/create?name=John+Smith, в БД добавится запись John Smith, а на экране появится массив JSON всех записей в этой модели:

{"name":"John Smith","createdAt":"2013-07-10T20:10:01.038Z","updatedAt":"2013-07-10T20:10:01.038Z","id":1}

Каждый созданный таким образом контроллер по умолчанию содержит методы create(), find(), findAll(), update(), and destroy(); скорее всего, позже нужно будет добавить или изменить методы в контроллере, но для начала неплохо.

Данные можно добавить и при помощи POST-запроса со строкой данных JSON, например:

{
name: 'John Smith'
}

Добавление маршрутов

Маршруты можно добавить в config/routes.js; этот файл отлично документирован.

Режим производства

Когда приложение готово к развёртыванию в производство, переместите го с порта 1337 на порт 80. В Sails.js это очень просо.

Откройте config/application.js. Если это единственное приложение на сервере, замените:

port: 1337,
строкой
port: 80,

Если на сервере размещено несколько приложений и вы используете NGINX, отредактируйте файл блока server, добавив в него:

location / {
proxy_pass         http://127.0.0.1:1337/;
proxy_redirect     off;
proxy_set_header   Host             $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

Оставьте Sails.js на порте 1337.

Если на сервере размещено несколько приложений и вы используете Apache, отредактируйте файл виртуального хоста, внеся в него:

ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:1337
ProxyPassReverse / http://127.0.0.1:1337

Оставьте Sails.js на порте 1337.

Затем замените строку:

environment: 'development'

следующей строкой:

environment: 'production'

Установите forever:

sudo npm install -g forever

Примечание: Forever – это пакет node.js, позволяющий запускать приложения в фоновом режиме.

Затем запустите:

forever start /path/to/app.js

Это запустит процесс в фоновом режиме. Чтобы убедиться, что приложение перешло в фоновый режим, введите:

forever list

Эта команда вернёт список процессов node.js.

Tags: , , , ,

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