Cara Memasang Redmine di Ubuntu 16.04

Redmine adalah alat pengurusan projek berasaskan web percuma dan terbuka. Ia ditulis dalam Ruby on Rails dan menyokong beberapa pelayan pangkalan data untuk menyimpan pangkalan data. Ini adalah aplikasi kaya ciri yang menyokong pelbagai projek, ACL berdasarkan peranan dan sistem pengesanan masalah. Ia juga mempunyai sokongan grafik dan kalendar Gantt, pengurusan fail, wiki dan forum setiap projek, serta banyak lagi ciri lain. Ia menyokong sistem kawalan versi seperti Git, SVN atau CVS. Ia juga berbilang bahasa, menyokong sebanyak 49 bahasa.

Prasyarat

  • Contoh pelayan Vultr Ubuntu 16.04.
  • Pengguna sudo .
  • Nama domain menunjuk ke pelayan.

Untuk tutorial ini, kami akan menggunakan 192.168.1.1sebagai alamat IP awam dan redmine.example.com sebagai nama domain menunjuk ke arah Vultr. Sila pastikan untuk menggantikan semua contoh contoh nama domain dan alamat IP dengan yang sebenarnya.

Kemas kini sistem asas anda menggunakan panduan Cara Kemaskini Ubuntu 16.04 . Setelah sistem anda diperbaharui, teruskan memasang dependensi.

Pasang Apache

Redmine ditulis dalam Ruby on Rails, oleh itu kami akan memerlukan Penumpang Phusion untuk mengintegrasikan dengan pelayan web Apache untuk melayani aplikasi tersebut.

Pasang Apache.

sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev

Untuk membina Ruby dan Penumpang, kami juga memerlukan beberapa alat pembangunan. Pasang alatan yang diperlukan.

sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev

Pasang PostgreSQL

Redmine menyokong pelbagai jenis pelayan pangkalan data seperti MySQL, PostgreSQL, dan MSSQL. Dalam tutorial ini, kita akan menggunakan PostgreSQL untuk menjadi tuan rumah pelayan pangkalan data Redmine.

PostgreSQL adalah sistem pangkalan data objek-hubungan. Repositori Ubuntu lalai mengandungi versi lama PostgreSQL, jadi tambahkan repositori PostgreSQL ke sistem.

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

Pasang pelayan pangkalan data PostgreSQL.

sudo apt -y install postgresql

Mulakan pelayan PostgreSQL dan dayakannya secara automatik pada masa boot.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Tukar kata laluan untuk pengguna PostgreSQL lalai.

sudo passwd postgres

Log masuk sebagai pengguna PostgreSQL.

sudo su - postgres

Buat pengguna PostgreSQL baru untuk Redmine.

createuser redmine

Anda dibenarkan untuk menggunakan mana-mana nama pengguna dan bukannya redmine. PostgreSQL menyediakan psql shell untuk menjalankan pertanyaan pada pangkalan data. Beralih ke shell PostgreSQL.

psql

Tetapkan kata laluan untuk pengguna yang baru dibuat untuk pangkalan data Redmine.

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

Gantikan DBPassword dengan kata laluan yang selamat. Buat pangkalan data baru untuk pemasangan Redmine.

CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

Keluar dari psql cangkerang.

\q

Beralih kepada sudo pengguna.

exit

Pasang beberapa pergantungan PostgreSQL yang diperlukan.

sudo apt -y install libpqxx-dev protobuf-compiler

Pasang Ruby

Kami akan memasang versi terbaru Ruby menggunakan RVM. Ia digunakan untuk memasang dan mengurus pelbagai versi Ruby.

Tambah repositori RVM.

sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update

Pasang RVM.

sudo apt -y install rvm

Oleh kerana kita perlu memasang sistem Ruby seluasnya, kita akan beralih kepada pengguna root buat sementara waktu.

sudo -i

Kemas kini pembolehubah persekitaran.

echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh

Pasang Ruby versi terkini.

rvm install 2.5.1

Catatan: Jika anda menggunakan Ruby versi lain, pastikan untuk mengemas kini jalur Ruby dengan sewajarnya.

Gunakan versi Ruby yang dipasang.

rvm use 2.5.1 --default

Anda boleh mengesahkan versinya.

ruby -v

Anda akan melihat output yang serupa.

root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

Pasang bundler, yang merupakan pengurus pergantungan untuk aplikasi Ruby.

gem install bundler

Ruby kini dipasang. Sebelum memasang Redmine, kita perlu memasang Phusion Passenger.

Pasang Penumpang

Jalankan arahan berikut untuk memasang Penumpang.

gem install passenger

Pasang modul Apache untuk Penumpang.

passenger-install-apache2-module

