Jak zainstalować Redmine na Ubuntu 16.04

Redmine to bezpłatne i otwarte narzędzie do zarządzania projektami oparte na sieci Web. Jest napisany w Ruby on Rails i obsługuje wiele serwerów baz danych do przechowywania bazy danych. Jest to bogata w funkcje aplikacja obsługująca wiele projektów, ACL oparty na rolach i system śledzenia problemów. Ma również obsługę wykresów i kalendarza Gantta, zarządzanie plikami, wiki projektu i forum oraz wiele innych funkcji. Obsługuje systemy kontroli wersji, takie jak Git, SVN lub CVS. Jest także wielojęzyczny, obsługuje aż 49 języków.

Wymagania wstępne

  • Instancja serwera Vultr Ubuntu 16.04.
  • Użytkownik sudo .
  • Nazwa domeny wskazuje na serwer.

W tym samouczku użyjemy 192.168.1.1jako publicznego adresu IP i redmine.example.com nazwy domeny wskazanej na instancję Vultr. Pamiętaj, aby zastąpić wszystkie wystąpienia przykładowej nazwy domeny i adresu IP faktycznym.

Zaktualizuj system podstawowy, korzystając z przewodnika Jak zaktualizować system Ubuntu 16.04 . Po zaktualizowaniu systemu przejdź do instalacji zależności.

Zainstaluj Apache

Redmine jest napisany w Ruby on Rails, dlatego będziemy musieli zintegrować Phusion Passenger z serwerem WWW Apache w celu obsługi aplikacji.

Zainstaluj Apache.

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

Aby zbudować Ruby i Pasażera, potrzebujemy również narzędzi programistycznych. Zainstaluj wymagane narzędzia.

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

Zainstaluj PostgreSQL

Redmine obsługuje wiele typów serwerów baz danych, takich jak MySQL, PostgreSQL i MSSQL. W tym samouczku wykorzystamy PostgreSQL do obsługi serwera bazy danych Redmine.

PostgreSQL to obiektowo-relacyjny system baz danych. Domyślne repozytorium Ubuntu zawiera starą wersję PostgreSQL, więc dodaj repozytorium PostgreSQL do systemu.

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

Zainstaluj serwer bazy danych PostgreSQL.

sudo apt -y install postgresql

Uruchom serwer PostgreSQL i włącz go automatycznie podczas uruchamiania.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Zmień hasło dla domyślnego użytkownika PostgreSQL.

sudo passwd postgres

Zaloguj się jako użytkownik PostgreSQL.

sudo su - postgres

Utwórz nowego użytkownika PostgreSQL dla Redmine.

createuser redmine

Możesz używać dowolnej nazwy użytkownika zamiast redmine. PostgreSQL zapewnia psql powłokę do uruchamiania zapytań w bazie danych. Przejdź do powłoki PostgreSQL.

psql

Ustaw hasło dla nowo utworzonego użytkownika do bazy danych Redmine.

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

Zastąp DBPassword bezpiecznym hasłem. Utwórz nową bazę danych dla instalacji Redmine.

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

Wyjdź ze psql skorupy.

\q

Przejdź do sudo użytkownika.

exit

Zainstaluj jeszcze kilka wymaganych zależności PostgreSQL.

sudo apt -y install libpqxx-dev protobuf-compiler

Zainstaluj Ruby

Zainstalujemy najnowszą wersję Ruby przy użyciu RVM. Służy do instalowania i zarządzania wieloma wersjami Ruby.

Dodaj repozytorium RVM.

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

Zainstaluj RVM.

sudo apt -y install rvm

Ponieważ musimy zainstalować system Ruby na cały system, tymczasowo przełączymy się na użytkownika root.

sudo -i

Zaktualizuj zmienne środowiskowe.

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

Zainstaluj najnowszą wersję Ruby.

rvm install 2.5.1

Uwaga: Jeśli używasz innej wersji Ruby, odpowiednio zaktualizuj ścieżkę Ruby.

