środa, 30 maja 2012

elasticsearch i tire - instalacja oraz uruchomienie testowej aplikacji



Java 6


$ wget https://github.com/flexiondotorg/oab-java6/raw/0.2.1/oab-java6.sh -O oab-java6.sh
$ chmod +x oab-java6.sh
$ sudo ./oab-java6.sh

$ sudo sudo apt-get install sun-java6-jre

Elasticsearch


$ curl -k -L -o elasticsearch-0.19.4.tar.gz https://github.com/downloads/elasticsearch/elasticsearch/elasticsearch-0.19.4.tar.gz
$ tar -zxvf elasticsearch-0.19.4.tar.gz
$ ./elasticsearch-0.19.4/bin/elasticsearch -f


Tire and searchapp

rails new searchapp -m https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb
#Gemfile
gem 'kaminari'

#app/models/article.rb
class Article < ActiveRecord::Base
  attr_accessible :title, :content, :published_on
  include Tire::Model::Search
  include Tire::Model::Callbacks
end

#app/controllers/articles_controller.rb
  def search
    @articles = Article.search params[:q], :page => (params[:page] || 1), :per_page => 1

    render :action => "index"
  end

#app/views/articles/index.html.erb
<%= paginate @articles %>



piątek, 30 marca 2012

oh my zsh, Ubuntu i rvm

Ostatnio trafiłem na powłokę zsh i projekt Oh My ZSH
W domyślym theme Oh My ZSH m. in. dodaje do prompt konsoli informację o nazwie branch'a jeśli znajdujemy się w katalogu z repozytorium git'a.
Jeśli używamy rvm - aby naszy ruby i inne gemy były widziane przez powłokę należy dodać następującą linię do pliku ~/.zshrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"


Polecam ten screencast aby przekonać się czym jest zsh i jakie ma możliwości. 

niedziela, 18 marca 2012

Ustawianie wspólnego repozytorium git

Tu opis jak to zrobić:
Shared group repository

ssh to server
cd repository.git

sudo chmod -R g+ws *
sudo chgrp -R mygroup *

git repo-config core.sharedRepository true

środa, 25 stycznia 2012

logrotate - rotacja logów na ubuntu

logrotate służy do rotowania określonej liczby plików log.

logrotate powinien być domyślnie zainstalowany w każdym systemie Ubuntu.

Dla każdej aplikacji, której logami chcemy zarządzać, dodajemy plik konfiguracyjny:
#/etc/logrotate.d/our_app

Zawartość pliku:
/home/apps/our_app/current/log/production.log* {
daily
rotate 7
compress
missingok
}

daily - codziennie
rotate 7 - zostaw ostatnie siedem plików
compress - spakuj gzip
missingok - nie krzycz, gdy nie ma żadnych logów

logrotate wykonuje ten skrypt każdego dnia, datę ostatniego wykonania, można sprawdzić w pliku:
cat /var/lib/logrotate/status

Za pomocą następującej komendy można ręcznie uruchomić określoną konfigurację logrotate:
sudo logrotate -f /etc/logrotate.d/our_app

piątek, 20 stycznia 2012

Capistrano - czyszczenie katalogu releases

Po raz kolejny szukam w Google składni polecenia capistrano aby wyczyścić stare 'releases', aby więcej tego nie szukać oto składnia:

cap deploy:cleanup -s keep_releases=2

keep_releases=2 oznacza, że pozostaną nam dwa ostanie 'releases'.

wtorek, 3 stycznia 2012

ssh bez hasła

Piszę to głównie po to aby nie musieć szukać ponownie tych informacji za miesiąc lub dwa, gdy będę musiał konfigurować rsync lub coś podobnego...

Mamy dwa serwery:
A - serwer produkcyjny
B - serwer backup

Zakładam, że na serwerze B posiadamy już użytkownika (np. backup) i folder .ssh w jego katalogu domowym. Zakładam także, że posiadamy już plik .ssh/authorized_keys (lub .ssh/authorized_keys2)
Jeśli nie, to:
touch ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Na serwerze A, z którego będziemy robili upload za pomocą rsync generujemy klucz prywatny i publiczny, np:

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

Kopiujemy klucz publiczny z maszyny A na B:
scp ~/.ssh/id_rsa.pub server_b_username@server_b_domain:~/id_rsa.pub

Następnie logujemy się poprzez ssh na serwer B.
cd .ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub

Następnie wylogowujemy się z serwera B, logujemy się na serwer A i z niego powinniśmy być w stanie zalogować się na serwer B bez podawania hasła.

Instalacja gem'ów bez dokumentacji na Ubuntu

Należy utworzyć plik ~/.gemrc i dodać do niego następującą linię:

gem: --no-ri --no-rdoc

Wylogować się, zalogować ponownie i gem install [gem_name] nie powinien już instalować dokumentacji dla wybranego gem'a.