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? Useto 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.