Cum se instalează Redmine pe Ubuntu 16.04

Redmine este un instrument gratuit și deschis de gestionare a proiectelor bazat pe web. Este scris în Ruby on Rails și acceptă mai multe servere de baze de date pentru stocarea bazei de date. Este o aplicație bogată în caracteristici care acceptă mai multe proiecte, ACL bazat pe roluri și un sistem de urmărire a problemelor. Are, de asemenea, suport Gantt și calendar, gestionarea fișierelor, pe proiectul wiki și forum, precum și multe alte funcții. Suporta sisteme de control a versiunilor precum Git, SVN sau CVS. De asemenea, este multilingvă, sprijinind până la 49 de limbi.

Cerințe preliminare

  • O instanță a serverului Vultr Ubuntu 16.04.
  • Un utilizator sudo .
  • Un nume de domeniu îndreptat către server.

Pentru acest tutorial, vom folosi 192.168.1.1ca adresă IP publică și redmine.example.com ca nume de domeniu indicat spre instanța Vultr. Vă rugăm să vă asigurați că înlocuiți toate aparițiile numelui de domeniu și adresa IP de exemplu cu una reală.

Actualizați-vă sistemul de bază utilizând ghidul Cum să actualizați Ubuntu 16.04 . După ce sistemul dvs. a fost actualizat, continuați să instalați dependențele.

Instalați Apache

Redmine este scris în Ruby on Rails, astfel că vom solicita Phusion Passenger să se integreze cu serverul web Apache pentru a servi aplicația.

Instalați Apache.

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

Pentru a construi Ruby și Pasagerul, vom avea nevoie și de câteva instrumente de dezvoltare. Instalați instrumentele necesare.

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

Instalați PostgreSQL

Redmine acceptă mai multe tipuri de servere de baze de date, cum ar fi MySQL, PostgreSQL și MSSQL. În acest tutorial, vom folosi PostgreSQL pentru a găzdui serverul de baze de date Redmine.

PostgreSQL este un sistem de baze de date relațional cu obiecte. Depozitul Ubuntu implicit conține o versiune veche de PostgreSQL, deci adăugați depozitul PostgreSQL la 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

Instalați serverul de baze de date PostgreSQL.

sudo apt -y install postgresql

Porniți serverul PostgreSQL și permiteți-l să pornească automat la momentul de pornire.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Modificați parola pentru utilizatorul implicit PostgreSQL.

sudo passwd postgres

Conectați-vă ca utilizator PostgreSQL.

sudo su - postgres

Creați un nou utilizator PostgreSQL pentru Redmine.

createuser redmine

Aveți dreptul să utilizați orice nume de utilizator în loc de redmine. PostgreSQL oferă psql shell - ul pentru a rula interogări pe baza de date. Comutați la shell-ul PostgreSQL.

psql

Setați o parolă pentru utilizatorul nou creat pentru baza de date Redmine.

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

Înlocuiți DBPassword cu o parolă sigură. Creați o nouă bază de date pentru instalarea Redmine.

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

Ieșiți din psql coajă.

\q

Comutați la sudo utilizator.

exit

Instalați alte câteva dependențe PostgreSQL necesare.

sudo apt -y install libpqxx-dev protobuf-compiler

Instalați Ruby

Vom instala cea mai recentă versiune de Ruby folosind RVM. Este folosit pentru instalarea și gestionarea mai multor versiuni de Ruby.

Adăugați depozitul RVM.

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

Instalați RVM.

sudo apt -y install rvm

Deoarece trebuie să instalăm sistemul Ruby pe larg, vom trece temporar la utilizatorul root.

sudo -i

Actualizați variabilele de mediu.

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

Instalați cea mai recentă versiune de Ruby.

rvm install 2.5.1

Notă: Dacă utilizați o altă versiune de Ruby, asigurați-vă că actualizați calea Ruby în consecință.

Folosiți versiunea instalată de Ruby.

rvm use 2.5.1 --default

Puteți verifica versiunea sa.

ruby -v

Veți vedea o ieșire similară.

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

Instalați bundler, care este managerul de dependență pentru aplicația Ruby.

gem install bundler

Ruby este acum instalat. Înainte de a instala Redmine, va trebui să instalăm Phusion Passenger.

Instalați pasagerul

Rulați următoarea comandă pentru a instala Pasagerul.

gem install passenger

Instalați modulul Apache pentru pasager.

passenger-install-apache2-module

Scriptul instalatorului vă va pune câteva întrebări. În primul rând, vă va oferi informații despre procesul de instalare. Apoi, vă va cere să selectați limba pe care o veți utiliza. Deoarece aplicația noastră este scrisă în Ruby on Rails, selectați Ruby din meniu și apăsați ENTERpentru a continua.

Which languages are you interested in?

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

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

Instalatorul va verifica acum cerințele. Instalatorul nu va întâmpina nicio dependență care lipsește și va continua automat la compilarea și instalarea modulului.

După instalarea modulului, vă va solicita să adăugați modulul în fișierul de configurare 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.

Vom sări acest lucru deocamdată și îl vom completa mai târziu în tutorial. Apăsați ENTERpentru a omite acest pas.

În cele din urmă, script-ul de instalare va valida instalarea și veți vedea un avertisment care spune că modulul Pasager nu este specificat în configurația 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.

Acum că am instalat modulul Pasager pentru Apache, continuați să descărcați și să instalați Redmine. Comutați din sudonou la utilizator, deoarece nu este nevoie să mai executăm comenzi cu rootutilizatorul.

