Image

Category:

Перевод: Contao быстрая разработка и разворачивание проекта

Перевод частичный: Интеграция Contao с Rails Asset Pipeline, Compass и Capistrano - http://technogate.github.io/contao/
- Contao CMS
- Rails Asset Pipline
- Compass
- Capistrano


Contao


Этот gem поможет быстро разработать сайт на Contao CMS, которая имеет встроенную поддержку Sass, Compass, CoffeeScript, Jasmine и Capistrano.
Также полезная возможность хешированные URL на материалы при помощи расширения  Contao Assets, оно добавляет MD5 к адресу URL


<link rel="stylesheet" type="text/css" href="/resources/application-c6e2457d9ccce0f344c50e5bcc12fcdc.css" />
<script type="text/javascript" src="/resources/application-327af3660470fb1c3f8e6593670cfc1e.js"></script>


Все адреса изображений в CSS файле также хешированя, так что когда вы выкладываете на сервер новую версию картинки и/или CSS, вы всегда уверены, что ваши посетители не получат кешированную копию ваших файлов.



div
   +background(image-url('body.jpg') no-repeat top center)

Создаст:


div {
   background: url(/resources/body-fc4a0f5f0b0f9ceec32bde5d15928467.jpg) no-repeat top center;
}

Compass дает мощь вашему CSS, одна из наиболее востребованных функций это спрайты, это так классно иметь один PNG файл для всех фонов, генерированный CSS так выглядит

div
   +background(sprite($background, body))

Создаст:

div {
   background: url(/resources/background-sbd69a8307b-a00c8f7a8536397c6279726316eae16f.png) 0 -3089px;
}


См. документацию Compass по Sprites.</div>
И наконец, интеграция с Capistrano позволяет вам быстро развернуть все, скопировать материалы,  импортировать базу данных и даже загрузить медиафайлы (картинки, PDF) и все из командной строки Capistrano.


Требования к установке


Перед установкой gem, удостоверьтесь что у вас Ruby версия 1.9.2 или выше т.к. этот Gem и большинство зависимостей не поддерживают Ruby 1.8, проверь версию так:

ruby --version

Обязательно установите версию 1.9 по инструкции Rbenv Installer project.

Contao зависит от Qt (для безболезненного тестирования javascript используя jasmine и jasmine-headless-webkit, как установить смотри Capybara Webkit Installation)



Установка


Установи Contao командой

gem install contao

Не забудь запустить rbenv rehash, если используешь rbenv, т.к. этот gem созадет исполняемые файл.


Имя базы данных


Локально имя базы данных такое как и приложения, т.е. если проект назвал my_project, то и БД будет также называться.

На сервере, Capistrano добавит к имени среду окружения в которой произойдет разворачивание(см. раздел Разворачивание ниже для получения подробностей), т.е. если проект назван my_project и среда разворачивания staging, имя БД будет my_project_staging


Использование


Создание файла конфигурации

Для начала использования Contao, исполняю команду

contao generate config

и следую инструкциям на экране.


Создать новый проект


Просто выполни команду:

contao new /path/to/my_project

Эта команд создаст приложение с именем my_project в каталоге /path/to, имя приложения очень важно особенно для базы данных, см. секцию Имя базы данных ниже для подробностей.

Инициализация проекта


Как только генератор проекта завершит перейди в созданный каталог проекта и подготовьте Contao запуском команды

bundle exec rake contao:bootstrap

Теперь перейдем /contao/install.php или просто перейдите на сайт и вас перенаправит к установочному скрипту, далее это обычная процедура установки Contao, см. руководство Contao.

Работаем с проектом


Чтобы работать с этой версией Contao, сначала поймите как она реально работает, см. структуру проекта для подробностей об организации файлов

Contao интегрирован с Rails, реально только функциональность asset pipeline используется, Compass также интегрирован в проект, так что вы можете разрабатывать ваш CSS используя функции Compass и mixins также как sprites.

Для начала работы запусти сервер rails командой

bundle exec foreman start

Запустит процесс на порту 9876 и будет давать материалы оттуда, расширение Contao Assets автоматом определяет, что вы  работаете в окружении для разработки (development) и будет брать материал прямо с rails сервер.

Разворачивание


Введение


Перед разворачивание проекта, нужно отредактировать файл конфигурации Capistrano в config/deploy.rb и config/deploy/development.rb.

Для обычного проекта отслеживаемого Git, не надо редактировать config/deploy.rb, но нужно редактировать config/deploy/development.rb который автодокументируется.

Многостадийность


Capistrano имеет поддержку многих стадий, можете иметь стадии development, staging, production или любый другие, всего то надо указать имя стадии в config/deploy.rb

set :stages, ['development', 'staging', 'production']

и файл конфигурации с именем стадии расположен в  config/deploy/,  Template настроен для стадий development, staging и production, но имеет только один файл конфигурации  для  development, для настройки другой стадии просто скопируй файл конфигурации  development в нужную стадию.

