Instalacja Redmine 3.2 - Ubuntu/Debian - Nginx

Instalacja Redmine 3.2 - Ubuntu/Debian - Nginx

Poniżej pdrzedstawiam szybki, prosty jak sądze :) opis instalacji aplikacji Redmine w systemie Debian/Ubuntu z wykorzystaniem nginx-a jako reversproxy.
Wstępna konfiguracja systemu:

root@redmine:~# apt-get update
root@redmine:~# apt-get -y dist-upgrade
root@redmine:~# dpkg-reconfigure locales
-- pl_PL.UTF-8
root@redmine:~# echo "LC_ALL=pl_PL.UTF-8" >> /etc/default/locale
root@redmine:~# dpkg-reconfigure tzdata
-- Europe/Warsaw

I przelogować się trzeba lub ponownie wejść w bash-a.
Dodajemy repozytoria ze źródłami:

root@redmine:~# vi /etc/apt/sources.list

Powielamy to co mamy i dorzucamy jako deb-src

deb http://ftp.debian.org/debian jessie main contrib
deb http://ftp.debian.org/debian jessie-updates main contrib
deb http://security.debian.org jessie/updates main contrib
deb-src http://ftp.debian.org/debian jessie main contrib
deb-src http://ftp.debian.org/debian jessie-updates main contrib
deb-src http://security.debian.org jessie/updates main contrib

Teraz instalacja zależności

root@redmine:~# apt-get -y install mariadb-client mariadb-server libmysqlclient-dev git-core subversion imagemagick libmagickwand-dev libcurl4-openssl-dev build-essential libmariadbd-dev libmariadb-client-lgpl-dev curl

Dorzucamy zależności wymagane do kompilacji nginx-a

root@redmine:~# apt-get -y build-dep nginx

Instalujemy najnową wersja ruby oraz rails:

root@redmine:~# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
root@redmine:~# \curl -sSL https://get.rvm.io | bash -s stable --rails
root@redmine:~# source /usr/local/rvm/scripts/rvm
root@redmine:~# echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"' >> ~/.bashrc

Można zweryfikować instalację:

root@redmine:~# ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
root@redmine:~# rails -v
Rails 4.2.6

Instalujemy passenger-a

root@redmine:~# gem install passenger --no-ri --no-rdoc

Instalujemy nginx-a wraz z passengr-em

root@redmine:~# passenger-install-nginx-module

Seria pytań przed kompilacją – zostawiam domyślnie /opt/nginx jako katalog instalacji

Which languages are you interested in?

Use  to select.
If the menu doesnt display correctly, press '!'

   ⬢  Ruby
 ‣ ⬡  Python
   ⬡  Node.js
   ⬡  Meteor

Enter your choice (1 or 2) or press Ctrl-C to abort: 1 
Please specify a prefix directory [/opt/nginx]: - enter

* 1. Yes: download, compile and install Nginx for me.
Dorzucamy skrypty startowe dla skompilowanego nginx-a

root@redmine:~# git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git
root@redmine:~# mv rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx
root@redmine:~# chown root:root /etc/init.d/nginx
root@redmine:~# update-rc.d nginx defaults

Czas zmienić troszkę konfigurację nginx-a a dokładniej sekcji server. Ta która jest domyślnie może zostać wykasowana i wrzucona ta poniżej.

root@redmine:~# vi /opt/nginx/conf/nginx.conf

Zapis sekcji server, uruchamiamy passenger-a oraz wskazujemy root katalog publiczny Redmine:

server {
  listen  80;
  server_name ;
  root /opt/redmine/public;
  passenger_enabled on;
  client_max_body_size      10m; #Maksymalny upload pliku 10mb
}

Pobieramy najnowszą wersje Redmine:

root@redmine:~# cd /opt
root@redmine:/opt# svn co http://svn.redmine.org/redmine/branches/3.2-stable redmine

Teraz tworzymy pliki konfiguracyjne:

root@redmine:/opt/redmine# cd redmine
root@redmine:/opt/redmine# touch config/database.yml
root@redmine:/opt/redmine# vi config/database.yml

Zawartość:

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

development:
  adapter: mysql2
  database: redmine 
  host: localhost
  username: redmine
  password: redmine
  encoding: utf8

Instalujemy zależności Redmine

root@redmine:/opt/redmine# bundle install
bundle install --without development test

Nadajemy odpowiednie uprawnienia

root@redmine:/opt/redmine# chown -R www-data:www-data files log tmp public/plugin_assets config.ru
root@redmine:/opt/redmine# chmod -R 755 files log tmp public/plugin_assets

