PrometheusRuby: различия между версиями

Материал из ALT Linux Wiki
(Первая версия)
 
(викификация страницы)
Строка 1: Строка 1:
По просьбе трудящихся привожу маленькое руководство по заведению своего
По просьбе трудящихся привожу маленькое руководство по заведению своего маленького-локального prometheus.
маленького-локального prometheus.


Для начала нам потребуется rvm (https://rvm.beginrescueend.com/)
Для начала нам потребуется rvm (https://rvm.beginrescueend.com/) которым мы поставим нужный нам ruby 1.9.3p125. На сайте rvm достаточно хорошо расписано как его поставить. Вместо rvm можно использовать rbenv, но это уже вкусовщина. После чего нам потребуется следующее:
которым мы поставим нужный нам ruby 1.9.3p125. На сайте rvm достаточно
хорошо расписано как его поставить. Вместо rvm можно использовать
rbenv, но это уже вкусовщина. После чего нам потребуется следующее:


0) Поставить базовую систему для сборки (gcc/gcc-c++/make/etc).
* Поставить базовую систему для сборки (gcc/gcc-c++/make/etc). Поставить libxml-devel, libxslt-devel, zlib-devel и libssl-devel. Поставить redis, postgresql, memcached, sphinx, gettext, node, git, nginx, coreutils. nginx нужен только для production. coreutils у всех уже и так стоит. :) К postgresql не забываем про его devel пакеты. Для gettext — пакет который содержит всякие msgmerge и etc.
Поставить libxml-devel, libxslt-devel, zlib-devel и libssl-devel.
 
Поставить redis, postgresql, memcached, sphinx, gettext, node, git, nginx, coreutils. nginx нужен
* Поставить ruby 1.9.3p125:
только для production. coreutils у всех уже и так стоит. :) К
postgresql не забываем про его devel пакеты. Для gettext -- пакет
который содержит всякие msgmerge и etc. (Точных имён пакетов для
Sisyphus я сейчас сказать не могу, у меня сейчас osx только под
рукой.)


1) Поставить ruby 1.9.3p125:
   $ rvm install 1.9.3
   $ rvm install 1.9.3


2) Делаем его дефолтовым для shell:
* Делаем его дефолтовым для shell:
 
   $ rvm --default 1.9.3
   $ rvm --default 1.9.3


3) Ставим rubygems 1.8.19:
* Ставим rubygems 1.8.19:
 
   $ rvm rubygems 1.8.19
   $ rvm rubygems 1.8.19


4) Ставим bundler:
* Ставим bundler:
 
   $ gem install bundler
   $ gem install bundler


5) Клоним репозиторий:
* Клоним репозиторий:
 
   $ git clone git://github.com/biow0lf/prometheus2.0.git
   $ git clone git://github.com/biow0lf/prometheus2.0.git


6) Заходим шеллом в prometheus2.0 и подтверждаем что мы доверяем
* Заходим шеллом в prometheus2.0 и подтверждаем что мы доверяем .rvmrc (если этого не сделать то mc будет «зависать» при попытке зайти
.rvmrc (если этого не сделать то mc будет "зависать" при попытке зайти
в папку):
в папку):
$ cd prometheus2.0/
==============================================================================
= NOTICE                                                                    =
==============================================================================
= RVM has encountered a new or modified .rvmrc file in the current directory =
= This is a shell script and therefore may contain any shell commands.      =
=                                                                            =
= Examine the contents of this file carefully to be sure the contents are    =
= safe before trusting it! ( Choose v[iew] below to view the contents )      =
==============================================================================
Do you wish to trust this .rvmrc file?
(/Users/biow0lf/tmp/prometheus/prometheus2.0/.rvmrc)
y[es], n[o], v[iew], c[ancel]> y
Using /Users/biow0lf/.rvm/gems/ruby-1.9.3-p125
$


7) Ставим все нужные джемы через bundler. Эта команда поставит все
  $ cd prometheus2.0/
нужные джемы для ruby (в том числе и бинарые, которые будут собраны
 
при установке из исходников). А так же сделает клоны git репозиториев
  =============================================================================
