Charon Technology

カーロン・テクノロジでは、ソフトウェアの開発に際して、プロジェクト管理システムRedmineを導入することがあります。 本ページでは、Redmineサーバの構築手順をまとめます。

必要なパッケージのインストール

まず、Redmineサーバの構築に必要なパッケージを導入します。 途中でパスワードを尋ねられますが、これはMySQLの管理用となります。

$ sudo apt-get install lighttpd build-essential zlib1g-dev libmysqld-dev imagemagick libmagick++-dev libfcgi-dev ruby ruby-dev

証明書の準備

Redmineサーバとの通信にTLS (SSL)を用いるために、証明書を用意します。 証明書はユーザwww-dataから読み取りアクセス可能な場所に配置されていれば問題ありませんが、 www-dataのホームディレクトリである/var/wwwに配置すると事故 (設定を間違えて公開してしまう) ここでは、自己署名証明書 (いわゆるオレオレ証明書) の生成手順を記述しますが、自己署名証明書ではなりすまし攻撃に対応できないため、インターネットからアクセス可能なサーバでは、正当な証明書を使用してください。

$ cd /home
$ sudo mkdir www-data
$ sudo chown www-data:www-data www-data
$ cd /home/www-data
$ sudo -u www-data openssl req -new -x509 -keyout server.pem -out server.pem -days 36500 -nodes
$ sudo chmod 400 server.pem

証明書の生成後、LighttpdにTLS (SSL)の設定を行います。

まず、TLSの設定を記述したファイルを新規に作成します。

$ sudo vi /etc/lighttpd/ssl.conf
/etc/lighttpd/ssl.conf
ssl.engine  = "enable"
ssl.pemfile = "/home/www-data/server.pem"

次に、Lighttpdの設定ファイル最終行に次の記述を追加することで、作成したファイルを取り込むよう設定します。

$ sudo vi /etc/lighttpd/lighttpd.conf

include "ssl.conf"

Redmineインストール

アーカイブの取得・展開

Redmineそのもののインストールを行います。 Redmineは、任意の場所にアーカイブを配置することができます。 ここでは、一旦ホームディレクトリ直下に展開しておき、設定完了後にインストール先 (/home/www-data) に以下に移動することとします。

$ cd
$ wget http://www.redmine.org/releases/redmine-2.6.10.tar.gz
$ tar xf redmine-2.6.10.tar.gz
$ cd redmine-2.6.10

ZIP版もリリースされていますが、改行コードがWindows向けに設定されています。 Ubuntu上で使用する場合はトラブルの原因となるため、.tar.gz版を使用するようにしてください。

Redmineにデータベース設定を行います。 Redmineアーカイブ以下のconfig/database.yml.exampleファイルをコピーしてconfig/database.ymlを作成します。

$ cp config/database.yml.example config/database.yml
$ vi config/database.yml
config/database.yml
production:
adapter: mysql2
database: redmine
host: localhost
username: root
password: "rpassword"
encoding: utf8

gemパッケージのインストール

Redmineの動作に必要なgemパッケージをインストールします。 Redmineでは、動作に必要なパッケージをBundlerで管理しているため、まずはBundlerをインストールします。

$ sudo gem install bundler

次に、追加で必要となるパッケージをGemfile.localファイルに設定します。 RedmineをLighttpd上で動作させる場合はfcgi gemが必要となるため、これをGemfile.localファイルを新規作成して記述します。

$ sudo vi Gemfile.local
Gemfile.local
gem 'fcgi'
記述後、Bundlerを用いて必要となるgemをインストールします。
$ bundle install --path=vendor

データベース初期設定

Redmine用のデータベースを作成します。 ここでは、パスワードとして"rpassword"を設定すると仮定します。実際には、任意のものに置き換えてください。 また、mysqlコマンド実行時にパスワードを確認されますので、MySQLインストール時に設定したパスワードを入力してください。

$ mysql -u root -p
mysql> CREATE DATABASE redmine CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'rpassword';
mysql> \q

シークレットトークンの生成

次のコマンドで、Cookieのシークレットトークンを生成します。

$ bundle exec rake generate_secret_token

データベース初期設定

次のコマンドで、データベースの初期設定を行います。 途中、言語選択の選択肢が表示されるので、使用する言語を入力します。 ただし、Redmine Backlogsを使用する場合、必ず英語 (en) を選択するようにしてください。

$ RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake redmine:load_default_data

FastCGI設定

LighttpdでRedmineを動作させる場合、FastCGIの仕組みを使用します。 public以下に、FastCGI用プログラムのテンプレートが配置されているので、これをコピーします。 このテンプレートはこのまま動作させることができるので、修正は不要です。

$ cp public/dispatch.fcgi.example public/dispatch.fcgi

Lighttpd設定

LighttpdにRedmineの設定を行います。次の内容のファイルを、/etc/lighttpd/redmine.confとして作成します。

$ sudo vi /etc/lighttpd/redmine.conf
/etc/lighttpd/redmine.conf
server.modules += ("mod_fastcgi")

server.error-handler-404 = "/dispatch.fcgi"

fastcgi.server = (
"/" => (
"localhost" => (
"socket" => "/tmp/lighttpd.redmine.socket",
"bin-path" => "/home/www-data/redmine-2.6.10/public/dispatch.fcgi",
"check-local" => "disable",
"max-procs" => "4",
"bin-environment" => (
"RAILS_ROOT" => "/home/www-data/redmine-2.6.10",
"RAILS_ENV" => "production"
)
)
)
)

そして、lighttpd.confの最後に次の行を追加して、作成したファイルを設定ファイルから読み出すようにします。

$ sudo vi /etc/lighttpd/lighttpd.conf
/etc/lighttpd/lighttpd.conf
include "redmine.conf"

Redmineデプロイ

以上の設定が完了したら、Redmineをデプロイします。 デプロイ先である/home/www-dataに、関連するファイルを移動します。

$ sudo mv redmine-2.6.10 /home/www-data
そして、Lighttpdを実行するユーザはwww-dataなので、所有者をwww-dataに変更します。
$ sudo chown www-data:www-data -R /home/www-data/redmine-2.6.10

Redmine起動

最後に、Lighttpdを再起動することで、Redmineを使用できるようになります。

$ sudo service lighttpd restart