Użyj zainstalowanej wersji Ruby.

rvm use 2.5.1 --default

Możesz zweryfikować jego wersję.

ruby -v

Zobaczysz podobne wyjście.

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

Zainstaluj bundler, który jest menedżerem zależności dla aplikacji Ruby.

gem install bundler

Ruby jest teraz zainstalowany. Zanim zainstalujemy Redmine, będziemy musieli zainstalować Phusion Passenger.

Zainstaluj pasażera

Uruchom następujące polecenie, aby zainstalować program Passenger.

gem install passenger

Zainstaluj moduł Apache dla pasażera.

passenger-install-apache2-module

Skrypt instalatora zada kilka pytań. Po pierwsze, dostarczy ci informacji o procesie instalacji. Następnie poprosi cię o wybranie języka, którego będziesz używać. Ponieważ nasza aplikacja jest napisana w Ruby on Rails, wybierz Ruby z menu i naciśnij, ENTERaby przejść dalej.

Which languages are you interested in?

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

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

Instalator sprawdzi teraz wymagania. Instalator nie napotka żadnych brakujących zależności i automatycznie przystąpi do kompilacji i instalacji modułu.

Po zainstalowaniu modułu pojawi się monit o dodanie modułu do pliku konfiguracyjnego 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.

Na razie pomińmy to i ukończymy później w samouczku. Naciśnij, ENTERaby pominąć ten krok.

Na koniec skrypt instalatora zweryfikuje instalację i zobaczysz ostrzeżenie, że moduł pasażera nie jest określony w konfiguracji 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.

Po zainstalowaniu modułu Passenger dla Apache przejdź do pobrania i instalacji Redmine. Przełącz się sudoponownie na użytkownika, ponieważ nie musimy uruchamiać więcej poleceń za pomocą rootużytkownika.

exit

Zainstaluj Redmine

Zaleca się korzystanie z nieuprzywilejowanego użytkownika w celu uruchomienia aplikacji w celu odizolowania jej od reszty systemu. Utwórz nowego użytkownika dla Redmine i przejdź do nowo utworzonego użytkownika.

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

Pobierz najnowszą wersję Redmine z oficjalnej strony pobierania Redmine .

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

Wypakuj archiwum i zmień nazwę katalogu dla wygody.

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

Skopiuj przykładowe pliki konfiguracyjne do lokalizacji produkcyjnej.

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

Otwórz plik konfiguracji bazy danych, który właśnie skopiowaliśmy, aby wprowadzić szczegóły bazy danych.

nano config/database.yml

Domyślnie plik bazy danych jest skonfigurowany dla MySQL. Znajdź konfiguracje dla produkcji i rozwoju oraz przetestuj, który korzysta z adaptera MySQL. Skomentuj wszystkie te linie.

#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, znajdź linie, które są komentowane, mając production konfigurację postgresql adaptera. Usuń komentarz z tych wierszy i zaktualizuj nazwę bazy danych i poświadczenia użytkownika. Upewnij się, że używasz prawidłowego wcięcia, czyli dwóch spacji.

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

Skonfiguruj aplikację do korzystania z konfiguracji PostgreSQL.

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

Zainstaluj zależności wymagane przez aplikację.

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

