Kako instalirati Redmine na CentOS 7

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 praćenja 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.

Ovaj vodič je napisan za Redmine 3.4.4, ali se može primijeniti i na novije verzije.

Preduvjeti

  • Instanca poslužitelja Vultr CentOS 7.
  • Korisnik sudoa .
  • Naziv domene usmjeren prema poslužitelju.

Za ovaj vodič koristit ćemo 192.168.1.1kao javnu IP adresu i redmine.example.comkao 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 CentOS 7 . 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 yum -y install httpd httpd-devel libcurl-devel

Za izradu Redmine aplikacije trebat će nam i neki razvojni alati. Instalirajte potrebne alate.

sudo yum -y install ImageMagick ImageMagick-devel git libxml2-devel libxslt-devel gcc bzip2 openssl-devel zlib-devel gdbm-devel ncurses-devel autoconf automake bison gcc-c++ libffi-devel libtool patch readline-devel sqlite-devel glibc-headers glibc-devel libyaml-devel libicu-devel libidn-devel

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 yumspremište sadrži staru verziju PostgreSQL-a, pa dodajte PostgreSQL spremište u sustav.

sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

Instalirajte PostgreSQL poslužitelj baze podataka.

sudo yum -y install postgresql10-server postgresql10-contrib postgresql10 

Inicijalizirajte bazu podataka.

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb

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

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

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 psqlljusku 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 DBPasswordsigurnom lozinkom. Napravite novu bazu podataka za instalaciju Redminea.

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

Izađite iz psqlljuske.

\q

Prebacite se na sudokorisnika.

exit

Uredite pg_hba.confdatoteku kako biste omogućili MD5 provjeru autentičnosti.

sudo nano /var/lib/pgsql/10/data/pg_hba.conf

Pronađite sljedeće retke i promijenite vrijednosti peeri identu METHODstupcu na trusti md5.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

Nakon ažuriranja, konfiguracija bi trebala izgledati ovako.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Ponovno pokrenite PostgreSQL kako bi promjene mogle stupiti na snagu.

sudo systemctl restart postgresql-10

Instalirajte još nekoliko potrebnih PostgreSQL ovisnosti.

sudo yum -y install libpqxx-devel protobuf-devel

Instalirajte Ruby

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 redmine
sudo su - redmine

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

Dodajte GPG ključ RVM-a na svoj poslužitelj.

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Instalirajte RVM.

curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm

Dohvati popis dostupnih verzija Rubyja.

rvm list known

Vidjet ćete dugačak popis verzija Rubyja.

[redmine@vultr ~]$ rvm list known
# MRI Rubies

[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head

...

Instalirajte najnoviju verziju Rubyja s popisa.

rvm install 2.4

Koristite instaliranu verziju Rubyja.

rvm use 2.4

Možete provjeriti njegovu verziju.

ruby -v

Vidjet ćete sličan izlaz.

[redmine@vultr ~]$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

Instalirajte 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

Osigurajte dopuštenje za izvršavanje početnom imeniku redminekorisnika. Putnik mora izvršiti binarne datoteke kako bi poslužio aplikaciju.

chmod o+x "/home/redmine"

Instalirajte Apache modul za Passenger.

passenger-install-apache2-module

The installer script will ask you some questions. First, it will provide you information about the installation process. Then it will ask you to select the language which you will be using. Since our application is written in Ruby on Rails, select Ruby from the menu and press "Enter" to proceed further.

Which languages are you interested in?

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

 ‣ ⬢  Ruby
   ⬡  Python
   ⬡  Node.js
   ⬡  Meteor

The installer will now check for requirements. The installer will not encounter any missing dependencies and will automatically proceed to compile and install the module.

Once the module is installed, it will prompt you to add the module into the Apache configuration file.

Almost there!

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

   LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
     PassengerDefaultRuby /home/redmine/.rvm/gems/ruby-2.4.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.

We will skip this for now and will complete it later in the tutorial as the user with which we are logged in now does not have sudo permissions. Press "Enter" to skip this step.

Finally, the installer script will validate the installation and you will see a warning saying the Passenger module is not specified in Apache configuration.

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/httpd/conf/httpd.conf.


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

Now that we have installed the Passenger module for Apache, proceed to download and install Redmine.

Install Redmine

Download the latest version of Redmine from the official Redmine download page.

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

Extract the archive and rename the directory for 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/pgsql-10/bin/pg_config

Install the application dependencies required by the application.

bundle install --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.
Use `bundle info [gemname]` to see where a bundled gem is installed.

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.

Instalacija Redmine aplikacije je sada završena. Promijenite vlasništvo i dopuštenja direktorija i datoteka.

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

Od neprivilegiranog korisnika smo konfigurirali sve što nam treba. Vratite se na sudokorisnika pokretanjem su - <username>.

Konfigurirajte Apache

Dodajte Passenger modul za Apache u Apache konfiguracijsku datoteku. Ovo će automatski učitati Passenger modul.

echo "LoadModule passenger_module /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/httpd/conf.modules.d/00-base.conf

Izradite novu virtualnu host datoteku za svoju Redmine aplikaciju.

sudo nano /etc/httpd/conf.d/redmine.conf

Popunite datoteku sljedećim sadržajem.

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

    DocumentRoot /home/redmine/redmine/public

    PassengerRoot /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
    PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
    PassengerUser redmine

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

Obavezno zamijenite redmine.example.comsvojim stvarnim imenom domene. Također, provjerite je li put do PassengerRooti PassengerRubyispravan. 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.

sudo su redmine -c "passenger-config about ruby-command"

Dobit ćete sljedeći izlaz.

[user@vultr ~]$ sudo su redmine -c "passenger-config about ruby-command"
passenger-config was invoked through the following Ruby interpreter:
  Command: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
  Version: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
  To use in Apache: PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
  To use in Nginx : passenger_ruby /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby
  To use with Standalone: /home/redmine/.rvm/gems/ruby-2.4.1/wrappers/ruby /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12/bin/passenger start

Nakon što je datoteka virtualnog hosta stvorena, ponovno pokrenite Apache web poslužitelj.

sudo systemctl restart httpd

Izmijenite konfiguraciju vatrozida kako biste dopustili port 80kroz vatrozid.

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --reload

Sada možete pristupiti svom Redmine sučelju na http://redmine.example.com. Prijavite se 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.

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

sudo yum -y install epel-release
sudo yum -y install certbot mod_ssl

Prije nego što možete zatražiti certifikate, morat ćete dopustiti port 80i/ 443ili standard HTTPi HTTPSusluge putem vatrozida. Budući da smo već 80ranije dopustili port , dopustimo port 443.

sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

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.pema 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 rootkorisnika.

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 certifikat istekne, automatski će se obnoviti.

Uredite datoteku virtualnog hosta koju smo ranije kreirali za Redmine.

sudo nano /etc/httpd/conf.d/redmine.conf

Izmijenite datoteku virtualnog hosta kako bi izgledala ovako.

<VirtualHost *:80>
    Redirect permanent / https://www.example.com/
    ServerName 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 /home/redmine/.rvm/gems/ruby-2.4.1/gems/passenger-5.1.12
    PassengerRuby /home/redmine/.rvm/gems/ruby-2.4.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 httpd

Sada možete pristup Redmine više HTTPSna https://redmine.example.com.

Čestitamo, uspješno ste instalirali Redmine na svoju instancu CentOS 7. 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