Salah satu tools yang digunakan oleh openSUSE dalam proses pengembangan adalah Redmine. Bagi yang pernah melaporkan permasalahan seputar pengembangan openSUSE melalui https://progress.opensuse.org pasti mengetahuinya.
Redmine adalah alat bantu manajemen proyek dan pelacak isu berbasis web (web-based project management and issue tracking tool) bebas sumber terbuka. Redmine dikembangkan menggunakan Ruby on Rails dengan lisensi GNU General Public License v2 (GPL). Ruby adalah salah satu bahasa yang “ajib” dan Ruby on Rails adalah framework yang keren. Sekali lagi Ruby seperti halnya python membutuhkan environment yang diset sesuai dengan versi dari Ruby yang digunakan. Yast2 juga dikembangkan dengan Ruby dan bagi anda yang belum pernah melakukan implementasi Ruby banyak-banyaklah bertanya dan latihan. Jangan melakukan update manual terhadap paket Ruby kalau anda tidak mengerti apa yang anda lakukan, salah-salah Yast2 anda akan berhenti bekerja 🙂
Ada banyak tools yang fungsinya mirip-mirip dengan Redmine, JIRA dari Atlassian misalnya. Atlassian memang salah satu pemain besar dalam bidang ini dengan produk-produknya seperti Bitbucket, Sourcetree dan baru-baru ini mereka mengakuisisi trello. Kita tidak akan membandingkan Redmine dengan JIRA silakan anda bandingkan sendiri 🙂
Sebenarnya sudah ada yang memaketkan Redmine di OBS, ada di home nya darix. Tapi di sini saya akan menunjukkan bagaimana menginstal dari source Redmine yang diunduh dari websitenya dan menggunakan nginx serta postgresql dalam implementasinya. Ayo kita mulai.
Unduh Redmine dari sini.
Install postgresql
1 | zypper in postgresql |
Selanjutnya buatlah sebuah database production dan user untuk Redmine pada postgresql, misalnya kita akan membuat database redmine_db dan user redmine.
1 2 3 4 5 6 | su - postgres createuser redmine psql alter user redmine with encrypted password 'my_password' noinherit valid until 'infinity'; create database redmine_db with encoding='UTF8' owner=redmine; |
Anda dapat juga menambahkan database lain untuk Redmine misalnya untuk development dan test.
Lakukan perubahan seperlunya pada /var/lib/pgsql/data/pg_hba.conf, misalnya menjadi:
1 2 3 4 | local all all md5 host all all 127.0.0.1/32 md5 host all all ::1/128 md5 host all all 0.0.0.0/0 md5 |
Juga perubahan seperlunya untuk /var/lib/pgsql/data/postgresql.conf, misalnya pada bagian connections dan authentications
1 2 | listen_addresses = '*' port = 5432 |
Selanjutnya enable dan restart postgresql
1 2 | systemctl enable postgresql.service
systemctl start postgresql.service |
Instalasi Redmine
Ekstrak Redmine dan letakkan di /srv/www/vhosts/redmine
1 2 3 | tar -xvzf redmine-3.3.2.tar.gz mv redmine-3.3.2 /srv/www/vhosts/redmine chown -R redmine:redmine /srv/www/vhosts/redmine |
Selanjutnya copy file /srv/www/vhosts/redmine/config/configuration.yml.example menjadi /srv/www/vhosts/redmine/config/configuration.yml dan /srv/www/vhosts/redmine/config/database.yml.example menjadi /srv/www/vhosts/redmine/config/database.yml
1 2 | cp /srv/www/vhosts/redmine/config/configuration.yml.example /srv/www/vhosts/redmine/config/configuration.yml cp /srv/www/vhosts/redmine/config/database.yml.example /srv/www/vhosts/redmine/config/database.yml |
Pengaturan yang penting diperhatikan pada configuration.yml adalah pengaturan email. Pada openSUSE, Postfix harusnya secara default sudah terinstall, pastikan bahwa service postfix jalan. Jika anda tidak ingin Redmine mengirimkan email maka pastikan anda memberi comment (#) pada seluruh bagian “email_delivery:”. Jika anda menginginkan postfix di mesin lokal mengirimkan email setiap ada perubahan issue pada Redmail maka pastikan bagian “email_delivery:” berisi:
1 2 3 4 5 6 7 8 | email_delivery: # ==== Simple SMTP server at localhost # # email_delivery: delivery_method: :smtp smtp_settings: address: "localhost" port: 25 |
Jika anda sudah memiliki akun email (bisa saja pada server email lain) dan menginginkan akun tersebut yang mengirimkan email setiap ada penambahan issue pada Redmine maka lakukan perubahan pada configuration.yml menjadi seperti:
1 2 3 4 5 6 7 8 9 10 11 | email_delivery: # email_delivery: delivery_method: :smtp smtp_settings: enable_starttls_auto: true address: "smtp.google.com" port: 587 domain: "gmail.com" # 'your.domain.com' for GoogleApps authentication: :plain user_name: "redmine_saya@gmail.com" password: "mypassword" |
Untuk database.yml, karena kita menggunakan postgresql maka pastikan bahwa adapter yang digunakan adalah postgresql. Pastikan anda memberi comment (#) untuk adapater yang lain.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | production: adapter: postgresql database: redmine_db host: localhost username: redmine password: "my_password" encoding: utf8 development: adapter: postgresql database: redmine_development_db host: localhost username: redmine password: "my_password" encoding: utf8 test: adapter: postgresql database: redmine_test_db host: localhost username: redmine password: "my_password" encoding: utf8 |
Kemudian jalankan perintah-perintah di bawah ini untuk mengunduh gem yang dibutuhkan oleh Redmine
1 2 3 4 | gem install bundler gem update --system bundle install --without development test bundle exec rake generate_secret_token |
Kadangkala bisa terjadi ada gem yang tidak terinstall, jangan panik. Sistem akan menunjukkan gem apa dan versi berapa yang belum terinstal. Ulangi dengan instal manual, misalnya:
1 | gem install rails-dom-testing -v '1.0.8' && bundle install |
Jika instalasi gem dan bundle sudah selesai, lanjutkan dengan langkah berikut
1 2 3 4 5 | RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake redmine:load_default_data mkdir -p tmp tmp/pdf public/plugin_assets sudo chown -R redmine:redmine files log tmp public/plugin_assets sudo chmod -R 755 files log tmp public/plugin_assets |
Kalau langkah-langkah di atas berhasil tanpa ada pesan kesalahan, maka lanjutkan langkah terakhir untuk menyalakan service dari Redmine
1 | bundle exec rails server webrick -e production & |
Hasilnya adalah sebagai berikut:
Redmine akan berjalan pada port 3000, cek ulang dengan netstat dan pastikan sudah berjalan:
1 | netstat -tulpn | grep 3000 |
Konfigurasi nginx
Langkah terakhir yang harus dilakukan adalah menyiapkan konfigurasi vhost nginx dan mengalihkan setiap request menuju port 80 ke upstream port 3000 dimana Redmine bekerja.
Untuk http, buatlah sebuah file untuk vhost misalnya di /etc/nginx/vhosts.d/redmine.opensuse.id.conf (asumsi nama server nantinya redmine.opensuse.id, ganti sesuai dengan nama server anda) dengan isi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | server { listen 80; server_name redmine.opensuse.id; server_tokens off; client_max_body_size 20m; access_log /var/log/nginx/redmine_opensuse_id_access.log; error_log /var/log/nginx/redmine_opensuse_id_error.log; location ~ \.*$ { proxy_pass http://127.0.0.1:3000; } location / { root /srv/www/vhosts/redmine/public; index index.html index.htm; autoindex on; autoindex_exact_size on; autoindex_localtime on; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } |
Jika anda menggunakan https, maka file di atas isinya kira-kira (sesuaikan dengan kondisi implementasi anda):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | server { listen 80; server_name redmine.opensuse.id; return 301 https://$host$request_uri; server_tokens off; client_max_body_size 20m; } server { listen *:443 ssl; server_name redmine.opensuse.id; server_tokens off; access_log /var/log/nginx/redmine_opensuse_id_access.log; error_log /var/log/nginx/redmine_opensuse_id_error.log; ssl on; ssl_certificate /etc/certbot/live/redmine.opensuse.id/fullchain.pem; ssl_certificate_key /etc/certbot/live/redmine.opensuse.id/privkey.pem; ssl_dhparam /etc/ssl/dhparams.pem; ssl_session_timeout 5m; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; ssl_prefer_server_ciphers on; ##HSTS add_header Strict-Transport-Security "max-age=31536000"; # force https-redirects if ($scheme = http) { return 301 https://$server_name$request_uri; } location ~ \.*$ { proxy_pass http://127.0.0.1:3000; } location / { root /srv/www/vhosts/redmine/public; index index.html index.htm; autoindex on; autoindex_exact_size on; autoindex_localtime on; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } |
Selanjutnya enable dan start nginx
1 2 | systemctl enable nginx.service
systemctl start nginx.service |
Bukalah browser anda menuju ke alamat yang sesuai dengan nama server yang di-publish, misalnya https://redmine.opensuse.id/login. Isi dengan default user = admin, default password = admin dan segera ganti password tersebut.
Selamat mencoba dan semoga bermanfaat.
No Comments