2015年01月26日

CentOS6にRedmineを導入したときの手順メモ

 真面目な話になりそうなのでちーちゃんにはお休みいただきました。

 さくらのクラウド上のホストにRedmineっつー進捗管理システムを入れたんですが、少々苦戦したのでメモしておくことにします。
 以前にもRedmineを導入したことがあって、そのときにも非常に苦戦したので、もうRailsなんてだいっきらいだー(><)


 作業の前提はこんな感じです。

  • サーバー環境はCentOS 6.6 (さくらのクラウド)
  • Apache+SSLをyumで導入済み(VirtualHost)
  • 導入バージョンは 2.6.0 (作業時の最新。現在は2.6.1が出ているが、大差ないだろう)
  • なるべくyumパッケージを利用する形で導入する。
  • 参考:日本語版公式のインストール解説

 道中viを使う箇所がありますが、viの使い方は特に解説しません。
 慣れない人には大変でしょうけど、使い方をググれカス調べる等して頑張ってください。

 が、実はいきなりつまづきます。
 当環境のyumでインストールできるRubyのバージョンは 1.8.7 です。
 解説では Ruby 1.8.7 も対応していると書かれているのですが、このバージョンを用いて解説どおり進行すると、i18nモジュールがインストールできないと怒られます。

ERROR:  Error installing i18n:
i18n requires Ruby version >= 1.9.3.

 Ruby1.9.3以上が必要だって……
 解説を執筆した当時ならRuby1.8.7でも導入できたのでしょうけど、今から導入する場合は1.9.3が必要なようです。そしてそのバージョンのRubyはyumでは手に入らない……
 いきなり原則崩壊です。悔しいけどソースから何とかするしか。

 ならばRubyのRPMを作って導入することにします。
 こちらのサイトの手順でいけます。

http://park1.wakwak.com/~ima/centos_ruby0001.html

 この方法でrubyをインストールすると、yumではruby本体パッケージと別管理(rubygemsなど)になっているファイルやコマンドも一緒にインストールされます(gemも)。
 つまり、それらのパッケージと依存関係を持つpassengerなどのパッケージもyum導入できなくなるってこと。

 Ruby以外のパッケージはyumからインストールします。
 まずはApacheから(元々入っている場合は省略)。
# yum -y install httpd mod_ssl

 この段階でApacheの設定や起動はしません。あとあと。
 あと、データベースが何か一種類必要です。まずMySQLの場合(元々入っている場合は省略)。
# yum -y install mysql-server mysql-devel
# service mysqld start
# chkconfig mysqld on
 パッケージ導入するだけじゃなくて、アカウントとデータベースを作らないといけません。こっちはパッケージ導入済みでもコマンド叩いてください。
 下記コマンド例では ユーザー名 redmine パスワード hogefuga データベース名 redmine_db としています。コマンド実行時は任意に書き換えてください(特にパスワード)。
# mysql
mysql> CREATE DATABASE redmine_db;
mysql> GRANT ALL PRIVILEGES ON redmine_db.* TO 'redmine'@'localhost' IDENTIFIED BY 'hogefuga';
mysql> exit

 PostgreSQLを使う場合。パッケージ導入から(元々入っている場合は省略)。。
# yum -y install postgresql-server postgresql-devel
# service postgresql initdb
# service postgresql start
# chkconfig postgresql on
 アカウントとデータベースを作成。
 これも下記コマンド例では ユーザー名 redmine パスワード hogefuga データベース名 redmine_db としています。コマンド実行時は任意に書き換えてください(特にパスワード)。
# su - postgres
$ createuser -P redmine
Enter password for new role: hogefuga ←入力が画面に表示されない
Enter it again: hogefuga ←入力が画面に表示されない
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
$ createdb -E utf8 -O redmine -T template0 redmine_db
$ exit

 MsSQLにも対応しているそうですが、今回はCentOS6へのインストールなので考慮しません。
 SQLite? ありゃデータベースの実体がファイルなんで、あらかじめDB作るような準備は特にありません。

 次はrubyモジュールを導入……ではなく、先にRedmineのファイルを落として展開します。
 ダウンロードはwgetコマンドを使うと楽、というのはLinux系エンジニアの常識。
 ダウンロードURLは配布元のリンクから持ってきてください。下記URLがいつダウンロード不能になるかわかりませんし、何より最新版を使ったほうがいいです。
$ wget "http://www.redmine.org/releases/redmine-2.6.0.tar.gz"
$ tar xvzpf redmine-2.6.0.tar.gz
 展開すると redmine-2.6.0 というディレクトリができるので、これを設置したい場所に移動しましょう。今回の作業では /opt/redmine に置きました。
# mv redmine-2.6.0 /opt/redmine
 ついでに設定もしておきます。
$ 
$ vi /opt/redmine/config/database.yml

 設定値ですが、MySQLの場合はこうなります。