Подготовка сервера

Для разворачивания, сначала нужно настроить сервер, если это ваш сервер на Ngnix (Шаблоны Apache будут добавлены позже) вы можете создать файл конфигурации для вашего нового сайта, добавить пользователя в БД и создать БД командой:

bundle exec cap development deploy:server:setup

Этот шаг можно пропустить, если вы используете хостинг, то эту команду не запустить - нет прав root.

Прим.: эта команд должна использоваться единожды на стадию проекта.

Подготовка проекта

Перед разворачиванием нежно задать структуру проекта, файл localconfig.php, .htaccess, чтобы это сделать запусти команду

bundle exec cap development deploy:setup

Прим.: эта команд должна использоваться единожды на стадию проекта.

<Развернуть проект

Развернуть проект командой

bundle exec cap development deploy

Многстадийность в командах

Все команды имеют первый аргумент - название стадии, для разворачивания в другую стадию просто укажите другое имя стадии.

Шаблон Contao уже настроен по умолчанию на стадию development

set :default_stage, :development

Так что если пропустить имя стадии при вызове cap

bundle exec cap deploy

Будет произведен вызов с названием стадии по-умолчанию (например, default_stage: development)

Полезные задания Capistrano


Импорт и экспорт базы данных


Вам не нужны SSH или phpMyAdmin для экспорта или импорта резервной копии базы, в самом деле capistrano уже знает учетные данные доступа к базе, так что мы добавили несколько заданий для упрощения этого процесса.

Импортировать базу данных


Чтобы импортировать базу данных из резервной копии вы можете использовать задачу db:import. Это полезно для разворачивания сайта, который был в разработке на локальной машине.
Запомните: все следующие команды могут принимать первый аргумент "стадия разработки", когда он пропущен используется установленный в default_stage.
<Например, для импорта /path/to/project.sql используйте команду

bundle exec cap db:import /path/to/project.sql

Эта команда сначала делает резервную копию вашей БД на сервере (см. /backups каталог в каталоге вашего проекта), и затем импортирует project.sql в неё, однако вы сами должны убедиться в наличии SQL выражений DROP TABLE IF EXISTS в вашем файле резервной копии,  чтобы перезаписывать таблицы.

Экспортировать базу данных


Очень полезно экспортировать БД при необходимости перенести изменения с сервера на локальную машину разработчика

bundle exec cap db:export

Эта команда скачает файл резервной копии SQL базы данных в каталог /tmp, но вы можете указать имя вручную. Также эта команде сделает резервную копию БД на сервере.

TODO



Структура проекта

contao_template
├── Capfile
├── Gemfile
├── Procfile
├── Rakefile
├── app
│   └── assets
│       ├── images
│       ├── javascripts
│       │   └── application.js
│       └── stylesheets
│           ├── application.css.sass
│           ├── definitions
│           │   ├── _all.sass
│           │   ├── _mixins.sass
│           │   ├── _sprites.sass
│           │   └── _variables.sass
│           └── thirdparty
│               └── _pie.sass
├── config
│   ├── application.rb
│   ├── boot.rb
│   ├── compass.rb
│   ├── deploy
│   │   ├── development.rb
│   │   └── production.rb
│   ├── deploy.rb
│   ├── environment.rb
│   ├── environments
│   │   ├── development.rb
│   │   ├── production.rb
│   │   └── test.rb
│   ├── examples
│   │   └── localconfig.php.erb
│   ├── initializers
│   │   ├── secret_token.rb
│   │   └── session_store.rb
│   └── routes.rb
├── config.ru
├── contao
│   ├── plugins
│   ├── system
│   │   ├── drivers
│   │   ├── libraries
│   │   │   ├── Spyc.php -> ../../../lib/contao/libraries/spyc/spyc.php
│   │   └── modules
│   │       ├── BackupDB
│   │       ├── assets
│   │       ├── efg
│   │       ├── favicon
│   │       ├── googleanalytics
│   │       ├── listing
│   │       ├── parentslist
│   │       ├── subcolumns
│   │       ├── template-override
│   │       ├── videobox
│   │       └── videobox_vimeo
├── lib
│   ├── assets
│   │   └── javascripts
│   │       ├── form_default_values
│   │       │   ├── autoload.js.coffee
│   │       │   └── main.js.coffee
│   │       ├── form_default_values.js
│   │       └── slider.js.coffee
│   ├── contao
│   │   └── libraries
│   │       └── spyc
│   └── tasks
├── public
├── script
│   └── rails
├── spec
│   └── javascripts
│       ├── fixtures
│       │   └── slider.html
│       ├── helpers
│       │   └── spec_helper.js.coffee
│       ├── slider_spec.coffee
│       └── support
│           └── jasmine.yml
└── vendor
└── assets
├── javascripts
└── stylesheets

Лицензия