Solaris10:Apacheとredmineの連係
目次 |
Apache環境でのredmine連係
redmineはrailsで動作するオープンソースのプロジェクト管理ツールである。 今回はredmineをApache2.2と連係させる構成で構築してみた。
なお環境はSolaris10(SPARC)である。 Solaris10環境にインストールするのはなかなか骨が折れるのではまりどころも踏まえて説明する。
インストール
Apache 2.2のインストール
MySQL 5.5のインストール
ruby 1.8.7のインストール
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