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

Материал из ALT Linux Wiki
(Первая версия)
 
м (Paksa переименовал страницу Prometheus в PrometheusRuby: Готовится новая статья по системе Prometheus )
 
(не показано 8 промежуточных версий 3 участников)
Строка 1: Строка 1:
По просьбе трудящихся привожу маленькое руководство по заведению своего
[[category:инфраструктура]]
маленького-локального prometheus.
[[category:devel]]
[[category:ruby]]


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


0) Поставить базовую систему для сборки (gcc/gcc-c++/make/etc).
Для начала нам потребуется rvm (http://rvm.io/), которым мы поставим нужный нам ruby 2.1.0. На сайте rvm достаточно хорошо расписано как его поставить. Вместо rvm можно использовать rbenv (https://github.com/sstephenson/rbenv) + ruby-build (https://github.com/sstephenson/ruby-build), но это уже вкусовщина. После чего нам потребуется следующее:
Поставить 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. (Точных имён пакетов для
Sisyphus я сейчас сказать не могу, у меня сейчас osx только под
рукой.)


1) Поставить ruby 1.9.3p125:
* Поставить базовую систему для сборки (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.
  $ rvm install 1.9.3


2) Делаем его дефолтовым для shell:
* Поставить ruby 2.1.0:
  $ rvm --default 1.9.3


3) Ставим rubygems 1.8.19:
  $ rvm install 2.1.0
   $ rvm rubygems 1.8.19
 
* Делаем его дефолтовым для shell:
 
   $ rvm --default 2.1.0
 
* Проверяем версию rubygems, она должна быть 2.2.2 или выше:
 
  $ gem -v
 
* Ставим bundler:


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


5) Клоним репозиторий:
* Проверяем версию bundler, она должно быть 1.5.3 или выше:
 
  $ bundle -v
 
 
* Клоним репозиторий:
 
   $ git clone git://github.com/biow0lf/prometheus2.0.git
   $ git clone git://github.com/biow0lf/prometheus2.0.git


6) Заходим шеллом в prometheus2.0 и подтверждаем что мы доверяем
* Ставим все нужные джемы через bundler. Эта команда поставит все нужные джемы для ruby (в том числе и бинарые, которые будут собраны при установке из исходников). А так же сделает клоны git репозиториев из которых используются джемы из master.
.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. Эта команда поставит все
нужные джемы для 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.
 
* Создадим базу и мигрирует на последнюю версию схемы данных:
 
  $ bundle exec rake db:create db:schema:load
 
* и для test окружения также:


9) Теперь настроим redis. Для этого надо скопировать
  $ RAILS_ENV=test bundle exec rake db:create db:schema:load
config/redis.yml.sample в config/redis.yml.


10) Создадим базу и мигрирует на последнюю версию схемы данных:
* Если всё было сделано правильно, то теперь можно запустить тесты и убедиться что они проходят.


$ bundle exec rake db:create db:schema:load
  $ bundle exec rake


и для test окружения также:
* Теперь о том как запустить локальную версию для разработки.


$ RAILS_ENV=test bundle exec rake db:create db:schema:load
* Запускаем сервис redis:


Если всё было сделано правильно, то теперь можно запустить тесты и
  # service redis start
убедиться что они проходят.


$ bundle exec rake
* Для тестов этого делать не надо так как в них используется fakeredis gem.


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


2) Запускаем rails сервер:
  $ bundle exec rails server


$ bundle exec rails server
* или более коротко:


или более коротко:
  $ bundle exec rails s


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


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


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


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


2) Теперь сами пакеты. В начале надо исправить путь к бранчу. К
  $ bundle exec rake sisyphus:srpms
примеру, если бранч у нас Sisyphus, то надо исправить
  $ bundle exec rake sisyphus:binary
lib/tasks/sisyphus.rake. Т.е. "/ALT/Sisyphus/" заменить на правильный
  $ 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


$ 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


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


3) Закешируем данные в redis:
  $ bundle exec rake redis:cache


$ bundle exec rake redis:cache
* Теперь пара слов и поиске. Для того что поиск заработал локально нужно:


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


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


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


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


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


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


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


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


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


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


Удачи!
Удачи!

Текущая версия от 14:43, 28 декабря 2022


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

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

  • Поставить базовую систему для сборки (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 2.1.0:
 $ rvm install 2.1.0
  • Делаем его дефолтовым для shell:
 $ rvm --default 2.1.0
  • Проверяем версию rubygems, она должна быть 2.2.2 или выше:
 $ gem -v
  • Ставим bundler:
 $ gem install bundler
  • Проверяем версию bundler, она должно быть 1.5.3 или выше:
 $ bundle -v


  • Клоним репозиторий:
 $ git clone git://github.com/biow0lf/prometheus2.0.git
  • Ставим все нужные джемы через 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
  • Теперь о том как запустить локальную версию для разработки.
  • Запускаем сервис redis:
 # service redis start
  • Для тестов этого делать не надо так как в них используется fakeredis gem.
  • Запускаем rails сервер:
 $ bundle exec rails server
  • или более коротко:
 $ bundle exec rails s
  • Всё классно, но у нас данных в базе нет. Для этого нам понадобится срез Сизифа или любого другого бранча. Или даже все бранчи. Берём rsync и вытягиваем например Сизиф.
  • Нам нужны начальные данные (бранчи, зеркала etc. лежат в db/seeds.rb):
 $ bundle exec rake db:seed
  • Теперь сами пакеты. В начале надо исправить путь к бранчу. К примеру, если бранч у нас 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
  • После этого у нас с базе лежат все данные из Сизифа.
  • Закешируем данные в redis:
 $ bundle exec rake redis:cache
  • Теперь пара слов и поиске. Для того что поиск заработал локально нужно:
  • Создать конфиг для sphinx:
 $ bundle exec rake thinking_sphinx:configure
  • Создать индекс:
 $ bundle exec rake thinking_sphinx:index
  • Запустить сам sphinx:
 $ bundle exec rake thinking_sphinx:start
  • Останаливать sphinx так:
 $ bundle exec rake thinking_sphinx:stop
  • Эти все шаги описаны для development/test окружений. Для production кое-что изменится, но описывать это здесь смысла не имеет.

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

Удачи!