среда, 16 мая 2012 г.

Custom vagrant image

1, start virtualbox and install your os
2. install ruby and chef
3, install http://download.virtualbox.org/virtualbox/4.2.6/VBoxGuestAdditions_4.2.6.iso
mount -o loop ./VBoxGuestAdditions_4.2.6.iso /mnt
run /mnt/VBoxLinuxAdditions.run --nox11
4. create user vagrant
5. download key https://github.com/mitchellh/vagrant/tree/master/keys/ and set to /home/vagrant/.ssh/authorized_keys
Also recheck permissions and selinux (chown -R vagrant:vagrant /home/vagrant/.ssh && chmod 700 /home/vagrant/.ssh && chmod 600 /home/vagrant/.ssh/authorized_keys && restorecon -R /home/vagrant/.ssh)
6. configure /etc/sudoers (comment Defaults requiretty and add vagrant as sudo user without password vagrant ALL=(ALL) NOPASSWD: ALL)
7. enable ssh
8. logout and poweroff guest vm
9. run vagrant package --base g2012 package.box
10. run vagrant box add g3 ./package.box
11. set g3 to your Vagrantfile to
config.vm.box = "g3"

среда, 1 февраля 2012 г.

rabbitmq и ha для очереди

Rabbitmq передает сообщения. И сообщения частенько очень важные.
Что б не терять их, при отказе железки, можно использовать rabbitmq cluster.
Но есть один ньюанс - в кластере, по умолчанию, очередь хранится на одной ноде.
Добавляем в опции очереди x-ha-policy => all и теперь копии очереди есть на всех нодах и если одна упадет , сообщения не потеряются.
Клиентская программа должна знать куда переподключаться в случае падения и использовать подтверждение о получении сообщения.

суббота, 28 января 2012 г.

deploy spree to openshift

Instruction how to deploy spreecommerce to openshift
work with ruby 1.8.7 because openshift work with this version.
ruby 1.9. hash syntax will create problem in openshift cloud

1. create application on openshift
rhc-create-app -a spree -t rack-1.1
Создалось приложение в облаке редхата и папочка spree с простым rack приложением.
А нам надо создать rails приложение с гемами spree.
rm -f ./spree/README
rails new ./spree -d postgresql -f
Обратите внимание - используем постгрес(дело вкуса конечно,но все ж знают, что постгрес вкуснее)
2. add database(postgresql)
rhc-ctl-app -a spree -e add-postgresql-8.4
Если понадобится удалить подключенную базу
rhc-ctl-app -a spree -e remove-postgresql-8.4
По завершению мы получим данные для подключения к базе.
Их стоит записать в spree/config/database.yml
и не забудьте добавить поле host и вписать ip из подобной строки Connection URL: postgresql://127.1.13.1:5432
И настроить базу для development режима
development:
  adapter: sqlite3
  database: db/dev.sqlite3

И в Gemfile добавляем гем sqlite3 для группы development
теперь перемещаемся в папку spree
bundle install && bundle exec rails g spree:install
добавляем сприи в Gemfile
echo "gem 'spree', :git => 'git://github.com/spree/spree.git'" >> ./Gemfile
Gemfile.lock должен быть актуальным
bundle install
mkdir public/images && cp public/favicon.ico public/images/favicon.ico
RAILS_ENV=development bundle exec rake assets:precompile

добавить код в .openshift/action_hooks/deploy

pushd ${OPENSHIFT_REPO_DIR} > /dev/null
RAILS_ENV=production bundle exec rake db:migrate -y
RAILS_ENV=production bundle exec rake db:seed -y
popd > /dev/null


и теперь пушим git push
после удачного деплоя очищаем .openshift/action_hooks/deploy

first request will broken - it is problem on timeout parameter in proxy server.
but exist problem with timeout

P.S.
after few updates require use this database.yml


adapter: <%=ENV['OPENSHIFT_DB_TYPE']%>
encoding: utf8
host: <%=ENV['OPENSHIFT_DB_HOST']%>
port: <%=ENV['OPENSHIFT_DB_PORT']%>
socket: <%=ENV['OPENSHIFT_DB_SOCKET']%>
database: <%=ENV['OPENSHIFT_APP_NAME']%>
username: <%=ENV['OPENSHIFT_DB_USERNAME']%>
password: <%=ENV['OPENSHIFT_DB_PASSWORD']%>