из которых используются джемы из master.
  =============================================================================
  = NOTICE =
 
  =============================================================================
  =============================================================================
  = RVM has encountered a new or modified .rvmrc file in the current directory =
  = This is a shell script and therefore may contain any shell commands. =
  =  =
  = Examine the contents of this file carefully to be sure the contents are =
  = safe before trusting it! (Choose v[iew] below to view the contents) =
 
  =============================================================================
  =============================================================================
  Do you wish to trust this .rvmrc file?
  (/Users/biow0lf/tmp/prometheus/prometheus2.0/.rvmrc)
  y[es], n[o], v[iew], c[ancel]> y
  Using /Users/biow0lf/.rvm/gems/ruby-1.9.3-p125
  $
 
* Ставим все нужные джемы через bundler. Эта команда поставит все нужные джемы для ruby (в том числе и бинарые, которые будут собраны при установке из исходников). А так же сделает клоны git репозиториев из которых используются джемы из master.
 
   $ bundle
   $ bundle


8) Теперь надо настроить базы данных для сайта (production,
* Теперь надо настроить базы данных для сайта (production, development и test). Скопируем config/database.yml.sample в config/database.yml. И отредактируем его. Создаём базы в postgresql.
development и test). Скопируем config/database.yml.sample в
 
config/database.yml. И отредактируем его. Создаём базы в postgresql.
* Теперь настроим redis. Для этого надо скопировать config/redis.yml.sample в config/redis.yml.


9) Теперь настроим redis. Для этого надо скопировать
* Создадим базу и мигрирует на последнюю версию схемы данных:
config/redis.yml.sample в config/redis.yml.


10) Создадим базу и мигрирует на последнюю версию схемы данных:
  $ bundle exec rake db:create db:schema:load


$ bundle exec rake db:create db:schema:load
* и для test окружения также:


и для test окружения также:
  $ RAILS_ENV=test bundle exec rake db:create db:schema:load


$ RAILS_ENV=test bundle exec rake db:create db:schema:load
* Если всё было сделано правильно, то теперь можно запустить тесты и убедиться что они проходят.


Если всё было сделано правильно, то теперь можно запустить тесты и
  $ bundle exec rake
убедиться что они проходят.


$ bundle exec rake
* Теперь о том как запустить локальную версию для разработки.


Теперь о том как запустить локальную версию для разработки.
1) Запускаем в соседнем терминале redis-server (или сервис если такое
1) Запускаем в соседнем терминале redis-server (или сервис если такое
есть). Для тестов этого делать не надо т.к. в них используется
есть). Для тестов этого делать не надо так как в них используется
fakeredis gem.
fakeredis gem.


2) Запускаем rails сервер:
2) Запускаем rails сервер:


$ bundle exec rails server
  $ bundle exec rails server


или более коротко:
или более коротко:


$ bundle exec rails s
  $ bundle exec rails s


Всё классно, но у нас данных в базе нет. Для этого нам понадобится
Всё классно, но у нас данных в базе нет. Для этого нам понадобится
Строка 95: Строка 90:
1) Нам нужны начальные данные (бранчи, зеркала etc. лежат в db/seeds.rb):
1) Нам нужны начальные данные (бранчи, зеркала etc. лежат в db/seeds.rb):


$ bundle exec rake db:seed
  $ bundle exec rake db:seed


2) Теперь сами пакеты. В начале надо исправить путь к бранчу. К
2) Теперь сами пакеты. В начале надо исправить путь к бранчу. К
примеру, если бранч у нас Sisyphus, то надо исправить
примеру, если бранч у нас Sisyphus, то надо исправить
lib/tasks/sisyphus.rake. Т.е. "/ALT/Sisyphus/" заменить на правильный
lib/tasks/sisyphus.rake. То есть «/ALT/Sisyphus/» заменить на правильный
путь на файловой системе. Ну а дальше:
путь на файловой системе. Ну а дальше:


$ bundle exec rake sisyphus:srpms
  $ bundle exec rake sisyphus:srpms
