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:

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

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

[email protected]:~# 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

[email protected]:~# 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

[email protected]:~# apt-get -y build-dep nginx

Instalujemy najnową wersja ruby oraz rails:

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

Można zweryfikować instalację:

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

Instalujemy passenger-a

[email protected]:~# gem install passenger --no-ri --no-rdoc

Instalujemy nginx-a wraz z passengr-em

[email protected]:~# 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

[email protected]:~# git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git
[email protected]:~# mv rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx
[email protected]:~# chown root:root /etc/init.d/nginx
[email protected]:~# 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.

[email protected]:~# 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:

[email protected]:~# cd /opt
[email protected]:/opt# svn co http://svn.redmine.org/redmine/branches/3.2-stable redmine

Teraz tworzymy pliki konfiguracyjne:

[email protected]:/opt/redmine# cd redmine
[email protected]:/opt/redmine# touch config/database.yml
[email protected]:/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

[email protected]:/opt/redmine# bundle install
bundle install --without development test

Nadajemy odpowiednie uprawnienia

[email protected]:/opt/redmine# chown -R www-data:www-data files log tmp public/plugin_assets config.ru
[email protected]:/opt/redmine# chmod -R 755 files log tmp public/plugin_assets

Tworzymy bazę MySQL oraz użytkownika

[email protected]:/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:

	
[email protected]:/opt/redmine# RAILS_ENV=production bundle exec rake db:migrate
[email protected]:/opt/redmine# RAILS_ENV=production bundle exec rake redmine:plugins

Dla środowiska deweloperskiego:

[email protected]:/opt/redmine# bundle exec rake db:migrate
[email protected]:/opt/redmine# bundle exec rake redmine:plugins

Generujemy tokeny (odpowiednio dla 2 środowisk):

[email protected]:/opt/redmine# rake secret RAILS_ENV=production
65f5408603da18ca9dbe27be58b7b409bbd274f34c897516ef7b85c3aebe9ec7f7d5d625789eda2969b0d8465ca31ee6c4d9a4a06fb714d25528c6622e02b7d4
[email protected]:/opt/redmine# rake secret RAILS_ENV=development
8854c12d9693c0e76be1eb94cdf672f313b292f14982c2b0fd0b7cebd618c425b6ea0b0d82d666904f124243fc66a18a0d57c2fc872f959614fc15c7391f2154

Tworzymy i zapisujemy tokeny w pliku:

[email protected]:/opt/redmine# touch config/secrets.yml
[email protected]:/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:

[email protected]:/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

[email protected]:/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:

[email protected]:/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.

[email protected]:/opt/redmine# crontab -e

Wpis:

* * * * * cd /opt/redmine; rake -f /opt/redmine/Rakefile redmine:email:receive_imap RAILS_ENV="production" host=localhost port=143 [email protected] 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ą [email protected] oraz tworzy nowego użyszkodnika w systemie – taki o ludek dostanie odpowiedniego maila zwrotnego z wygenerowanym hasłem.