- 更新日: 2013年8月14日
- CentOS & Linux
Ruby on Rails の環境を構築し Redmine をインストール 〜 CentOS6
Apache + Passenger を利用して Ruby on Rails を動作させる環境を構築します。passenger は、Rails アプリケーションを Apache 上で動作させるための Apache モジュールです。
また、Ruby on Rails のアプリケーションとして、実際に Redmine をインストールして動かします。Redmine はプロジェクト管理アプリケーションです。
私は、仕事用にも個人用にも Redmine をプロジェクト・タスク管理に使っています。ソフトウェア開発に限らず、いろんなプロジェクトのタスク管理にも使えると思います。旅行の計画や結婚式の準備など、全体のボリュームが大きく細かなタスクがたくさん存在するイベントの管理などにも使えると思います。
利用する Ruby のバージョンは、1.9.3-p392です。rbenv の管理下にあります。
このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。
いったん SELinux を無効化
とりあえず Rails を動かすところまで確認したいので、ここでいったん SELinux を無効にしておきます。
1 2 3 4 5 6 7 |
# vi /etc/sysconfig/selinux #SELINUX=enforcing SELINUX=disabled # reboot |
SELINUX=disabled と変更してOS再起動。ただし最終的な本番環境では、SELinux を有効にして運用したいと考えています。SELinux を有効にして Apache + Passenger で Rails アプリを動作させる方法は、また次回以降のエントリーにて。
bundler で rubygems を管理
rubygems のインストールには bundler を使います。bundler は Railsアプリケーションごとに必要な rubygems を一元管理できるツールであり、gem パッケージの依存性の混乱を防いだり、システム領域にインストールする gem パッケージを最小限に抑えたりすることができます。
利用する Ruby のバージョンは、1.9.3-p392 です。まずは、rbenv で ruby を管理している時に rubygems が標準でどこにインストールされるかを調べます。
1 2 3 4 5 6 7 8 9 10 |
# gem env RubyGems Environment: - RUBYGEMS VERSION: 1.8.23 - RUBY VERSION: 1.9.3 (2013-02-22 patchlevel 392) [i686-linux] - INSTALLATION DIRECTORY: /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1 - RUBY EXECUTABLE: /usr/local/rbenv/versions/1.9.3-p392/bin/ruby - EXECUTABLE DIRECTORY: /usr/local/rbenv/versions/1.9.3-p392/bin ... |
Ruby バージョンを2.0.0-p0に変更してみます。
1 2 3 4 5 6 7 8 9 10 11 |
# rbenv global 2.0.0-p0 # gem env RubyGems Environment: - RUBYGEMS VERSION: 2.0.0 - RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [i686-linux] - INSTALLATION DIRECTORY: /usr/local/rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0 - RUBY EXECUTABLE: /usr/local/rbenv/versions/2.0.0-p0/bin/ruby - EXECUTABLE DIRECTORY: /usr/local/rbenv/versions/2.0.0-p0/bin ... |
1.9.3 に戻しておきます。
1 2 3 |
# rbenv global 1.9.3-p392 |
INSTALLATION DIRECTORY というのが rubygems がインストールされるディレクトリとなります。rubygems は、rbenv で管理する Ruby のバージョンごとのディレクトリにインストールされることが確認できます。
なので、bundler や passenger など Rails アプリで共通して使用する gem は、従来通り “gem install bundler” などとインストールすれば良いでしょう。rails アプリ固有に必要な gem は bundler で入れていく、という方針で進めます。bundler で入れる gem は、個々の Rails アプリのディレクトリ配下(railsapp/vendor/bundle)にインストールされます。
bundler のインストール
ということで現在の gem list を確認後に bundler をインストール。passenger は後で入れます。
1 2 3 4 5 6 7 8 9 10 |
# gem list *** LOCAL GEMS *** bigdecimal (1.1.0) io-console (0.3) json (1.5.5) minitest (2.5.1) rake (0.9.2.2) rdoc (3.9.5) |
こんな感じで、json や rake などいくつかはデフォルトで入っていました。続いて bundler インストール。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# gem install bundler # rbenv rehash # gem list *** LOCAL GEMS *** bigdecimal (1.1.0) bundler (1.3.5) io-console (0.3) json (1.5.5) minitest (2.5.1) rake (0.9.2.2) rdoc (3.9.5) |
これで、上述の INSTALLATION DIRECTORY に bundler がインストールされ、このRuby環境(Ruby 1.9.3-p392)で動く Rails アプリでは、共通して今インストールした bundler を使用できることになります。
Redmine のインストール
さて Redmine を動かすという目的に戻りましょう。公式ドキュメントを参考にします。この Redmine 公式ドキュメントの前半部分〜MySQLの設定あたりまではすでに終えています。
Redmine 2.3をCentOS 6.4にインストールする手順 | Redmine.JP Blog
必要なパッケージをあらかじめインストール。
1 2 3 4 5 6 |
# yum -y install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel # yum -y --enablerepo=rpmforge install libyaml-devel # yum -y install ImageMagick ImageMagick-devel # yum -y install ipa-pgothic-fonts |
Redmine 用データベースとユーザーの作成。database 名は redmine 。ユーザー名、パスワードは任意に変更。
1 2 3 4 5 6 7 |
# mysql -uroot -p mysql> create database redmine default character set utf8; mysql> grant all on redmine.* to ユーザー名@localhost identified by 'パスワード'; mysql> flush privileges; mysql> exit; |
Redmine のインストール。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# cd /var/lib git clone git://github.com/redmine/redmine.git redmine # cd redmine # cp /var/lib/redmine/config/database.yml.example /var/lib/redmine/config/database.yml # vi /var/lib/redmine/config/database.yml production: adapter: mysql2 database: redmine host: localhost username: ユーザー名 password: パスワード encoding: utf8 |
Redmine 用の gem を bundler でインストール
redmine を配置したディレクトリに移動(cd)して、bundler で gemパッケージのインストールを行います。–path vendor/bundle を指定して、vendor/bundle 以下に gem をインストールします。bundle install は、Gemfile(ここでは、/var/lib/redmine/Gemfile)の記述を元に rubygems パッケージをインストールします。
1 2 3 4 |
# cd /var/lib/redmine/ # bundle install --path vendor/bundle --without development test postgresql sqlite |
利用しないグループ develop, test と、利用しないアダプタ postgresql, sqlite3 を without オプションで指定。ちなみに gem パッケージ名は bundler ですが、bundler のコマンドは bundle ~ です。
ここで gem のインストールディレクトリを確認。
1 2 3 4 |
# ls /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/ bundler-1.3.5 rake-0.9.2.2 rdoc-3.9.5 |
これだけで、Ruby1.9.3のシステム共通の gem インストールディレクトリは汚されていない。一方、vendor/bundle 以下。
1 2 3 4 5 6 7 |
# ls /var/lib/redmine/vendor/bundle/ruby/1.9.1/gems/ actionmailer-3.2.13 activeresource-3.2.13 coderay-1.0.9 journey-1.0.4 mime-types-1.22 polyglot-0.3.3 rack-ssl-1.3.3 rake-10.0.4 sprockets-2.2.2 tzinfo-0.3.37 actionpack-3.2.13 activesupport-3.2.13 erubis-2.7.0 jquery-rails-2.0.3 multi_json-1.7.2 rack-1.4.5 rack-test-0.6.2 rdoc-3.12.2 thor-0.18.1 activemodel-3.2.13 arel-3.0.2 hike-1.2.1 json-1.7.7 mysql2-0.3.11 rack-cache-1.2 rails-3.2.13 rmagick-2.13.2 tilt-1.3.6 activerecord-3.2.13 builder-3.0.0 i18n-0.6.1 mail-2.5.3 net-ldap-0.3.1 rack-openid-1.3.1 railties-3.2.13 ruby-openid-2.1.8 treetop-1.4.12 |
ずらずら〜っと、たくさんここに入っています。これらの gem は Redmine 固有の gem として扱われます。
bundler で入れた gems を確認する bundle コマンド。
1 2 3 4 5 6 7 8 |
$ bundle list Gems included by the bundle: * actionmailer (3.2.9) * actionpack (3.2.9) * activemodel (3.2.9) ... |
Webrick で Redmine の動作確認
続いてセッションデータ改竄防止用鍵の生成とDBテーブル作成。redmine のインストールディレクトリ(Gemfileがあるディレクトリ)で行います。
1 2 3 4 |
# bundle exec rake generate_secret_token # RAILS_ENV=production bundle exec rake db:migrate |
iptables でポート3000番を開けて、一旦 Webrick で動作確認を行います。Webrick は Rails に付属する Rubyライブラリで、Rails アプリの動作確認を行うための簡易的なWEBサーバーです。
1 2 3 4 |
# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT |
以上を追加して iptables 再起動。
1 2 3 |
# service iptables restart |
Webrick起動して動作確認。
1 2 3 |
# bundle exec rails s -e production |
ブラウザで「サーバーのIPアドレス:3000」にアクセスして動作確認を行います。
Passenger のインストール
Webrick で Redmine の動作確認ができたら、続いて passeger のインストール。
1 2 3 4 |
# gem install passenger # rbenv rehash |
Passenger の Apache 用モジュールをインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# passenger-install-apache2-module The Apache 2 module was successfully installed. Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/passenger-3.0.19/ext/apache2/mod_passenger.so PassengerRoot /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/passenger-3.0.19 PassengerRuby /usr/local/rbenv/versions/1.9.3-p392/bin/ruby After you restart Apache, you are ready to deploy any number of Ruby on Rails applications on Apache, without any further Ruby on Rails-specific configuration! Press ENTER to continue. |
LoadModule からの行のメッセージを控え、Apache の設定に追加します。以下のコマンドで確認できます。
1 2 3 |
# passenger-install-apache2-module --snippet |
passenger の設定を Apache に追加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# vi /etc/httpd/conf.d/passenger.conf # Passengerの基本設定 # passenger-install-apache2-module --snippet を実行して表示される設定を使用 LoadModule passenger_module /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/passenger-3.0.19/ext/apache2/mod_passenger.so PassengerRoot /usr/local/rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/gems/passenger-3.0.19 PassengerRuby /usr/local/rbenv/versions/1.9.3-p392/bin/ruby # Passengerが追加するHTTPヘッダを削除する設定 Header always unset "X-Powered-By" Header always unset "X-Rack-Cache" Header always unset "X-Content-Digest" Header always unset "X-Runtime" # Passengerのチューニングのための設定 # http://www.modrails.com/documentation/Users%20guide%20Apache.html を参照 PassengerMaxPoolSize 20 PassengerMaxInstancesPerApp 4 PassengerPoolIdleTime 3600 PassengerHighPerformance on PassengerStatThrottleRate 10 PassengerSpawnMethod smart RailsAppSpawnerIdleTime 86400 RailsFrameworkSpawnerIdleTime 0 |
以上の内容で passenger.conf を作成します。
redmine 配下ディレクトリのユーザー・グループを apache に変更。
1 2 3 |
# chown -R apache:apache /var/lib/redmine |
以上で、Redmine のインストール作業自体は終了です。次回に、Apache のバーチャルホストを用いて Redmine を動作させるための Apache 設定を行います。
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- Linuxサーバー容量を確認するコマンドdf,duをマスターする!
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
Leave Your Message!