Redmine を lighttpd + fcgi で動かす

Redmine(タスク管理ツール)をlighttpdで動かす。
ほんとはapache2.2を入れようと思ってたけど、サーバから新品だし
fcgiが入れやすいlighttpdにした。

システム構成

ソースをダウンロードをするところは基本/usr/local/src配下

Rubyのインストール

Rubyをインストールする。今回はソースからインスト。

  • ソースをダウンロード
 $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz
  • 展開後、3点セット
 $ tar zxvf ruby-1.8.7-p72.tar.gz
 $ cd ruby-1.8.7
 $ ./configure
 $ make
 $ sudo make install
  • インストできたか確認
 $ ruby -v
 ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-linux]

RubyGemsのインストール

RubyGemsはRubyのパッケージシステム。

  • ソースのダウンロード
 $ wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
  • 展開、インストール
 $ tar zxvf rubygems-1.2.0.tgz
 $ cd rubygems-1.2.0
 $ sudo ruby setup.rb
  • インストできたか確認
 $ gem -v
 1.2.0

Ruby on Railsのインストール

↑でいれたgemを利用してインストール

  • インストール
 # gem install rails
  • インストできたか確認
 $ rails -v
 Rails 2.1.1

MySQLのインストール/設定

Redmineのコンフィグみると、mysqlの他、postgresやsqliteも対応してるみたい。
mysqlはめんどくさいのでパッケージでいれる。

  • インストール
 $ sudo yum install mysql.i386 mysql-server.i386 mysql-devel.i386

簡単すぎる…

  • 起動
 $ sudo /etc/init.d/mysqld start
  • rootのパスワードをかえる
 $ sudo mysqladmin -u root password hogehoge
  • Redmine用のDBをつくる。
 $ mysql -u root -p
 mysql> create database redmine default character set utf8;
 Query OK, 1 row affected (0.03 sec)
 
 mysql> grant all privileges on redmine.* to redmineuser@localhost;
 Query OK, 0 rows affected (0.04 sec)
 
 mysql> set password for redmineuser@localhost=password('hoge');
 Query OK, 0 rows affected (0.03 sec)

Redmineのインストール/設定

まぁインストールするディレクトリはどこでもいいんだけど
今回は/usr/local/rails配下とした。

  • ダウンロード
 $ cd /usr/local/rails
 $ svn checkout http://redmine.rubyforge.org/svn/trunk/ Redmine
  • 設定ファイル変更
 $ cd config
 $ mv database.yml.example database.yml
 $ vi database.yml

変更箇所は以下

 production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmineuser
  password: hoge
  encoding: utf8
  socket: /var/lib/mysql/mysql.sock

socket: 〜の設定とか地味に大切

  • Redmineで使用するDBテーブルを作成する。 
 $ pwd 
 /usr/local/rails/Redmine
 $ rake db:migrate RAILS_ENV="production"

ここでrailsのバージョンは2.1.0じゃないとだめって怒られた…

 $ sudo gem install -v=2.1.0 rails
 $ rake db:migrate RAILS_ENV="production"
 $ rake redmine:load_default_data RAILS_ENV="production"
 Select language: bg, cs, de, en, es, fr, he, it, ja, ko, nl, pl, pt, pt-br, ro, ru, sr, sv, zh, zh-tw [en] ja
                                                                                                           ~~~~
 ====================================
 Loading default configuration data for language: ja
[ja]を選択する
  • WEBrickで動作テスト
 $ ruby script/server -e production -p 80

ブラウザでみてみる。

lighttpdとfcgi

やっとか…これが書きたかっただけなのに…

fcgiのインストール
  • ダウンロードする
 $ wget http://www.fastcgi.com/dist/fcgi-2.4.0.tar.gz
  • 展開後、3点セット
 $ tar zxvf fcgi-2.4.0.tar.gz
 $ cd fcgi-2.4.0
 $ ./configure
 $ make
 $ sudo make install
RubyのFastCGIライブラリインストール
  • インスト
 $ sudo gem install fcgi

これは簡単だな

lighttpdのインストール
  • ダウンロード
 $ wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz
  • 展開後、3点セット
 $ tar zxvf lighttpd-1.4.19.tar.gz
 $ cd lighttpd-1.4.19
 $ ./configure --prefix=/usr/local/lighttpd
 $ make 
 $ sudo make install

configureのオプションに--prefix=/usr/local/lighttpd

lighttpdの設定

あと少し!

  • lighttpdのユーザ/グループを追加
 $ sudo /usr/sbin/groupadd -g 8080 lighttpd
 $ sudo /usr/sbin/useradd -u 8080 -g lighttpd

あれ…ユーザ名がlighttpdっておかしいのかな…まぁいいか

  • confの設定
 $ cd /usr/local/lighttpd
 $ sudo mkdir conf
 $ cp /usr/local/src/lighttpd-1.4.19/doc/lighttpd.conf ./conf/
 $ vi ./conf/lighttpd.conf

diffは以下

 *** 12,27 ****
 ! #                               "mod_rewrite",
 ! #                               "mod_redirect",
 ! #                               "mod_alias",
 ! #                               "mod_fastcgi",
 --- 12,27 ----
 !                                 "mod_rewrite",
 !                                 "mod_redirect",
 !                                 "mod_alias",
 !                                 "mod_fastcgi",
 ***************
 *** 37,43 **** 
 ! server.document-root        = "/srv/www/htdocs/"  
 --- 37,45 ----
 ! server.document-root        = "/usr/local/rails/Redmine/public/" 
 ***************
 *** 138,144 ****
 ! #server.port                = 81
 --- 140,146 ----
 ! server.port                = 80 
 ***************
 *** 146,151 ****
 --- 148,154 ----
 + server.error-handler-404   = "/dispatch.fcgi" 
 ***************
 *** 188,196 **** 
 ! #server.groupname           = "wwwrun" 
 --- 191,200 ----
 ! server.username            = "lighttpd" 
 ! server.groupname           = "lighttpd"
 ***************
 *** 324,326 ****
 --- 328,344 ----
 +
 + ## fastcgi module -shiba
 +
 + fastcgi.server = (
 +     ".fcgi" => (
 +         "localhost" => (
 +             "socket" => "/usr/local/rails/Redmine/tmp/sockets/fcgi.socket",
 +             "bin-path" => "/usr/local/bin/ruby /usr/local/rails/Redmine/public /dispatch.fcgi",
 +             "bin-environment" => ("RAILS_ENV"=>"production"),
 +         )
 +     )
 + )
  • railsのオーナー調整

めんどくさい

 $ cd /usr/local/rails
 $ sudo chown -R lighttpd Redmine
起動してみる
#/usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/conf/lighttpd.conf