Redmine - jak zacząć - odświeżone

Opis instalacji Redmine 2.3 na Cent OS 6.4 - zaktualizowana wersja wcześniejszego opisu.

Podstawy

Redmine do działania wymaga serwera Apache i bazy danych (np. MySQL) oraz najczęściej jest używany wraz z jakimś systemem kontroli wersji, zakładam, że to SVN. Na świeżym systemie trzeba doinstalować pakiety:

yum install httpd mysql-server subversion

Subversion (lub Mercurial) będzie także potrzeby do ściągnięcia źródeł Redmine'a.

Ruby

Wbrew temu co napisali zainstalowałem ruby z paczki (wersja prawie ta sama 1.8.7.358 a 1.8.7.352):

yum install ruby

doinstalowały się zależności: compat-readline5 i ruby-libs.

Następny etap to instalacja rubygems w wersji 1.4.2. W paczce jest 1.3.7, ale dokumentacja ostrzega tylko przed wersją 1.5, no to instaluję

yum install rubygems

doinstalowały się zależności: ruby-irb i ruby-rdoc.

Teraz zaczyna się magia. Instaluję jakieś cuda nie wiadomo gdzie i jak. Łatwiej by było z pakietów, ale przykład nie chce się zainstalować - brakuje libev.

gem install passenger

oczywiście błąd:

mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h

pewnie brakuje ruby-devel, i make , i gcc. Zainstalowałem:

yum install ruby-devel make gcc

teraz już poszło - nie wymagało gcc-c++.

Teraz powinno być

passenger-install-apache2-module

ale kreator grzecznie informuje, że pakiety devel są potrzebne, więc instaluję:

yum install gcc-c++ curl-devel openssl-devel zlib-devel \
                      httpd-devel apr-devel apr-util-devel

instalacja pakietów i instalacja (kompilacja) modułu chwilę trwa. Kreator pokazuje co trzeba dodać do konfiguracji serwera apache (będzie potrzebne później):

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.19
PassengerRuby /usr/bin/ruby

i jak podłączyć przykładową aplikację w ruby:

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:

   <VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public    
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
   </VirtualHost>

And that's it! You may also want to check the Users Guide for security and optimization tips, troubleshooting and other useful information:
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.18/doc/Users guide Apache.html

Instalacja i wstępna konfiguracja

Teraz ściągnąłem jak kazali:

cd /var/www
svn co http://svn.redmine.org/redmine/branches/2.3-stable redmine-2.3
ln -s redmine-2.3 redmine

i zrobiłem link, żeby był w standardowej ścieżce i łatwo było zrobić aktualizację.

Dygresja: Do działania svn z serwerami pośredniczącymi (proxy) trzeba zmienić konfigurację (jest w pliku np.: ~/.subversion/servers). Ustawienie zmiennej http_proxy nic nie da.

Założyłem bazę i użytkownika (tu opis dla MySQL):

create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'jakieshaslo';
grant all privileges on redmine.* to 'redmine'@'localhost';

Teraz dalej (oczywiście zamiast nano używam mcedit):

cd /var/www/redmine/config
cp database.yml.example database.yml
mcedit database.yml

zmieniłem tylko hasło w części production (i to spowodowało błąd później, najlepiej od razu ustawić też nazwę użytkownika).

Znowu magia:

cd /var/www/redmine
gem install bundler

Zainstalował się bundler-1.3.4. Plik /var/www/redmine/Gemfile już był (automagicznie) więc uruchomiłem:

bundle install

ale zwraca błąd:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

no to zgodnie z sugestią uruchomiłem (potem były jeszcze inne)

yum install libxml2-devel libxslt-devel mysql-devel

chwile to trwało. Teraz wysypał się na:

Installing rmagick (2.13.2)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.2. Can't find Magick-config in /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

no to doinstalowałem oczywiście

yum install ImageMagick-devel

i teraz poszło

Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

Konfiguracja właściwego Redmine'a

W pliku

/var/www/redmine/config/environment.rb

odkomentowałem linię

ENV['RAILS_ENV'] ||= 'production'