Tworzymy bazę MySQL oraz użytkownika

root@redmine:/opt/redmine# mysql -p

CREATE DATABASE redmine character SET utf8;
CREATE user 'redmine'@'localhost' IDENTIFIED BY 'redmine';
GRANT ALL privileges ON redmine.* TO 'redmine'@'localhost';
exit

Robimy deploy bazy danych (wybieramy co tam chcemy).
Dla środowiska produkcyjnego:

	
root@redmine:/opt/redmine# RAILS_ENV=production bundle exec rake db:migrate
root@redmine:/opt/redmine# RAILS_ENV=production bundle exec rake redmine:plugins

Dla środowiska deweloperskiego:

root@redmine:/opt/redmine# bundle exec rake db:migrate
root@redmine:/opt/redmine# bundle exec rake redmine:plugins

Generujemy tokeny (odpowiednio dla 2 środowisk):

root@redmine:/opt/redmine# rake secret RAILS_ENV=production
65f5408603da18ca9dbe27be58b7b409bbd274f34c897516ef7b85c3aebe9ec7f7d5d625789eda2969b0d8465ca31ee6c4d9a4a06fb714d25528c6622e02b7d4
root@redmine:/opt/redmine# rake secret RAILS_ENV=development
8854c12d9693c0e76be1eb94cdf672f313b292f14982c2b0fd0b7cebd618c425b6ea0b0d82d666904f124243fc66a18a0d57c2fc872f959614fc15c7391f2154

Tworzymy i zapisujemy tokeny w pliku:

root@redmine:/opt/redmine# touch config/secrets.yml
root@redmine:/opt/redmine# vi config/secrets.yml

Zawartość pliku:

production:
  secret_key_base: 65f5408603da18ca9dbe27be58b7b409bbd274f34c897516ef7b85c3aebe9ec7f7d5d625789eda2969b0d8465ca31ee6c4d9a4a06fb714d25528c6622e02b7d4
  secret_token: 65f5408603da18ca9dbe27be58b7b409bbd274f34c897516ef7b85c3aebe9ec7f7d5d625789eda2969b0d8465ca31ee6c4d9a4a06fb714d25528c6622e02b7d4

development:
  secret_key_base: 8854c12d9693c0e76be1eb94cdf672f313b292f14982c2b0fd0b7cebd618c425b6ea0b0d82d666904f124243fc66a18a0d57c2fc872f959614fc15c7391f2154
  secret_token: 8854c12d9693c0e76be1eb94cdf672f313b292f14982c2b0fd0b7cebd618c425b6ea0b0d82d666904f124243fc66a18a0d57c2fc872f959614fc15c7391f2154

Uruchamiamy Redmine:

root@redmine:/opt/redmine# /etc/init.d/nginx start

Dodatkowo w konfiguracji nginx w sekcji server można zmieniać środowisko za pomocą zmiennej rails_env

rails_env development;

Całość instalacji zajeła mi jakies 40 minut – nie licząc instalacji systemu – systemem jest Debian Jessi jako maszyna wirtualna z 2GB pamięci RAM oraz jednym procesorem z jednym rdzeniem
Domyślny login i hasło to „admin”.

Aby Redmine wysyłał maile należy to skonfigurowac w pliku: config/configuration.yml

root@redmine:/opt/redmine# cp config/configuration.yml.example config/configuration.yml

Zawartości nie opisuje, wszystko jest w pliku. Po dokonaniu zmian trzeba zrestartować aplikacje. Możemy tego dokonać restartem nginx-a lub tworząc odpowiedni plik:

root@redmine:/opt/redmine# touch /opt/redmine/tmp/restart.txt

Aby Redmine odbierał maile oraz tak jak w moim przypadku dodawał jako ticket od klienta do projektu zgłoszenia trzeba dodać odpwiedni wpis do crona. Uprzednio tworzymy projekt Zgłoszenia, gdzie indentyfikator już wpisujemy bez polskich znaków.

root@redmine:/opt/redmine# crontab -e

Wpis:

* * * * * cd /opt/redmine; rake -f /opt/redmine/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=localhost port=143 username=support@domena.pl password="haslo" folder=INBOX allow_override=tracker,project,category,priority delete_unprocessed=0 unknown_user=create project=zgloszenia

Wpis ten sprawdza co minutę skrzynkę pocztową support@domena.pl oraz tworzy nowego użyszkodnika w systemie – taki o ludek dostanie odpowiedniego maila zwrotnego z wygenerowanym hasłem.