kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

Ubuntu 8.10 Server版にRedmineをインストール

Ubuntu 8.10 Server版にRedmineをインストール

DBはsqlite
rubyApache+passengerで動かす

rubyとRoRのインストールは以下
http://d.hatena.ne.jp/devillikeaangel/20090505/1241478623

sqlite3のインストール

sudo aptitude install ruby1.8-dev
sudo aptitude install libsqlite-dev
sudo aptitude install sqlite3
sudo aptitude install libsqlite3-ruby
sudo aptitude install libsqlite3-dev
sudo gem1.8 install sqlite3-ruby

ここで以下のエラーが発生

Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
checking for fdatasync() in -lrt... yes
checking for sqlite3.h... yes
checking for sqlite3_open() in -lsqlite3... yes
creating Makefile

make
sh: make: not found


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out


makeがインストールされていないのでインストール
UbuntuのServer版は、デフォルトでインストールされていないらしい。

sudo aptitude install make


再度インストール

sudo gem1.8 install sqlite3-ruby

ailsのスクリプトを実行する際にopensslが必要になってくるので、libopenssl-rubyパッケージをインストール

sudo aptitude install libopenssl-ruby

redmineのチェックアウト

cd /home/rails/
sudo svn co http://redmine.rubyforge.org/svn/branches/0.8-stable/ redmine


DB用設定ファイルの作成と設定

cd redmine/config
sudo cp database.yml.example database.yml


productionの部分を下記のように設定

 production:
 adapter: sqlite3
 dbfile: db/redmine.db
 timeout: 5000


初期設定

sudo rake db:migrate RAILS_ENV=production

sudo rake db:migrate RAILS_ENV=production
(in /home/rails/redmine)
Missing the Rails 2.1.2 gem. Please `gem install -v=2.1.2 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.

# 2.1.2のRailsを入れるか
# 入っているバージョンをしようするためにconfig/environment.rbを修正するか
# 最新バージョンを使用するためにRAILS_GEM_VERSIONをコメントアウトするか
どれかしろっていってる

現在のバージョンを確認

rails -v

2.3.2だった

2の方向で進める
config/environment.rbを編集

sudo cp environment.rb environment.rb_save
sudo vim environment.rb


#RAILS_GEM_VERSIONの部分を2.1.2から2.3.2に変更
ENV['RAILS_ENV'] ||= 'production'
のコメントアウトを解除


再度下記のコマンドを実行

sudo rake db:migrate RAILS_ENV=production

以下のエラーが出てる

sudo rake db:migrate RAILS_ENV=production
(in /home/rails/redmine)
rake aborted!
uninitialized constant ActionController::Session::PStore

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

traceオプションをつければ詳細なログが分かるようなので、つけて実行

do rake db:migrate RAILS_ENV=production --trace
(in /home/rails/redmine)

Invoke db:migrate (first_time)

Invoke environment (first_time)

Execute environment

rake aborted!
uninitialized constant ActionController::Session::PStore
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:440:in `load_missing_constant'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:80:in `const_missing'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session_management.rb:19:in `const_get'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session_management.rb:19:in `session_store='
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:580:in `send'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:580:in `initialize_framework_settings'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:579:in `each'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:579:in `initialize_framework_settings'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:576:in `each'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:576:in `initialize_framework_settings'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:155:in `process'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in `send'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in `run'
/home/rails/redmine/config/environment.rb:20
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/tasks/misc.rake:4
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:617:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:612:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:612:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:578:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:571:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:588:in `invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:585:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:585:in `invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:577:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:571:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:564:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2027:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2005:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2044:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1999:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1977:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:2044:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake.rb:1974:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

な感じでスタックトレースが表示されるが、意味が全く分からない。
ここでおおはまり。進まない。

結局、redmineのバージョンに対応したRailsが必要だった。
下記のページにしっかり書いてあった。
http://redmine.jp/guide/RedmineInstall/
redmineの0.8をチェックアウトしたので、Railsは2.1.2が必要だった。
なので、2.1.2をいれる

sudo gem1.8 install rails -v=2.1.2

意気込んで、db:migteを実行。同じ結果。
railsのバージョンを確かめる

rails -version

...2.3.2

2.1.2を入れたのに...
2.3.2をアンインストールする。

sudo gem1.8 uninstal rails

ここで、2.3.2と2.1.2など削除するバージョンが選べるので、2.3.2のほうを削除


編集したconfig/environment.rbをもとに戻す
2.3.2としたところを2.1.2にする

再度実行。今度はOK

初期データのロード

sudo rake load_default_data RAILS_ENV="production"

言語の選択が出てくるのでjaを選択

何やらやり直せ的なメッセージが出てた。
メッセージは拾い忘れてしまった。

sudo rake redmine:load_default_data RAILS_ENV="production"

とする必要があるらしい。

初期設定をやり直し。
DBファイルを削除

sudo rm -f db/redmine.db

もう一度実行

sudo rake db:migrate RAILS_ENV=production
sudo rake redmine:load_default_data RAILS_ENV="production"


ここまできて、passengerというものを知った。
ruby(RoR?)をapacheで動かすためのものらしい。
んで、こいつをインストールする

