Prometheus

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(Первая версия)
(Обновление страницы для свежего ruby, etc.)
 
(3 промежуточные версии не показаны)
Строка 1: Строка 1:
-
По просьбе трудящихся привожу маленькое руководство по заведению своего
+
По просьбе трудящихся привожу маленькое руководство по заведению своего маленького-локального prometheus.
-
маленького-локального prometheus.
+
-
Для начала нам потребуется rvm (https://rvm.beginrescueend.com/)
+
Для начала нам потребуется rvm (http://rvm.io/) которым мы поставим нужный нам ruby 2.1.0. На сайте rvm достаточно хорошо расписано как его поставить. Вместо rvm можно использовать rbenv (https://github.com/sstephenson/rbenv) + ruby-build (https://github.com/sstephenson/ruby-build), но это уже вкусовщина. После чего нам потребуется следующее:
-
которым мы поставим нужный нам 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 нужен
+
-
только для production. coreutils у всех уже и так стоит. :) К
+
-
postgresql не забываем про его devel пакеты. Для gettext -- пакет
+
-
который содержит всякие msgmerge и etc. (Точных имён пакетов для
+
-
Sisyphus я сейчас сказать не могу, у меня сейчас osx только под
+
-
рукой.)
+
-
1) Поставить ruby 1.9.3p125:
+
* Поставить ruby 2.1.0:
-
  $ rvm install 1.9.3
+
-
2) Делаем его дефолтовым для shell:
+
   $ rvm install 2.1.0
-
   $ rvm --default 1.9.3
+
-
3) Ставим rubygems 1.8.19:
+
* Делаем его дефолтовым для shell:
-
   $ rvm rubygems 1.8.19
+
 
 +
   $ 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 и там
-
действует правило: один хороший принятый коммит == доступ на коммит.
+
действует правило: принятый коммит == доступ на коммит в репозиторий.
Ну что, кто хочет стать героем? :)
Ну что, кто хочет стать героем? :)
Удачи!
Удачи!

Текущая версия на 10:25, 14 февраля 2014

По просьбе трудящихся привожу маленькое руководство по заведению своего маленького-локального 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 и там действует правило: принятый коммит == доступ на коммит в репозиторий. Ну что, кто хочет стать героем? :)

Удачи!

 
Личные инструменты