Instalasi Redmine di openSUSE Leap 42.2

Komunitas openSUSE Indonesia

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.

Screenshot_20170127_145549
Screenshot_20170127_145645

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

Add your comment

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.