Jak uruchomić aplikację Ruby on Rails?

Jednym z najpopularniejszych systemów napisanych w Ruby on Rails jest Redmine ­system do zarządzania projektami. Na jego przykładzie zostanie opisane uruchomienie aplikacji napisanej w Ruby on Rails.
Dla aplikacji napisanych w Ruby on Rails polecanym serwerem aplikacyjnym, który ma możliwość nasłuchiwania na unix socket jest unicorn.

Na potrzeby przykładu zakładamy, że na serwerze w katalogu /home/nazwa_użytkownika/websites/redmine znajduje się rozpakowana instalacja Redmine.

Na serwerach AttHost możliwe jest zainstalowanie dowolnej, wybranej przez użytkownika wersji Ruby przy pomocy rbenv. W ten sposób każdy z użytkowników może używać Ruby w wersji takiej jaka jest niezbędna do prawidłowej pracy jego aplikacji. Nic nie stoi na przeszkodzie, żeby w ramach jednego konta było zainstalowane i wykorzystywane kilka wersji Ruby.

1. Instalujemy rbenv:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo -e "\n" >> ~/.bashrc && echo 'export PATH="$HOME/.rbenv/libexec:$PATH"' >> ~/.bashrc && echo 'eval "$(rbenv init -)"' >> ~/.bashrc

2. Następnie należy wylogować się i ponownie zalogować na swoje konto SSH.

3. Instalacja Ruby ­- na potrzeby Redmine zainstalujmy Ruby w wersji 2.2.7:
rbenv install 2.2.7
rbenv global 2.2.7

4. Instalacja bundler ­- narzędzia do zarządzania wersjami bibliotek Ruby
gem install bundler

5. Edytujemy plik /home/nazwa_użytkownika/websites/redmine/Gemfile i dopisujemy na jego końcu:
gem "unicorn"

Pozwoli to na automatyczne zainstalowanie serwera aplikacyjnego wraz ze wszystkimi zależnościami niezbędnymi do uruchomienia Redmine.

6. Zakładamy bazę danych i konfigurujemy dane do połączenia w pliku config/database.yml.
cp /home/nazwa_użytkownika/websites/redmine/config/database.yml.example /home/nazwa_użytkownika/websites/redmine/config/database.yml

7. Instalujemy niezbędne bibioteki Ruby w katalogu Redmine
cd /home/nazwa_użytkownika/websites/redmine/
bundle install --without development test

8. Instalujemy początkowy schemat bazy danych:
bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production
RAILS_ENV=production bundle exec rake redmine:load_default_data

9. Następnie pobieramy przykładowy plik konfiguracyjny unicorn
wget https://raw.github.com/defunkt/unicorn/master/examples/unicorn.conf.rb

Należy zmienić ścieżki w opcjach: working_directory, pid, stderr_path, stdout_path w pliku unicorn.conf.rb

Oprócz tego należy zakomentować linię: listen 8080, :tcp_nopush => true

Oraz zmienić ścieżkę:

listen "/path/to/.unicorn.sock", :backlog => 64

na:

listen "/home/nazwa_użytkownika/sockets/redmine", :backlog => 64

10. Następnie przechodzimy do panelu i w zakładce aplikacje dodajemy nową aplikację.

W polu katalog podajemy – websites/redmine
W polu socket ­- redmine

Polecenie startowe:

/home/nazwa_użytkownika/.rbenv/shims/bundle exec unicorn -E production -c /home/nazwa_użytkownika/websites/redmine/unicorn.conf.rb

11. Na koniec należy powiązać aplikację z adresem strony, poprzez strony www ­> dodaj, zakładka aplikacje