Na końcu instalacji zobaczysz następujący komunikat.

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`

Poniższe polecenie generuje tajne tokeny używane do kodowania danych sesji.

bundle exec rake generate_secret_token

Napisz bazę danych PostgreSQL.

RAILS_ENV=production bundle exec rake db:migrate

Uruchom następujące polecenie, które zapisuje dane domyślne w bazie danych PostgreSQL.

RAILS_ENV=production bundle exec rake redmine:load_default_data

Powyższe polecenie poprosi o wybranie domyślnego języka, który będzie używany w aplikacji. Domyślnym wyborem jest angielski; wybierz zgodnie ze swoimi preferencjami.

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

Instalacja aplikacji Redmine jest teraz zakończona. Zmień własność i uprawnienia do katalogów i plików.

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

Skonfigurowaliśmy wszystko, czego potrzebujemy od nieuprzywilejowanego użytkownika. Wróć do sudo użytkownika, uruchamiając su - <username>.

Skonfiguruj Apache

Dodaj moduł pasażera dla Apache do pliku konfiguracyjnego Apache. Spowoduje to automatyczne załadowanie modułu pasażera.

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

Uwaga: Ścieżka do modułu pasażera może ulec zmianie, gdy pojawi się nowa wersja pasażera. Aby znaleźć ścieżkę do modułu, użyj sudo find / -name mod_passenger.sopolecenia.

Utwórz nowy plik wirtualnego hosta dla swojej aplikacji Redmine.

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

Wypełnij plik następującą zawartością.

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

Pamiętaj, aby zastąpić redmine.example.com rzeczywistą nazwą domeny. Upewnij się również, że ścieżka do PassengerRoot i PassengerDefaultRuby są poprawne. Ścieżka do plików binarnych może ulec zmianie, gdy pojawi się nowa wersja Ruby lub Passenger. Aby znaleźć te ścieżki, uruchom następujące polecenie.

passenger-config about ruby-command

Otrzymasz następujące dane wyjściowe.

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

Po utworzeniu pliku hosta wirtualnego. Aktywuj konfigurację.

sudo a2ensite redmine

Uruchom ponownie serwer WWW Apache.

sudo systemctl restart apache2

Możesz teraz uzyskać dostęp do interfejsu Redmine na http://redmine.example.com. Zaloguj się przy użyciu nazwy użytkownika admini hasła admin. Przy pierwszym logowaniu Redmine poprosi o aktualizację hasła.

Zabezpieczanie Apache za pomocą Let's Encrypt SSL

Ponieważ nasza instalacja Redmine odbywa się na publicznym serwerze, zaleca się stosowanie protokołu SSL w celu zabezpieczenia wymiany danych z serwera.

Dodaj repozytorium Certbot.

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

Zainstaluj Certbot, czyli aplikację kliencką Let's Encrypt CA.

sudo apt -y install certbot

Uwaga: Aby uzyskać certyfikaty z Let's Encrypt CA, domena, dla której mają być generowane certyfikaty, musi być skierowana w stronę serwera. Jeśli nie, dokonaj niezbędnych zmian w rekordach DNS domeny i poczekaj na propagację DNS przed ponownym żądaniem certyfikatu. Certbot sprawdza urząd domeny przed podaniem certyfikatów.

Wygeneruj certyfikaty SSL.

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

Wygenerowane certyfikaty prawdopodobnie będą przechowywane /etc/letsencrypt/live/redmine.example.com/. Certyfikat SSL będzie przechowywany jako, cert.pem a klucz prywatny będzie przechowywany jako privkey.pem.

Ważność certyfikatów Let's Encrypt wygasa za 90 dni, dlatego zaleca się skonfigurowanie automatycznego odnawiania certyfikatów za pomocą zadań Cron.

Otwórz plik zadania Cron dla root użytkownika.

sudo crontab -e

Dodaj następujący wiersz na końcu pliku.

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

Powyższe zadanie Crona będzie uruchamiane codziennie o 5:30. Jeśli certyfikat wygasa, zostanie automatycznie odnowiony.

Włącz moduł SSL dla Apache.

sudo a2enmod ssl

Edytuj plik hosta wirtualnego, który wcześniej utworzyliśmy dla Redmine.

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

Zmodyfikuj plik wirtualnego hosta, aby był podobny do następującego.

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

Zapisz plik i wyjdź z edytora.

Zrestartuj Apache, aby zmiany mogły zostać wprowadzone.

sudo systemctl restart apache2

Możesz teraz uzyskać dostęp do Redmine HTTPS na stronie https://redmine.example.com.

Gratulacje, pomyślnie zainstalowałeś Redmine w instancji Ubuntu 16.04. Rozpocznij opracowywanie projektu, tworząc go lub importując.



Leave a Comment

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.