exit

Instalează Redmine

Este recomandat să utilizați un utilizator nepriviat pentru a rula aplicația pentru a o ține izolată de restul sistemului. Creați un utilizator nou pentru Redmine și treceți la un utilizator nou creat.

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

Descărcați cea mai recentă versiune de Redmine de pe pagina oficială de descărcare Redmine .

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

Extrageți arhiva și redenumiți directorul din motive de comoditate.

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

Copiați fișierele de configurare de exemplu în locația de producție.

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

Deschideți fișierul de configurare a bazei de date pe care tocmai l-am copiat pentru a introduce detaliile bazei de date.

nano config/database.yml

În mod implicit, fișierul bazei de date este configurat pentru MySQL. Găsiți configurațiile pentru producție și dezvoltare și testați care utilizează adaptorul MySQL. Comentați toate aceste rânduri.

#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, găsiți liniile care sunt comentate, având production configurația pentru postgresql adaptor. Deconectați liniile respective și actualizați numele bazei de date și datele de acreditare ale utilizatorului. Asigurați-vă că folosiți indentarea corectă, care este în două spații.

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

Configurați aplicația pentru a utiliza configurația PostgreSQL.

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

Instalați dependențele cerute de aplicație.

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

La sfârșitul instalării veți vedea următorul mesaj.

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`

Următoarea comandă generează jetoane secrete care sunt utilizate pentru codificarea datelor sesiunii.

bundle exec rake generate_secret_token

Scrieți baza de date PostgreSQL.

RAILS_ENV=production bundle exec rake db:migrate

Rulați următoarea comandă, care scrie datele implicite în baza de date PostgreSQL.

RAILS_ENV=production bundle exec rake redmine:load_default_data

Comanda de mai sus vă va solicita să alegeți limba implicită care va fi utilizată cu aplicația. Alegerea implicită este engleza; alegeți în funcție de preferințe.

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

Instalarea aplicației Redmine este acum terminată. Modificați proprietatea și permisiunile directoarelor și fișierelor.

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

Am configurat tot ce avem nevoie de la utilizatorul ne privilegiat. Comutați înapoi la sudo utilizator rulând su - <username>.

Configurați Apache

Adăugați modulul Pasager pentru Apache în fișierul de configurare Apache. Aceasta va încărca automat modulul Pasager.

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

Notă: Calea către modulul Pasager se poate schimba atunci când există o nouă versiune a Pasagerului. Pentru a găsi calea către modul, utilizați sudo find / -name mod_passenger.socomanda.

Creați un nou fișier gazdă virtual pentru aplicația dvs. Redmine.

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

Populați fișierul cu următorul conținut.

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

Asigurați-vă că înlocuiți redmine.example.com cu numele dvs. de domeniu real. De asemenea, asigurați-vă că calea către PassengerRoot și PassengerDefaultRuby sunt corecte. Calea către binare se poate schimba atunci când există o nouă versiune de Ruby sau Pasager. Pentru a găsi aceste căi, executați următoarea comandă.

passenger-config about ruby-command

Veți obține următoarele rezultate.

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

Odată creat fișierul gazdă virtuală. Activați configurația.

sudo a2ensite redmine

Reporniți serverul web Apache.

sudo systemctl restart apache2

Acum puteți accesa interfața Redmine pe http://redmine.example.com. Autentificați-vă cu numele de utilizator adminși parola admin. La prima conectare, Redmine vă va solicita să actualizați parola.

Securizarea Apache cu Let's Encrypt SSL

Întrucât instalarea noastră Redmine este pe un server cu vedere publică, se recomandă utilizarea SSL pentru a asigura schimbul de date de pe server.

Adăugați depozitul Certbot.

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

Instalați Certbot, care este aplicația client pentru Let's Encrypt CA.

sudo apt -y install certbot

Notă: Pentru a obține certificate de la Let's Encrypt CA, domeniul pentru care se vor genera certificatele trebuie îndreptat către server. Dacă nu, faceți modificările necesare în înregistrările DNS ale domeniului și așteptați propagarea DNS înainte de a face din nou cererea de certificare. Certbot verifică autoritatea domeniului înainte de furnizarea certificatelor.

Generați certificatele SSL.

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

Este posibil ca certificatele generate să fie stocate în /etc/letsencrypt/live/redmine.example.com/. Certificatul SSL va fi stocate ca cert.pem și cheia privată vor fi stocate ca privkey.pem.

Să criptăm certificatele să expire în 90 de zile, de aceea este recomandat să configurați reînnoirea automată a certificatelor folosind joburi Cron.

Deschideți fișierul de lucru Cron pentru root utilizator.

sudo crontab -e

Adăugați următoarea linie la sfârșitul fișierului.

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

Locul de muncă Cron de mai sus se va desfășura în fiecare zi la 5:30 AM. Dacă certificatul expiră, acesta va fi reînnoit automat.

Activați modulul SSL pentru Apache.

sudo a2enmod ssl

Editați fișierul gazdă virtual pe care l-am creat anterior pentru Redmine.

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

Modificați fișierul gazdă virtuală pentru a fi similar cu următoarele.

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

Salvați fișierul și ieșiți din editor.

Reporniți Apache pentru ca modificările să aibă efect.

sudo systemctl restart apache2

Acum puteți accesa Redmine over HTTPS at https://redmine.example.com.

Felicitări, ați instalat cu succes Redmine pe instanța Ubuntu 16.04. Începeți să dezvoltați proiectul dvs. fie prin crearea sau importarea proiectului.



O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe