Solaris10:Apacheとredmineの連係

提供:KinusatiWiki
移動: 案内, 検索

目次

Apache環境でのredmine連係

redmineはrailsで動作するオープンソースのプロジェクト管理ツールである。 今回はredmineをApache2.2と連係させる構成で構築してみた。

なお環境はSolaris10(SPARC)である。 Solaris10環境にインストールするのはなかなか骨が折れるのではまりどころも踏まえて説明する。

インストール

Apache 2.2のインストール

Apache-2.2.14導入を参照

MySQL 5.5のインストール

MySQL 5.5.2-m2導入を参照

ruby 1.8.7のインストール

rubyのコンパイル & 導入作業を参照

gemのインストール

rubyのライブラリインストールにgemを利用します。

# wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
# gzip -dc rubygems-1.3.6.tgz | /usr/sfw/bin/gtar xf -
# cd rubygems-1.3.6
# ruby setup.rb

MySQL/rubyのインストール

redmineのデータベースにMySQLを利用するためMySQL/rubyをインストールします。--with-mysql-configでmysql_configコマンドのフルパスを指定することで必要な環境情報が引き渡されます。

# wget http://rubyforge.org/frs/download.php/69181/mysql-ruby-2.8.2.tar.gz
# ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config
# gmake
# gmake install

本当はgem install mysql -- --with-mysql-configでmysql_configで一括インストールしたかったのですが、redmineの設定中に以下のエラーが出たのでやむなく手動インストールにしています。

  • エラー1(redmine-0.9.2等)
# rake db:migrate RAILS_ENV="production"
(in /usr/local/redmine)
rake aborted!
Object is not missing constant Project!

(See full trace by running task with --trace)
  • エラー2(redmine-0.8.7の場合)
# rake db:migrate RAILS_ENV="production"
(in /home/hoge/redmine-0.8.7)
rake aborted!
uninitialized constant MysqlCompat::MysqlRes

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

ライブラリパスの問題かどうかはワカラナイですがgem install mysqlの場合はMySQL/rubyが正常に動作しないことが原因のようです。

railsのインストール

redmineはrails 2.3.5で動作するのでバージョンを指定してインストール

# gem install -v=2.3.5 rails

passengerのインストール

Apacheとrailsを連係させるためにpassengerを利用します。 ApacheにDSOで組み込むためapacheのバイナリインストールディレクトリにPATHを通します。

# gem install passenger
# export PATH=/usr/local/apache2/bin:$PATH
# passenger-install-apache2-module

インストールの最後にApacheへの設定変更指示が出ますのでhttpd.confに反映します。

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

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

なおインストールされるpassengerのバージョンが2.2.5だとSolarisの場合以下のエラーが出ますので、 2.2.7以降に適宜バージョンアップしてください。

g++ -Iext -fPIC -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE -I/usr/local/apr/include/apr-1 -I/usr/local/apr/include/apr-1 -I/usr/local/BerkeleyDB.4.7/include -I/usr/local/include -I/usr/local/apache2/include -D_REENTRANT -I/usr/local/include -D_XOPEN_SOURCE=500 -D_XPG4_2 -D__EXTENSIONS__ -D__SOLARIS__ -D_FILE_OFFSET_BITS=64 -DBOOST_HAS_STDINT_H -mcpu=ultrasparc -Wall -g -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -o ext/apache2/libboost_oxt/oxt/thread.o -c ext/oxt/thread.cpp
In file included from ext/oxt/thread.cpp:26:
ext/oxt/thread.hpp:115: error: `long int _sysconf(int)' cannot appear in a constant-expression
ext/oxt/thread.hpp:115: error: a function call cannot appear in a constant-expression
rake aborted!
Command failed with status (1): [g++ -Iext -fPIC -DSOLARIS2=10 -D_POSIX_PTH...]
/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/Rakefile:128:in `define_libboost_oxt_task'
(See full trace by running task with --trace)

--------------------------------------------

It looks like something went wrong

Please read our Users guide for troubleshooting tips:

   /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5/doc/Users guide Apache.html
 
If that doesn't help, please use our support facilities at:

   http://www.modrails.com/

We'll do our best to help you.

バージョンアップは以下の方法で出来ます。

# gem update

or

# gem install passenger --version=2.2.7

redmineのインストール

redmine-0.9.2をインストールします。インストールディレクトリは/usr/local/redmineです。

# wget http://rubyforge.org/frs/download.php/69052/redmine-0.9.2.tar.gz
# gzip -dc redmine-0.9.2.tar.gz | /usr/sfw/bin/gtar xf - 
# mv redmine-0.9.2 /usr/local/redmine

なおredmineの操作ユーザをwebservd:webservdに変更しておきます。 こうすることでログ出力やファイルアップロード等がApache連携下でも使えます。

# chown -R webservd:webservd /usr/local/redmine

Apacheで公開するための追加設定

私の環境では/redmine/で公開したかったので以下のように設定しました。また動作ユーザをwebservdに変更しています(デフォルトはnobody?)

# vi /usr/local/apache2/conf/httpd.conf
RailsBaseURI /redmine
RailsDefaultUser webservd

Apacheのドキュメントルート配下からシンボリックリンクを作成する必要があります。 ドキュメントルートが/usr/local/apache2/htdocsなので、/usr/local/apache2/htdocs/redmineから/usr/local/redmine/publicに対してシンボリックリンクを作成

# ln -s /usr/local/redmine/public /usr/local/apache2/htdocs/redmine

エイリアス動作を試してみたのですが、現時点ではうまくいきませんでした。残念。

設定

redmineのDB作成

redmineのDBにはMySQLを利用しますので、MySQL側でredmineのデータベースを作成します。 ここではredmineユーザにredmineデータベースの管理者権限を与えています。

# /usr/local/mysql/bin/mysql -uroot -p<パスワード>
SQL> CREATE DATABASE IF NOT EXISTS `redmine` default character set utf8;
SQL> CREATE USER 'redmine'@'%' IDENTIFIED BY 'hugahuga';
SQL> GRANT USAGE ON * . * TO 'redmine'@'%' IDENTIFIED BY 'hugahuga';
SQL> GRANT ALL PRIVILEGES ON `redmine` . * TO 'redmine'@'%';
SQL> CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'hugahuga';
SQL> GRANT USAGE ON * . * TO 'redmine'@'localhost' IDENTIFIED BY 'hugahuga';
SQL> GRANT ALL PRIVILEGES ON `redmine` . * TO 'redmine'@'localhost';

redmineのDB設定

上記で作成したMySQLデータベースに対してredmineから接続する情報を設定します。

# cd /usr/local/redmine
# cp config/database.yml.example config/database.yml
# vi config/database.yml
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: hugahuga
  encoding: utf8

データ投入

初期データの作成を行います。

# rake config/initializers/session_store.rb
# rake db:migrate RAILS_ENV="production"
# rake redmine:load_default_data RAILS_ENV="production"
=> 言語に"ja"を指定する

実行例)

# rake redmine:load_default_data RAILS_ENV="production"
(in /usr/local/redmine)
 
Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.

動作

Apacheを起動すればできあがりです。

# svcadm enable http

or

# /usr/local/apache2/bin/apachectl start

プロセスにpassengerがいる事がわかります。

# ps -ef | fgrep ruby
    root 23598 23499   0 18:26:00 pts/3       0:00 fgrep ruby
    root 23579 23578   1 18:25:29 ?           0:00 /usr/local/bin/ruby /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/bin/pass
    root  5108     1   0   Feb 23 ?           0:29 ruby script/server -e production
    root 23578 23567   0 18:25:29 ?           0:00 /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/ext/apache2/ApplicationPoolS

参考文献

個人用ツール