$ bundle exec rake sisyphus:binary
  $ bundle exec rake sisyphus:binary
$ bundle exec rake sisyphus:acls
  $ bundle exec rake sisyphus:acls
$ bundle exec rake sisyphus:leaders (сломано в текущий момент, так что
  $ bundle exec rake sisyphus:leaders #(сломано в текущий момент, так что этот пункт нужно сейчас пропускать)
этот пункт нужно сейчас пропускать)
  $ bundle exec rake sisyphus:teams #(сломано в текущий момент, так что этот пункт нужно сейчас пропускать)
$ bundle exec rake sisyphus:teams (сломано в текущий момент, так что
  $ bundle exec rake sisyphus:bugs
этот пункт нужно сейчас пропускать)
  $ bundle exec rake sisyphus:repocops
$ bundle exec rake sisyphus:bugs
  $ bundle exec rake sisyphus:repocop_patches
$ bundle exec rake sisyphus:repocops
  $ bundle exec rake gear:import
$ bundle exec rake sisyphus:repocop_patches
  $ bundle exec rake perlwatch:update
$ bundle exec rake gear:import
  $ bundle exec rake ftbfs:update
$ bundle exec rake perlwatch:update
$ bundle exec rake ftbfs:update


После этого у нас с базе лежат все данные из Сизифа.
После этого у нас с базе лежат все данные из Сизифа.
Строка 120: Строка 113:
3) Закешируем данные в redis:
3) Закешируем данные в redis:


$ bundle exec rake redis:cache
  $ bundle exec rake redis: cache


Теперь пара слов и поиске. Для того что поиск заработал локально нужно:
Теперь пара слов и поиске. Для того что поиск заработал локально нужно:
1) Создать конфиг для sphinx:
1) Создать конфиг для sphinx:


$ bundle exec rake thinking_sphinx:configure
  $ bundle exec rake thinking_sphinx: configure


2) Создать индекс:
2) Создать индекс:


$ bundle exec rake thinking_sphinx:index
  $ bundle exec rake thinking_sphinx: index


3) Запустить сам sphinx:
3) Запустить сам sphinx:


$ bundle exec rake thinking_sphinx:start
  $ bundle exec rake thinking_sphinx: start


4) Останаливать sphinx так:
4) Останаливать sphinx так:


$ bundle exec rake thinking_sphinx:stop
  $ bundle exec rake thinking_sphinx: stop


Эти все шаги описаны для development/test окружений. Для production
Эти все шаги описаны для development/test окружений. Для production

Версия от 23:57, 7 апреля 2012

По просьбе трудящихся привожу маленькое руководство по заведению своего маленького-локального prometheus.