sudo  gem1.8 install passenger


次にpassengerを利用するためにapacheに足りないモジュールをインストールする
最後に保存しておくものが表示されるので、ここからは慎重にいったほうがいい。
TERA TERMなどを使用しているならログを取っておくべき

sudo passenger-install-apache2-module


途中でいろいろ、足りないものを教えてくれる

* To install Apache Portable Runtime Utility (APU) development headers:
Please download it from http://httpd.apache.org/
(APR Utility is an integrated part of Apache.)

というのが出ていたら、

sudo aptitude install pache2-threaded-dev

で入るっぽい。

足りないものをインストールしたら再度実行

sudo passenger-install-apache2-module

途中で

Please edit your Apache configuration file, and add these lines:

と出ているので、その下の3行を保存しておく。
これは各環境でことなるので、必ずメモしておく。

rails.loadというファイルを作成して1行目を保存する

sudo vim /etc/apache2/mods-available/rails.load

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2/ext/apache2/mod_passenger.so


rails.confというファイルを作成して2、3行目を保存する

sudo vim /etc/apache2/mods-available/rails.conf

PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.2
PassengerRuby /usr/bin/ruby1.8


シンボリックリンクを張る
あとから考えたらApacheのコマンドで行けるんじゃないかと思ったけど、
検証はしていない

sudo ln -s /etc/apache2/mods-available/rails.load /etc/apache2/mods-enabled/
sudo ln -s /etc/apache2/mods-available/rails.conf /etc/apache2/mods-enabled/

Apache再起動

sudo /etc/init.d/apache2 restart

実行してみたら以下のエラーログが表示されていた。

[Sat May 02 17:37:48 2009] [alert] [client 192.168.2.99] /home/rails/redmine/public/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

Apacheにrewriteエンジンが読み込まれていなかった。

sudo a2enmod rewrite

[Sat May 02 17:42:38 2009] [notice] caught SIGTERM, shutting down
[Sat May 02 17:42:40 2009] [notice] Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.6-2ubuntu4.2 with Suhosin-Patch Phusion_Passenger/2.2.2 configured -- resuming normal operations
Error during failsafe response: closed stream
(originally Permission denied - /home/rails/redmine/tmp/sessions//ruby_sess.3f6550b7bcfe3ff2)
[Sat May 02 17:42:54 2009] [error] [client 192.168.2.99] Premature end of script headers:
[ pid=24220 file=ext/apache2/Hooks.cpp:547 time=2009-05-02 17:42:54.171 ]:
Backend process 24231 did not return a valid HTTP response. It returned no data.

パーミッションがエラーかな。
とりあえず、以下で対処

sudo chmod -R 777 /home/rails/redmine
sudo chown -R www-data.www-data /home/rails/redmine

ここまで来て、とりあえず、RedmineのTop画面が表示された

次にメールの設定

cd /home/rails/redmine/config
sudo cp email.yml.example email.yml
sudo vim email.yml

productionの部分を以下のように編集

production:
  delivery_method: :smtp
  smtp_settings:
    address: smtp.example.com
    port: 25
    domain: example.net
    #authentication: :login
    #user_name: redmine@example.net
    #password: redmine

Redmineの再起動(Apacheの再起動)

sudo /etc/init.d/apache2 restart


ごちゃごちゃやっているうちにInternal Server Errorがでるようになった。

/!\ FAILSAFE /!\ Sat May 02 19:32:23 +0900 2009
Status: 500 Internal Server Error
file /home/rails/redmine/tmp/sessions//ruby_sess.b88f4cfaf4a30640 not readable

Processing ApplicationController#index (for 192.168.2.99 at 2009-05-05 03:44:28) [GET]
Session ID: 4056467013abc0ee5701223e8f6a3c4b
Parameters: {}

なんかセッションが読み込めなくなっている?
とりあえず、セッション、ログ、tmpなど、消して大丈夫そうなものは一度すべて削除
(後からみたら、このあたりを削除するコマンドがあるらしかったが、知らなかったので手動で削除した)


ここからは別環境で試したときのメモ

はまった時に適当に入れていたから、このあたりは必要かどうかわからない。
Linuxsqliteを動かすためにはswigが必要らしい

sudo aptitude install swig
sudo gem1.8 install sqlite3-ruby


db:migrateでエラー

sudo rake db:migrate RAILS_ENV="production"
(in /home/rails/redmine)
rake aborted!
no such file to load -- net/https

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

以下が必要らしい
sudo aptitude install libopenssl-ruby


ページが見つかりません。エラー

ActionController::RoutingError (No route matches "/index.html" with {:method=>:get}):
...略...
Rendering /var/rails/redmine/public/404.html (404 Not Found)

passengerで動かすので、Rewriteはいらない。redmine/public/.htaccessにある以下の3行をコメントアウトする

#RewriteRule ^$ index.html [QSA]
#RewriteRule ^([^.]+)$ $1.html [QSA]
#RewriteCond %{REQUEST_FILENAME} !-f

参考にさせていただいたサイト
http://redmine.jp/tech_note/install/
http://blog.cheki.net/archives/tag/redmine
http://d.hatena.ne.jp/kamataro/20081026/1225018713