production:
adapter: mysql2
database: redmine_db
host: localhost
username: redmine
password: hogefuga
 Ruby1.9なのでadapterはmysql2になるらしいですよ。

 PostgreSQLの場合はこう。
production:
adapter: postgresql
database: redmine_db
host: localhost
username: redmine
password: hogefuga
encoding: utf8
schema_search_path: public

 SQLiteの場合(動作未確認)。
production:
adapter: sqlite3
database: db/redmine.sqlite3


 やっとRubyモジュールのターン。
 といっても必要なモジュールはほぼ一括で入れることができるらしいです。
 唯一、一括で入れる処理のためのbundlerモジュールは、別途で入れます。
# gem install bundler

 次にbundleコマンドを実行……のまえに、bundleはroot実行を推奨していないらしいので、Redmine用のLinuxユーザーアカウントをsudoに登録します。
 今回のLinuxユーザー名は、DBユーザー名と同じredmineにしています。
# visudo
(一番下に↓の行を追加する)
%redmine ALL=(ALL) ALL
(sudo実行時にパスワードを求められる場合があるので設定する。設定済みなら省略可)
# passwd redmine
(sudoができることを確認する)
# su - redmine
$ sudo ls -l /root
 このsudo登録は、インストールが終わったら解除してもOK。というか解除したほうがいいでしょう。

 あとはbundleコマンドでモジュール一括導入。
$ bundle install --without development test postgresql sqlite (MySQLを使う場合)
$ bundle install --without development test mysql sqlite (PostgreSQLを使う場合)
$ bundle install --without development test mysql postgresql (SQLiteを使う場合)
 実行中パスワードを求められる場合があるので、そのときは先ほど設定したLinuxユーザーのパスワードを入力します。

 セッションストア秘密鍵というのを作成します。
$ rake generate_secret_token


 データベースを初期化します。
$ RAILS_ENV=production rake db:migrate ←スキーマの作成
$ RAILS_ENV=production rake redmine:load_default_data ←初期データの投入
 初期データの投入は必須ではないらしいのですが、強く推奨されます。データが空だと管理アカウントすら存在しないことになり、スタートアップが大変不便です。

 パーミッションを設定します。
$ mkdir tmp public/plugin_assets
$ sudo chown -R redmine:redmine files log tmp public/plugin_assets
$ sudo chmod -R 755 files log tmp public/plugin_assets


 ここまでくれば準備完了、のはず。
 まずはWEBrickで起動してみます。
$ ruby script/rails server webrick -e production
 コマンドの稼働中、このホストのポート3000番(例: http://redmine.example.com:3000/ )にアクセスすると、新規Redmineのサイトが表示されるはずです。
(iptablesなどのファイアウォールは、適切に設定して通信可能にしてください)
 デフォルトアカウント(admin/admin)でログインしてみましょう。
 なお、Ctrl+Cを押してコマンドを終了すると、サイトも閲覧できなくなります。

 さて、最後の工程です。WEBrick起動ではプロセス安定しないしセキュリティもゆるゆるなので、Apacheに組み込んでしまいましょう。
 これも日本語版公式の解説を参考にします。
# gem install passenger
# passenger-install-apache2-module
 このコマンドは対話形式で処理が進みます。このあたり手順がちょっとうろ覚えです。
 足らないモジュールがあると指示が出て、コマンドが中断します。その場合は指示通りにモジュールを導入して、再度コマンドを叩きます。
# yum install libcurl-devel httpd-devel apr-devel apr-util-devel
# passenger-install-apache2-module
 モジュールが揃っていれば、確認の後でpassengerのビルドが走り、最後にApacheに追加する設定の内容が表示されます。
 設定の変更は自動で行われたりしないので、httpd.confに手動で設定を追加します。
LoadModule passenger_module /usr/lib64/ruby/gems/1.9.1/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so

<IfModule mod_passenger.c>
PassengerRoot /usr/lib64/ruby/gems/1.9.1/gems/passenger-4.0.57
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
PassengerEnabled off
 最後の PassengerEnabled off は、既に動いているVirutlaHostに影響を出さないために入れます。
 んでRedmine用VirtualHostの設定も。
<VirtualHost *:443>
ServerName redmine.example.com
DocumentRoot /opt/redmine/public
PassengerEnabled on
<Directory /opt/redmine>
AllowOverride all
Options -MultiViews
</Directory>
Timeout 1200
(SSL動作に関する設定は省略)
</VirtualHost>
 全体設定でPassengerEnabled offなので、このVirtualHost内ではonにします。
 またデータが溜まるとページの表示時間が長くなる場合があるのでTimeoutを長めに確保します。

 設定を入れたらApacheを再起動して、
# service httpd configtest
# service httpd restart
 RedmineのURL(例では https://redmine.example.com/ )にブラウザでアクセスしてみましょう。
 表示されればセットアップ完了。おつかれさまでした。
posted by きさらぎ at 12:07| Comment(0) | TrackBack(0) | サーバー
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/112066375
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック