Kako instalirati Redmine na Ubuntu 16.04

Redmine je besplatni alat za upravljanje projektima otvorenog koda koji se temelji na webu. Napisan je u Ruby on Rails i podržava više poslužitelja baze podataka za pohranu baze podataka. To je aplikacija bogata značajkama koja podržava više projekata, ACL baziran na ulogama i sustav za praćenje problema. Također ima podršku za Ganttov grafikon i kalendar, upravljanje datotekama, wiki i forum po projektu, kao i mnoge druge značajke. Podržava sustave kontrole verzija kao što su Git, SVN ili CVS. Također je višejezičan, podržava čak 49 jezika.

Preduvjeti

  • Instanca poslužitelja Vultr Ubuntu 16.04.
  • Korisnik sudoa .
  • Naziv domene usmjeren prema poslužitelju.

Za ovaj vodič koristit ćemo 192.168.1.1kao javnu IP adresu i redmine.example.com kao ime domene usmjereno na Vultr instancu. Svakako zamijenite sva pojavljivanja primjera naziva domene i IP adrese stvarnim.

Ažurirajte svoj osnovni sustav pomoću vodiča Kako ažurirati Ubuntu 16.04 . Nakon što se vaš sustav ažurira, nastavite s instalacijom ovisnosti.

Instalirajte Apache

Redmine je napisan u Ruby on Rails, stoga ćemo zahtijevati da se Phusion Passenger integrira s Apache web poslužiteljem za posluživanje aplikacije.

Instalirajte Apache.

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

Da bismo napravili Ruby i Passenger, trebat će nam i neki razvojni alati. Instalirajte potrebne alate.

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

Instalirajte PostgreSQL

Redmine podržava više vrsta poslužitelja baza podataka kao što su MySQL, PostgreSQL i MSSQL. U ovom vodiču koristit ćemo PostgreSQL za hostiranje Redmine poslužitelja baze podataka.

PostgreSQL je objektno-relacijski sustav baze podataka. Zadano Ubuntu spremište sadrži staru verziju PostgreSQL-a, stoga dodajte PostgreSQL spremište u sustav.

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

Instalirajte PostgreSQL poslužitelj baze podataka.

sudo apt -y install postgresql

Pokrenite PostgreSQL poslužitelj i omogućite mu automatsko pokretanje prilikom pokretanja.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Promijenite lozinku za zadanog korisnika PostgreSQL.

sudo passwd postgres

Prijavite se kao korisnik PostgreSQL-a.

sudo su - postgres

Stvorite novog PostgreSQL korisnika za Redmine.

createuser redmine

Dopušteno vam je koristiti bilo koje korisničko ime umjesto redmine. PostgreSQL pruža psql ljusku za pokretanje upita u bazi podataka. Prijeđite na ljusku PostgreSQL.

psql

Postavite lozinku za novostvorenog korisnika za Redmine bazu podataka.

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

Zamijenite DBPassword sigurnom lozinkom. Napravite novu bazu podataka za instalaciju Redminea.

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

Izađite iz psql ljuske.

\q

Prebacite se na sudo korisnika.

exit

Instalirajte još nekoliko potrebnih PostgreSQL ovisnosti.

sudo apt -y install libpqxx-dev protobuf-compiler

Instalirajte Ruby

Instalirat ćemo najnoviju verziju Rubyja koristeći RVM. Koristi se za instalaciju i upravljanje više verzija Rubyja.

Dodajte RVM spremište.

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

Instalirajte RVM.

sudo apt -y install rvm

Kako trebamo instalirati Ruby u cijelom sustavu, privremeno ćemo se prebaciti na root korisnika.

sudo -i

Ažurirajte varijable okruženja.

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

Instalirajte najnoviju verziju Rubyja.

rvm install 2.5.1

Napomena: Ako koristite drugu verziju Rubyja, svakako ažurirajte Ruby stazu u skladu s tim.

Koristite instaliranu verziju Rubyja.

rvm use 2.5.1 --default

Možete provjeriti njegovu verziju.

ruby -v

Vidjet ćete sličan izlaz.

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

Install bundler, koji je upravitelj ovisnosti za aplikaciju Ruby.

gem install bundler

Ruby je sada instaliran. Prije nego što instaliramo Redmine, morat ćemo instalirati Phusion Passenger.

Instalirajte Passenger

Pokrenite sljedeću naredbu da instalirate Passenger.

gem install passenger

Instalirajte Apache modul za Passenger.

passenger-install-apache2-module

Skripta za instalaciju će vam postaviti neka pitanja. Prvo će vam pružiti informacije o postupku instalacije. Zatim će od vas tražiti da odaberete jezik koji ćete koristiti. Budući da je naša aplikacija napisana u Ruby on Rails, odaberite Ruby s izbornika i pritisnite ENTERza nastavak.

Which languages are you interested in?

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

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

Instalater će sada provjeriti zahtjeve. Instalacijski program neće naići na nedostajuće ovisnosti i automatski će nastaviti s prevođenjem i instalacijom modula.

Nakon što je modul instaliran, od vas će se tražiti da dodate modul u Apache konfiguracijsku datoteku.

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.

Ovo ćemo za sada preskočiti i dovršit ćemo kasnije u vodiču. Pritisnite ENTERda biste preskočili ovaj korak.

Konačno, skripta za instalaciju će potvrditi instalaciju i vidjet ćete upozorenje da Passenger modul nije naveden u Apache konfiguraciji.

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.

Sada kada smo instalirali Passenger modul za Apache, nastavite preuzimati i instalirati Redmine. sudoPonovno se prebacite na korisnika jer ne moramo više izvoditi naredbe pomoću rootkorisnika.

exit

Instalirajte Redmine

Preporuča se korištenje neprivilegiranog korisnika za pokretanje aplikacije kako bi bila izolirana od ostatka sustava. Stvorite novog korisnika za Redmine i prijeđite na novostvorenog korisnika.

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

Preuzmite najnoviju verziju Redminea sa službene stranice za preuzimanje Redminea .

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

Extract the archive and rename the directory for the sake of convenience.

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

Copy the example configuration files to its production location.

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

Open the database configuration file we just copied to enter the database details.

nano config/database.yml

By default, the database file is configured for MySQL. Find the configurations for production and development, and test which uses the MySQL adapter. Comment out all of these lines.

#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, find the lines which are commented, having production configuration for the postgresql adapter. Uncomment those lines and update the database name and user credentials. Make sure to use the correct indentation, which is two spaces.

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

Configure the application to use the PostgreSQL configuration.

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

Install the dependencies required by the application.

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

You will see the following message at the end of the installation.

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`

The following command generates secret tokens that are used to encode the session data.

bundle exec rake generate_secret_token

Write the PostgreSQL database.

RAILS_ENV=production bundle exec rake db:migrate

Run the following command, which writes the default data into PostgreSQL database.

RAILS_ENV=production bundle exec rake redmine:load_default_data

The above command will ask you to choose the default language to be used with the application. The default choice is English; choose according to your preference.

[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.

Installation of the Redmine application is now finished. Change ownership and permissions of the directories and files.

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

We have configured everything we need from the non-privileged user. Switch back to the sudo user by running su - <username>.

Configure Apache

Add the Passenger module for Apache into the Apache configuration file. This will automatically load the Passenger module.

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

Napomena: Put do modula Passenger može se promijeniti kada postoji novo izdanje Passengera. Da biste pronašli put do modula, koristite sudo find / -name mod_passenger.sonaredbu.

Izradite novu virtualnu host datoteku za svoju Redmine aplikaciju.

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

Popunite datoteku sljedećim sadržajem.

<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>

Obavezno zamijenite redmine.example.com svojim stvarnim imenom domene. Također, provjerite je li put do PassengerRoot i PassengerDefaultRuby ispravan. Put do binarnih datoteka može se promijeniti kada se pojavi novo izdanje Ruby ili Passengera. Da biste pronašli ove staze, pokrenite sljedeću naredbu.

passenger-config about ruby-command

Dobit ćete sljedeći izlaz.

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'.

Nakon što je datoteka virtualnog hosta stvorena. Aktivirajte konfiguraciju.

sudo a2ensite redmine

Ponovno pokrenite Apache web poslužitelj.

sudo systemctl restart apache2

Sada možete pristupiti svom Redmine sučelju na http://redmine.example.com. Prijavite se s korisničkim imenom admini lozinkom admin. Prilikom vaše prve prijave, Redmine će od vas zatražiti da ažurirate lozinku.

Osiguravanje Apachea pomoću Let's Encrypt SSL

Budući da je naša Redmine instalacija na javnom poslužitelju, preporučuje se korištenje SSL-a za osiguranje razmjene podataka s poslužitelja.

Dodajte Certbot repozitorij.

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

Instalirajte Certbot, klijentsku aplikaciju za Let's Encrypt CA.

sudo apt -y install certbot

Napomena: Za dobivanje certifikata od Let's Encrypt CA, domena za koju se certifikati trebaju generirati mora biti usmjerena prema poslužitelju. Ako nije, izvršite potrebne promjene u DNS zapisima domene i pričekajte da se DNS širi prije nego što ponovno uputite zahtjev za certifikatom. Certbot provjerava autoritet domene prije pružanja certifikata.

Generirajte SSL certifikate.

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

Generirani certifikati vjerojatno će biti pohranjeni u /etc/letsencrypt/live/redmine.example.com/. SSL certifikat će biti pohranjen kao, cert.pem a privatni ključ će biti pohranjen kao privkey.pem.

Let's Encrypt certifikati istječu za 90 dana, stoga je preporučljivo postaviti automatsku obnovu certifikata pomoću Cron poslova.

Otvorite datoteku Cron posla za root korisnika.

sudo crontab -e

Dodajte sljedeći redak na kraj datoteke.

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

Gore navedeni Cron posao će se izvoditi svaki dan u 5:30 ujutro. Ako potvrda istekne, automatski će se obnoviti.

Omogućite SSL modul za Apache.

sudo a2enmod ssl

Uredite datoteku virtualnog hosta koju smo ranije kreirali za Redmine.

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

Izmijenite datoteku virtualnog hosta tako da bude slična sljedećoj.

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

<VirtualHost *:443>
    ServerAdmin admin@example.com
    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>

Spremite datoteku i izađite iz uređivača.

Ponovno pokrenite Apache kako bi promjene mogle stupiti na snagu.

sudo systemctl restart apache2

Sada možete pristupiti Redmineu preko HTTPS na https://redmine.example.com.

Čestitamo, uspješno ste instalirali Redmine na svoju instancu Ubuntu 16.04. Počnite razvijati svoj projekt stvaranjem ili uvozom projekta.

Ostavite komentar

Uspon strojeva: primjene AI u stvarnom svijetu

Uspon strojeva: primjene AI u stvarnom svijetu

Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.

DDOS napadi: kratak pregled

DDOS napadi: kratak pregled

Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.

Evolucija pohrane podataka – Infografika

Evolucija pohrane podataka – Infografika

Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više