さくらのクラウド上のホストに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"展開すると redmine-2.6.0 というディレクトリができるので、これを設置したい場所に移動しましょう。今回の作業では /opt/redmine に置きました。
$ tar xvzpf redmine-2.6.0.tar.gz
# mv redmine-2.6.0 /opt/redmine
ついでに設定もしておきます。$
$ vi /opt/redmine/config/database.yml
設定値ですが、MySQLの場合はこうなります。
production:Ruby1.9なのでadapterはmysql2になるらしいですよ。
adapter: mysql2
database: redmine_db
host: localhost
username: redmine
password: hogefuga
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このsudo登録は、インストールが終わったら解除してもOK。というか解除したほうがいいでしょう。
(一番下に↓の行を追加する)
%redmine ALL=(ALL) ALL
(sudo実行時にパスワードを求められる場合があるので設定する。設定済みなら省略可)
# passwd redmine
(sudoができることを確認する)
# su - redmine
$ sudo ls -l /root
あとはbundleコマンドでモジュール一括導入。
$ bundle install --without development test postgresql sqlite (MySQLを使う場合)実行中パスワードを求められる場合があるので、そのときは先ほど設定したLinuxユーザーのパスワードを入力します。
$ bundle install --without development test mysql sqlite (PostgreSQLを使う場合)
$ bundle install --without development test mysql postgresql (SQLiteを使う場合)
セッションストア秘密鍵というのを作成します。
$ 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のビルドが走り、最後にApacheに追加する設定の内容が表示されます。
# passenger-install-apache2-module
設定の変更は自動で行われたりしないので、httpd.confに手動で設定を追加します。
LoadModule passenger_module /usr/lib64/ruby/gems/1.9.1/gems/passenger-4.0.57/buildout/apache2/mod_passenger.so最後の PassengerEnabled off は、既に動いているVirutlaHostに影響を出さないために入れます。
<IfModule mod_passenger.c>
PassengerRoot /usr/lib64/ruby/gems/1.9.1/gems/passenger-4.0.57
PassengerDefaultRuby /usr/bin/ruby
</IfModule>
PassengerEnabled off
んでRedmine用VirtualHostの設定も。
<VirtualHost *:443>全体設定でPassengerEnabled offなので、このVirtualHost内ではonにします。
ServerName redmine.example.com
DocumentRoot /opt/redmine/public
PassengerEnabled on
<Directory /opt/redmine>
AllowOverride all
Options -MultiViews
</Directory>
Timeout 1200
(SSL動作に関する設定は省略)
</VirtualHost>
またデータが溜まるとページの表示時間が長くなる場合があるのでTimeoutを長めに確保します。
設定を入れたらApacheを再起動して、
# service httpd configtestRedmineのURL(例では https://redmine.example.com/ )にブラウザでアクセスしてみましょう。
# service httpd restart
表示されればセットアップ完了。おつかれさまでした。