Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Instalasi Redmine di Tomcat

Ada berbagai cara instalasi Redmine, diantaranya:

  • Dijalankan langsung dari command prompt dengan Webrick

  • Dijalankan menggunakan Mongrel dan FastCGI

  • Dijalankan menggunakan Ruby Enterprise Edition dan Passenger

  • Dibuat menjadi war dan dideploy ke application server Java seperti Tomcat, Glassfish, dsb

Pada artikel ini, kita akan mencoba cara terakhir, yaitu menggunakan Tomcat untuk menghosting Redmine. Ini saya lakukan supaya semua tools manajemen proyek ArtiVisi bisa disatukan di satu Tomcat, sehingga memudahkan kegiatan maintenance. Sebelum Redmine, Tomcat ArtiVisi juga menghosting :

Dan nantinya, kalau sudah ada waktu dan kesempatan, juga akan menghosting Gerrit

Mari kita mulai.

Instalasi JRuby

Pertama, kita Download JRuby. Setelah itu, extract di folder yang diinginkan (contohnya /opt)

cd /opt
tar xzf ~/Downloads/jruby-bin-1.6.3.tar.gz
chown -R endy.endy /opt/jruby-1.6.3
ln -s jruby-1.6.3 jruby

Daftarkan jruby ke variabel PATH, supaya bisa diakses langsung dari command line. Tulis baris berikut ini di dalam file ~/.bashrc

export JRUBY_HOME=/opt/jruby
export PATH=$PATH:$JRUBY_HOME/bin

Terakhir, test instalasi JRuby

jruby -v
jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) Client VM 1.6.0_26) [linux-i386-java]

Instalasi Paket Gem

Redmine membutuhkan beberapa library Ruby yang dipaket dalam format gem, yaitu :

  • rack versi 1.1.1 : ini adalah library untuk web server

  • rails versi 2.3.11 (dibutuhkan karena kita akan menginstal Redmine dari Subversion, bukan dari distribusi)

  • jruby-openssl : supaya bisa melayani https

  • activerecord-jdbcmysql-adapter : library untuk koneksi database

  • warbler : packager supaya Redmine bisa dibuat jadi war dan dideploy ke Tomcat

Mari kita install

gem install rack -v=1.1.1
gem install rails -v=2.3.11
gem install jruby-openssl activerecord-jdbcmysql-adapter warbler

Semua paket sudah lengkap, mari kita lanjutkan ke langkah berikut.

Mengambil Redmine dari Subversion Repository

Sebetulnya ada dua pilihan untuk mendapatkan Redmine, download versi rilis atau checkout langsung dari Subversion. Saya lebih suka checkout langsung supaya nanti lebih gampang upgrade manakala rilis baru sudah terbit.

cd ~/Downloads
svn co http://redmine.rubyforge.org/svn/branches/1.2-stable redmine-1.2

Tunggu sejenak sampai proses checkout selesai. Setelah selesai, kita bisa langsung ke langkah selanjutnya.

Konfigurasi Database

Masuk ke folder Redmine, lalu copy file config/database.yml.example ke database.yml, kemudian edit. Saya menggunakan konfigurasi development sebagai berikut :

development:
  adapter: jdbcmysql
  database: redmine
  host: localhost
  username: redmine
  password: redmine
  encoding: utf8

Tentunya kita harus sediakan database dengan konfigurasi tersebut di MySQL. Login ke MySQL, kemudian buatlah database dan usernya.

mysql -u root -p

create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'redmine';
grant all privileges on redmine.* to 'redmine'@'localhost';

Setelah databasenya selesai dibuat, selanjutnya kita akan melakukan inisialisasi.

Inisialisasi Redmine

Pertama, kita inisialisasi dulu session store. Ini digunakan untuk menyimpan cookie dan session variabel.

cd ~/Downloads/redmine-1.2
rake generate_session_store

Setelah itu, inisialisasi skema database.

RAILS_ENV=development rake db:migrate

Isi data awal.

RAILS_ENV=development rake redmine:load_default_data

Setelah terisi, selanjutnya kita bisa test jalankan Redmine.

jruby script/server webrick -e development

Hasilnya bisa kita browse di http://localhost:3000 Kemudian kita bisa login dengan username admin dan password admin.

Konfigurasi Email

Issue tracker yang baik harus bisa mengirim email, supaya dia bisa memberikan notifikasi pada saat ada issue baru ataupun perubahan terhadap issue yang ada. Redmine versi 1.2 membutuhkan file konfigurasi yang bernama configuration.yml, berada di folder config. Berikut isi file configuration.yml untuk mengirim email ke Gmail.

# = Outgoing email settings
development:
    email_delivery:
        delivery_method: :smtp
        smtp_settings:
            tls: true
            address: "smtp.gmail.com"
            port: 587
            authentication: :plain
            user_name: "nama.kita@gmail.com"
            password: "passwordgmailkita"

Selain itu, kita juga harus menginstal plugin action_mailer_optional_tls, seperti dijelaskan di sini.

jruby script/plugin install
git://github.com/collectiveidea/action_mailer_optional_tls.git

Coba restart Redmine, sesuaikan alamat email kita dengan cara klik link My Account di pojok kanan atas. Di dalamnya ada informasi tentang email. Ganti dengan alamat email kita. Kemudian pergi ke menu Administration > Settings > Email Notifications, kemudian klik link Send a test email di pojok kanan bawah. Tidak lama kemudian, seharusnya test email dari Redmine sudah masuk di mailbox kita.

Dengan demikian, Redmine sudah berhasil kita instal dan konfigurasi dengan baik. Selanjutnya, kita akan paketkan supaya bisa dideploy di Tomcat.

Generate WAR

Pertama, kita harus inisialisasi dulu konfigurasi warble.

warble config

Dia akan menghasilkan file config/warble.rb. Mari kita edit sehingga menjadi seperti ini.

Warbler::Config.new do |config|
  config.dirs = %w(app config lib log vendor tmp extra files lang)
  config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl", "i18n", "rack"]
  config.webxml.rails.env = ENV['RAILS_ENV'] || 'development'
end

Selanjutnya, kita tinggal menjalankan perintah warble untuk menghasilkan file war.

warble
warning: application directory `lang' does not exist or is not a directory; skipping
rm -f redmine-1.2.war
Creating redmine-1.2.war

File war yang dihasilkan tinggal kita deploy ke Tomcat

cp redmine-1.2.war /opt/apache-tomcat-7.0.12/webapps/redmine.war

Jalankan Tomcat, dan Redmine bisa diakses di http://localhost:8080/redmine