Magia (już się zaczynam przyzwyczajać):.

rake generate_secret_token

i jeszcze raz

RAILS_ENV=production rake db:migrate

tym razem pokazało błąd

rake aborted!
Access denied for user 'root'@'localhost' (using password: YES)

(See full trace by running task with --trace)

jak się okazało to błąd połączenia do bazy MySQL, poprawiłem nazwę użytkownika w pliku

config/database.yml

, bo przecież wcześniej zmieniłem tylko hasło ;-).

Pominąłem ładowanie domyślnych danych, bo było opcjonalne, ale i tak je załadowałem przy pierwszym zalogowaniu się. Można uruchomić:

RAILS_ENV=production rake redmine:load_default_data

Konfiguracja Apache.

Pozamieniałem nazwy skryptów CGI jak kazali:

cd /var/www/redmine/public
cp dispatch.fcgi.example dispatch.fcgi

nadal nic nie działa.

Teraz wg. HowTo configure Apache to run Redmine. Najpierw włączyłem obsługę wielu domen dopisując

NameVirtualHost *:80

w pliku /etc/httpd/conf/httpd.conf. Utworzyłem plik /etc/httpd/conf.d/redmine.conf z zawartością (na podstawie wzoru podanego przez instalator wcześniej):

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.19
PassengerRuby /usr/bin/ruby

<VirtualHost *:80>
    ServerName redmine.mojadomena.pl
    ServerAdmin ja@mojadomena.pl
    DocumentRoot /var/www/redmine/public/
    ErrorLog logs/redmine_error_log
   RailsEnv production

  <Directory /var/www/redmine/public/>
        Options Indexes ExecCGI FollowSymLinks
        Order allow,deny
        Allow from all
        AllowOverride all
    </Directory>
</VirtualHost>

zmieniłem uprawnienia do plików

cd /var/www
chown -R apache:apache redmine-2.3

jak widać zmieniam na katalogu gdzie są pliki, a nie na linku symbolicznym.

ale zamiast aplikacji wyświetlała mi się zawartość katalogu. Wskazówkę znalazłem w logach apache'a:

[error] *** Passenger could not be initialized because of this error: Unable to start the Phusion Passenger watchdog (/usr/lib/ruby/gems/1.8/gems/passenger-3.0.19/agents/PassengerWatchdog): Permission denied (13)

oraz /var/log/audit/audit.log:

type=SYSCALL msg=audit(1364567881.023:309): arch=c000003e syscall=0 success=no exit=-13 a0=b a1=7fbc8a040000 a2=400 a3=22 items=0 ppid=1 pid=14356 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4 comm="PassengerHelper" exe="/usr/lib/ruby/gems/1.8/gems/passenger-3.0.19/agents/apache2/PassengerHelperAgent" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

zamiast wyłączyć SELinux lepiej go skonfigurować:

setenforce Permissive
chcon -t httpd_t /usr/lib/ruby/gems/1.8/gems/passenger-3.0.19/agents/apache2/PassengerHelperAgent
chcon -t httpd_t /usr/lib/ruby/gems/1.8/gems/passenger-3.0.19/agents/PassengerWatchdog
setenforce Enforcing

Nadal nie chce działać - zamiast aplikacji wyświetlała mi się zawartość katalogu. Wskazówkę znalazłem w logach apache'a:

ERROR: Cannot create directory '/var/log/passenger-analytics': Permission denied (13)

rozwiązanie było proste:

mkdir /var/log/passenger-analytics

W końcu działa!

Zamiast puenty

Sprawdziłem magiczne instalatory:

which gem
yum provides /usr/bin/gem

plik gem jest w pakiecie rubygems (rubygems-1.3.7-1.el6.noarch) i instaluje pakiety w

/usr/lib/ruby/gems/1.8/gems

teraz już nie jest tak magicznie.

Kommentare

Bitte melden Sie sich Logan oder registrieren Sie sich um kommentieren zu können.

Just my blog...

Mon Di Mi Do Fr Sa So
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
eZ Publish™ copyright © 1999-2025 eZ Systems AS