Skrip pemasang akan menanyakan beberapa soalan kepada anda. Pertama, ia akan memberi anda maklumat tentang proses pemasangan. Kemudian, ia akan meminta anda untuk memilih bahasa yang akan anda gunakan. Oleh kerana aplikasi kami ditulis dalam Ruby on Rails, pilih Ruby dari menu dan tekan ENTERuntuk meneruskan lebih jauh.

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

Pemasang kini akan memeriksa keperluan. Pemasang tidak akan menemui apa-apa ketergantungan yang hilang dan secara automatik akan terus menyusun dan memasang modul.

Setelah modul dipasang, ia akan meminta anda menambahkan modul ke fail konfigurasi Apache.

Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
     PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

Kami akan melangkau ini buat masa ini dan akan menyelesaikannya kemudian dalam tutorial. Tekan ENTERuntuk melangkau langkah ini.

Akhirnya, skrip pemasang akan mengesahkan pemasangan dan anda akan melihat amaran yang mengatakan modul Penumpang tidak dinyatakan dalam konfigurasi Apache.

Validating installation...

 * Checking whether this Passenger install is in PATH... ✓
 * Checking whether there are no other Passenger installations... ✓
 * Checking whether Apache is installed... ✓
 * Checking whether the Passenger module is correctly configured in Apache... (!)

   You did not specify 'LoadModule passenger_module' in any of your Apache
   configuration files. Please paste the configuration snippet that this
   installer printed earlier, into one of your Apache configuration files, such
   as /etc/apache2/apache2.conf.


Detected 0 error(s), 1 warning(s).
Press ENTER to continue.

Setelah kita memasang modul Passenger untuk Apache, teruskan memuat turun dan memasang Redmine. Beralih ke sudopengguna sekali lagi kerana kita tidak perlu menjalankan perintah lagi menggunakan rootpengguna.

exit

Pasang Redmine

Dianjurkan untuk menggunakan pengguna yang tidak berhak untuk menjalankan aplikasi agar tetap terisolasi dari sistem yang lain. Buat pengguna baru untuk Redmine dan beralih ke pengguna yang baru dibuat.

sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - redmine

Muat turun versi terbaru Redmine dari halaman muat turun Redmine rasmi .

cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz

Ekstrak arkib dan menamakan semula direktori untuk kemudahan.

tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/

Salin fail konfigurasi contoh ke lokasi pengeluarannya.

cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml

Buka fail konfigurasi pangkalan data kami baru disalin untuk memasukkan butiran pangkalan data.

nano config/database.yml

Secara lalai, fail pangkalan data dikonfigurasi untuk MySQL. Cari konfigurasi untuk pengeluaran dan pembangunan, dan ujian yang menggunakan penyesuai MySQL. Komen semua baris ini.

#production:
#  adapter: mysql2
#  database: redmine
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#development:
#  adapter: mysql2
#  database: redmine_development
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#test:
#  adapter: mysql2
#  database: redmine_test
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

Furthur, cari baris yang dikomentari, mempunyai production konfigurasi untuk postgresql penyesuai. Uncomments garis-garis dan kemas kini nama pangkalan data dan kelayakan pengguna. Pastikan menggunakan lekukan yang betul, iaitu dua ruang.

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "DBPassword"

Konfigurasikan aplikasi untuk menggunakan konfigurasi PostgreSQL.

bundle config build.pg --with-pg-config=/usr/bin/pg_config

Pasang kebergantungan yang diperlukan oleh aplikasi.

bundle install --path vendor/bundle --without development test