Для начала нам потребуется rvm (https://rvm.beginrescueend.com/) которым мы поставим нужный нам ruby 1.9.3p125. На сайте rvm достаточно хорошо расписано как его поставить. Вместо rvm можно использовать rbenv, но это уже вкусовщина. После чего нам потребуется следующее:

  • Поставить базовую систему для сборки (gcc/gcc-c++/make/etc). Поставить libxml-devel, libxslt-devel, zlib-devel и libssl-devel. Поставить redis, postgresql, memcached, sphinx, gettext, node, git, nginx, coreutils. nginx нужен только для production. coreutils у всех уже и так стоит. :) К postgresql не забываем про его devel пакеты. Для gettext — пакет который содержит всякие msgmerge и etc.
  • Поставить ruby 1.9.3p125:
 $ rvm install 1.9.3
  • Делаем его дефолтовым для shell:
 $ rvm --default 1.9.3
  • Ставим rubygems 1.8.19:
 $ rvm rubygems 1.8.19
  • Ставим bundler:
 $ gem install bundler
  • Клоним репозиторий:
 $ git clone git://github.com/biow0lf/prometheus2.0.git
  • Заходим шеллом в prometheus2.0 и подтверждаем что мы доверяем .rvmrc (если этого не сделать то mc будет «зависать» при попытке зайти

в папку):

 $ cd prometheus2.0/
 
 =============================================================================
 =============================================================================
 = NOTICE =
 
 =============================================================================
 =============================================================================
 = RVM has encountered a new or modified .rvmrc file in the current directory =
 = This is a shell script and therefore may contain any shell commands. =
 =  =
 = Examine the contents of this file carefully to be sure the contents are =
 = safe before trusting it! (Choose v[iew] below to view the contents) =
 
 =============================================================================
 =============================================================================
 Do you wish to trust this .rvmrc file?
 (/Users/biow0lf/tmp/prometheus/prometheus2.0/.rvmrc)
 y[es], n[o], v[iew], c[ancel]> y
 Using /Users/biow0lf/.rvm/gems/ruby-1.9.3-p125
 $
  • Ставим все нужные джемы через bundler. Эта команда поставит все нужные джемы для ruby (в том числе и бинарые, которые будут собраны при установке из исходников). А так же сделает клоны git репозиториев из которых используются джемы из master.
 $ bundle
  • Теперь надо настроить базы данных для сайта (production, development и test). Скопируем config/database.yml.sample в config/database.yml. И отредактируем его. Создаём базы в postgresql.
  • Теперь настроим redis. Для этого надо скопировать config/redis.yml.sample в config/redis.yml.
  • Создадим базу и мигрирует на последнюю версию схемы данных:
 $ bundle exec rake db:create db:schema:load
  • и для test окружения также:
 $ RAILS_ENV=test bundle exec rake db:create db:schema:load
  • Если всё было сделано правильно, то теперь можно запустить тесты и убедиться что они проходят.
 $ bundle exec rake
  • Теперь о том как запустить локальную версию для разработки.

1) Запускаем в соседнем терминале redis-server (или сервис если такое есть). Для тестов этого делать не надо так как в них используется fakeredis gem.

2) Запускаем rails сервер:

 $ bundle exec rails server

или более коротко:

 $ bundle exec rails s

Всё классно, но у нас данных в базе нет. Для этого нам понадобится срез Сизифа или любого другого бранча. Или даже все бранчи. Берём rsync и вытягиваем например Сизиф.

1) Нам нужны начальные данные (бранчи, зеркала etc. лежат в db/seeds.rb):

 $ bundle exec rake db:seed

2) Теперь сами пакеты. В начале надо исправить путь к бранчу. К примеру, если бранч у нас Sisyphus, то надо исправить lib/tasks/sisyphus.rake. То есть «/ALT/Sisyphus/» заменить на правильный путь на файловой системе. Ну а дальше:

 $ bundle exec rake sisyphus:srpms
 $ bundle exec rake sisyphus:binary
 $ bundle exec rake sisyphus:acls
 $ bundle exec rake sisyphus:leaders #(сломано в текущий момент, так что этот пункт нужно сейчас пропускать)
 $ bundle exec rake sisyphus:teams #(сломано в текущий момент, так что этот пункт нужно сейчас пропускать)
 $ bundle exec rake sisyphus:bugs
 $ bundle exec rake sisyphus:repocops
 $ bundle exec rake sisyphus:repocop_patches
 $ bundle exec rake gear:import
 $ bundle exec rake perlwatch:update
 $ bundle exec rake ftbfs:update

После этого у нас с базе лежат все данные из Сизифа.

3) Закешируем данные в redis:

 $ bundle exec rake redis: cache

Теперь пара слов и поиске. Для того что поиск заработал локально нужно: 1) Создать конфиг для sphinx:

 $ bundle exec rake thinking_sphinx: configure

2) Создать индекс:

 $ bundle exec rake thinking_sphinx: index

3) Запустить сам sphinx:

 $ bundle exec rake thinking_sphinx: start

4) Останаливать sphinx так:

 $ bundle exec rake thinking_sphinx: stop

Эти все шаги описаны для development/test окружений. Для production кое что изменится, но описывать это здесь смысла не имеет.

Исходники лежат на https://github.com/biow0lf/prometheus2.0 и там действует правило: один хороший принятый коммит == доступ на коммит. Ну что, кто хочет стать героем? :)

Удачи!