Prometheus
Материал из 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, но это уже вкусовщина. После чего нам потребуется следующее: | + | |
- | + | * Поставить базовую систему для сборки (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, | + | * Поставить ruby 1.9.3p125: |
- | только для production. coreutils у всех уже и так стоит. :) К | + | |
- | postgresql не забываем про его devel пакеты. Для | + | |
- | который содержит всякие msgmerge и etc. | + | |
- | + | ||
- | + | ||
- | |||
$ rvm install 1.9.3 | $ rvm install 1.9.3 | ||
- | + | * Делаем его дефолтовым для shell: | |
+ | |||
$ rvm --default 1.9.3 | $ rvm --default 1.9.3 | ||
- | + | * Ставим rubygems 1.8.19: | |
+ | |||
$ rvm rubygems 1.8.19 | $ rvm rubygems 1.8.19 | ||
- | + | * Ставим bundler: | |
+ | |||
$ gem install bundler | $ gem install bundler | ||
- | + | * Клоним репозиторий: | |
+ | |||
$ git clone git://github.com/biow0lf/prometheus2.0.git | $ git clone git://github.com/biow0lf/prometheus2.0.git | ||
- | + | * Заходим шеллом в prometheus2.0 и подтверждаем что мы доверяем .rvmrc (если этого не сделать то mc будет «зависать» при попытке зайти | |
- | .rvmrc (если этого не сделать то mc будет | + | |
в папку): | в папку): | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | + | $ 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 | ||
- | + | * Теперь надо настроить базы данных для сайта (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 окружения также: | |
- | + | $ RAILS_ENV=test bundle exec rake db:create db:schema:load | |
- | + | * Если всё было сделано правильно, то теперь можно запустить тесты и убедиться что они проходят. | |
- | + | $ 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. | + | 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 и там действует правило: один хороший принятый коммит == доступ на коммит. Ну что, кто хочет стать героем? :)
Удачи!