Anda akan melihat mesej berikut pada akhir pemasangan.

Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`

Perintah berikut menghasilkan token rahsia yang digunakan untuk mengekod data sesi.

bundle exec rake generate_secret_token

Tulis pangkalan data PostgreSQL.

RAILS_ENV=production bundle exec rake db:migrate

Jalankan arahan berikut, yang menulis data lalai ke pangkalan data PostgreSQL.

RAILS_ENV=production bundle exec rake redmine:load_default_data

Perintah di atas akan meminta anda memilih bahasa lalai untuk digunakan dengan aplikasi. Pilihan lalai adalah Bahasa Inggeris; pilih mengikut pilihan anda.

[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.

Pemasangan aplikasi Redmine kini selesai. Tukar pemilikan dan kebenaran direktori dan fail.

mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

Kami telah mengkonfigurasi semua yang kami perlukan dari pengguna yang tidak berhak. Beralih kembali kepada sudo pengguna dengan berjalan su - <username>.

Konfigurasikan Apache

Tambah modul Penumpang untuk Apache ke dalam fail konfigurasi Apache. Ini akan memuatkan modul Passenger secara automatik.

echo "LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/apache2/apache2.conf

Catatan: Laluan ke modul Penumpang boleh berubah apabila terdapat pelepasan Penumpang baru. Untuk mencari laluan ke modul, gunakan sudo find / -name mod_passenger.soarahan tersebut.

Buat fail tuan rumah maya yang baru untuk aplikasi Redmine anda.

sudo nano /etc/apache2/sites-available/redmine.conf

Isi fail dengan kandungan berikut.

<VirtualHost *:80>
    ServerName redmine.example.com

    DocumentRoot /home/redmine/redmine/public

    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine

    <Directory /home/redmine/redmine/public>
      Allow from all
      Options -MultiViews
      Require all granted
    </Directory>
</VirtualHost>

Pastikan untuk menggantikan redmine.example.com dengan nama domain sebenar anda. Juga, pastikan laluan ke PassengerRoot dan PassengerDefaultRuby betul. Jalan ke binari boleh berubah apabila terdapat pembebasan baru Ruby atau Penumpang. Untuk mencari jalan ini, jalankan arahan berikut.

passenger-config about ruby-command

Anda akan mendapat output berikut.

user@vultr:~$ passenger-config about ruby-command
passenger-config was invoked through the following Ruby interpreter:
  Command: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  Version: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
  To use in Apache: PassengerRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use in Nginx : passenger_ruby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use with Standalone: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/bin/passenger start


## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config about ruby-command'.

Setelah fail tuan rumah Maya dibuat. Aktifkan konfigurasi.

sudo a2ensite redmine

Mulakan semula pelayan web Apache.

sudo systemctl restart apache2

Anda kini boleh mengakses antara muka Redmine anda http://redmine.example.com. Log masuk dengan nama pengguna admindan kata laluan admin. Pada log masuk pertama anda, Redmine akan meminta anda untuk mengemas kini kata laluan.

Menjamin Apache dengan Let's Encrypt SSL

Oleh kerana pemasangan Redmine kami berada pada pelayan menghadap awam, disyorkan untuk menggunakan SSL untuk menjamin pertukaran data dari pelayan.

Tambah repositori Certbot.

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update

Pasang Certbot, iaitu aplikasi klien untuk Let's Encrypt CA.

sudo apt -y install certbot

Nota: Untuk mendapatkan sijil dari Let's Encrypt CA, domain yang mana sijil yang akan dihasilkan mesti ditujukan ke pelayan. Sekiranya tidak, buat perubahan yang diperlukan pada rekod DNS domain dan tunggu DNS disebarkan sebelum membuat permintaan sijil lagi. Certbot memeriksa pihak berkuasa domain sebelum menyediakan sijil.

Menjana sijil SSL.

sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com

Sijil yang dijana mungkin disimpan di dalam /etc/letsencrypt/live/redmine.example.com/. Sijil SSL akan disimpan sebagai cert.pem dan kunci peribadi akan disimpan sebagai privkey.pem.

Mari Sijikan sijil tamat tempoh dalam 90 hari, oleh itu, disyorkan untuk menyediakan pembaharuan automatik sijil menggunakan kerja-kerja Cron.

Buka fail kerja Cron untuk root pengguna.

sudo crontab -e

Tambahkan garisan berikut pada akhir fail.

30 5 * * * /usr/bin/certbot renew --quiet

Kerja Cron di atas akan dijalankan setiap hari pada 5:30 pagi. Sekiranya sijil perlu tamat tempoh, ia akan diperbaharui secara automatik.

Dayakan modul SSL untuk Apache.

sudo a2enmod ssl

Edit fail hos maya yang kami buat lebih awal untuk Redmine.

sudo nano /etc/apache2/sites-available/redmine.conf

Ubah suai fail tuan rumah Maya supaya sama dengan yang berikut.

<VirtualHost *:80>
    ServerName redmine.example.com
    Redirect permanent / https://redmine.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName redmine.example.com
    DocumentRoot "/home/redmine/redmine/public"
    <Directory "/home/redmine/redmine/public">
        Options None
        Require all granted
    </Directory>
    PassengerAppEnv production
    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine
    PassengerHighPerformance on

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/redmine.example.com/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/redmine.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem

    SSLProtocol             all -SSLv2 -SSLv3
    SSLHonorCipherOrder     on
    SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

    <IfModule headers_module>
        Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
    </IfModule>
</VirtualHost>

Simpan fail dan keluar dari editor.

Restart Apache supaya perubahan tersebut dapat berkuatkuasa.

sudo systemctl restart apache2

Anda kini boleh mengakses Redmine HTTPS di atas https://redmine.example.com.

Tahniah, anda telah berjaya memasang Redmine pada contoh Ubuntu anda 16.04. Mulakan membangunkan projek anda sama ada dengan membuat atau mengimport projek anda.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut