Prometheus
Материал из ALT Linux Wiki
(Различия между версиями)
(Первая версия) |
(Обновление страницы для свежего ruby, etc.) |
||
(3 промежуточные версии не показаны) | |||
Строка 1: | Строка 1: | ||
- | По просьбе трудящихся привожу маленькое руководство по заведению своего | + | По просьбе трудящихся привожу маленькое руководство по заведению своего маленького-локального prometheus. |
- | маленького-локального prometheus. | + | |
- | Для начала нам потребуется rvm ( | + | Для начала нам потребуется 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. | + | |
- | хорошо расписано как его поставить. Вместо 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, | + | |
- | только для production. coreutils у всех уже и так стоит. :) К | + | |
- | postgresql не забываем про его devel пакеты. Для | + | |
- | который содержит всякие msgmerge и etc. | + | |
- | + | ||
- | + | ||
- | + | * Поставить ruby 2.1.0: | |
- | + | ||
- | + | $ rvm install 2.1.0 | |
- | $ rvm | + | |
- | + | * Делаем его дефолтовым для shell: | |
- | $ rvm | + | |
+ | $ rvm --default 2.1.0 | ||
+ | |||
+ | * Проверяем версию rubygems, она должна быть 2.2.2 или выше: | ||
+ | |||
+ | $ gem -v | ||
+ | |||
+ | * Ставим 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 | ||
- | + | * Ставим все нужные джемы через 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 | + | $ 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:configure |
- | + | * Создать индекс: | |
- | $ bundle exec rake thinking_sphinx:index | + | $ bundle exec rake thinking_sphinx:index |
- | + | * Запустить сам sphinx: | |
- | $ bundle exec rake thinking_sphinx:start | + | $ bundle exec rake thinking_sphinx:start |
- | + | * Останаливать 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 и там действует правило: принятый коммит == доступ на коммит в репозиторий. Ну что, кто хочет стать героем? :)
Удачи!