さくらのVPS を改めて使いはじめる 9 – Ruby、Redmine、Subversion

2012年5月9日 10 開発 , , , ,

さくらのVPS(v3) 2GB プランへの環境構築メモ 9。今回は Ruby、Redmime、Subversion のセットアップとデータ移行について書く。

もくじ

2012/5/20 追記 :
この記事を書いた数日後に Redmine 2.0 がリリースされ、更新作業をおこなったので、その覚え書きをRedmine のバージョン更新として追加。

Ruby

前に借りていた VPS 環境 ( さくらのVPS 512MB ) では、Ruby Enterprise Edition 上で Redmine を動かしていたのだが、Redmine 1.4 から Ruby 1.9 系に正式対応したので、今回は Ruby + Passenger の組み合わせで運用することにした。Ruby 自体も最新のものを利用する。

まず、Ruby をコンパイルするために必要なパッケージと関連ツールをまとめてインストールする。

$ sudo yum install openssl-devel readline-devel zlib-devel curl-devel libyaml-devel mysql-devel httpd-devel ImageMagick ImageMagick-devel

余談だが、さくらのVPS(v3) の CentOS 6.2 環境だと EPEL リポジトリがはじめから有効らしい。バージョンの新旧さえ気にしなければ、有名どころのパッケージはたいてい揃うのでありがたい。

次に Ruby 本体の最新版ソースを入手する。公式ページのダウンロードから、HTTP ミラーへゆき、ソースを固めたファイルの URL を調べておく。

現時点の最新版ソースは ruby-1.9.3-p194 らしいので、これをユーザー HOME へダウンロード & 展開。

$ cd
$ wget http://core.ring.gr.jp/archives/lang/ruby/1.9/ruby-1.9.3-p194.tar.gz
$ tar zxvf ruby-1.9.3-p194.tar.gz
$ rm ruby-1.9.3-p194.tar.gz

展開した Ruby のソースをコンパイルする。RPM 化するのでインストールは実行せず、make までにしておくこと。

$ cd ruby-1.9.3-p194
$ ./configure
$ make

Ruby をコンパイルできたら、前回セットアップした checkinstall を使って RPM 化する。

途中で「それらをパッケージから除外しますか?」というメッセージが表示されたら、n を入力して Enter キーを押す。下記のコマンド例にも書いているが、RPM 化の途中で 1 時間ぐらい待たさせる。その間、特にすることはないので放置してもよい。

$ sudo checkinstall --fstrans=no
Some of the files created by the installation are inside the home directory: /home

You probably don't want them to be included in the package.
それらを表示しますか? [n]:
それらをパッケージから除外しますか?(yesと答えることをおすすめします) [n]: n

tempディレクトリにファイルをコピー..

... 中略 ( ↑のメッセージで 1 時間ぐらい待たされた )

**********************************************************************

Done. The new package has been saved to

/root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm
You can install it in your system anytime using:

      rpm -i ruby-1.9.3-p194-1.x86_64.rpm

**********************************************************************

RPM 化が終わると、生成されたファイルのパスが表示される。それを参考にしてインストールを実行する。

$ sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm
準備中...                ########################################### [100%]
   1:ruby-1.9.3             ########################################### [100%]

インストールされたことを確認するために、Ruby のバージョンを表示。

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

RPM パッケージの詳細情報も確認しておく。

$ sudo rpm -qi ruby-1.9.3
Name        : ruby-1.9.3                   Relocations: (not relocatable)
Version     : p194                              Vendor: (none)
Release     : 1                             Build Date: 2012年04月30日 11時16分49秒
Install Date: 2012年04月30日 13時31分41秒      Build Host: akabeko.me
Group       : Applications/System           Source RPM: ruby-1.9.3-p194-1.src.rpm
Size        : 475428049                        License: GPL
Signature   : (none)
Packager    : checkinstall-1.6.3
Summary     : Package created with checkinstall 1.6.3
Description :
Package created with checkinstall 1.6.3

きちんとインストールされてるので、不要になった Ruby のソースを消しておく。

$ cd
$ rm -rf ruby-1.9.3-p194

これにて、Ruby のセットアップは完了。

Bundler と Passenger

Redmine を動作させるために必要な Ruby Gem モジュールをセットアップする。

はじめに Bundler を入れる。これは、Redmine のような Ruby on Rails アプリのための Gem 管理ツールである。Redmine 1.4 から、アプリの Gem 依存管理で使用されるようになった。

$ sudo gem install bundler --no-rdoc --no-ri
Fetching: bundler-1.1.3.gem (100%)
Successfully installed bundler-1.1.3
1 gem installed

つぎは Phusion Passenger。これは Apache や Nginx 上で Rails アプリを動かすために使用する。

$ sudo gem install passenger --no-rdoc --no-ri
Fetching: fastthread-1.0.7.gem (100%)
Building native extensions.  This could take a while...
Fetching: daemon_controller-1.0.0.gem (100%)
Fetching: rack-1.4.1.gem (100%)
Fetching: passenger-3.0.12.gem (100%)
Successfully installed fastthread-1.0.7
Successfully installed daemon_controller-1.0.0
Successfully installed rack-1.4.1
Successfully installed passenger-3.0.12
4 gems installed

Passenger の Apache 用モジュールをインストール。

$ sudo 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/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
   PassengerRuby /usr/local/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.

--------------------------------------------
Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:

   <VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
   </VirtualHost>

And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

  /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/doc/Users guide Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
http://www.modrails.com/

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

最後の方に、Apache 用の設定が表示されるのでメモしておく。この内容は Apache の httpd.conf 本体に書くのではなく、専用ファイルを用意する。今回は passenger.conf という名前で作成することにした。

$ sudo vi /etc/httpd/conf.d/passenger.conf

passenger.conf にさきほどの Apache 用設定を記述し、ついでに Redmine を公開するときのディレクトリ設定も加えて保存する。今回は http://ホスト名/projects に公開するので、以下のようになる。

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
PassengerRuby /usr/local/bin/ruby

RailsBaseURI /projects

前の VPS では redmine というサブディレクトリにしていたが、今回はサービス名を用いず、projects という汎用な名前にした。このようにすることで、プロジェクト管理を他のサービスに変更したくなった場合でも、サブディレクトリまでなら URL を維持できる。

Apache の設定チェックと再起動をおこない、passenger.conf を読ませる。

$ sudo apachectl configtest
Syntax OK
$ sudo service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

これで Redmine を動作させるための環境が整った。

Redmine

Redmine をセットアップしてゆく。

はじめに MySQL 上へ Redmine 専用のデータベースとユーザーを作成する。XXXXXXXXXXXXXXXX の部分はパスワードになるので、あるていど複雑な文字列を指定すること。ユーザーは redmine@localhost にした。

$ mysql -u root -p
mysql> CREATE DATABASE redmine DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON redmine.* TO redmine@localhost IDENTIFIED BY 'XXXXXXXXXXXXXXXX';
mysql> FLUSH PRIVILEGES;
mysql> exit;

Redmine をインストールする。現時点の最新版は 1.4.1 になる。

イメージは RubyForge の Redmine プロジェクトに公開されているので、最新版の tar.gz の URL をメモしておく。これをユーザー HOME にダウンロード、展開して /var/lib/redmine に移動する。

$ cd
$ wget http://rubyforge.org/frs/download.php/76033/redmine-1.4.1.tar.gz
$ tar zxvf redmine-1.4.1.tar.gz
$ rm redmine-1.4.1.tar.gz
$ sudo mv redmine-1.4.1 /var/lib/redmine

Redmine をインストールしたディレクトリに移動し、Bundler を使って必要な Gem を入れる。PostgreSQL や SQLite などは利用しないので、without オプションをつけて除外している。

$ cd /var/lib/redmine
$ sudo bundle install --without development test postgresql sqlite
Fetching gem metadata from http://rubygems.org/.......
Using rake (0.9.2.2)
Installing activesupport (2.3.14)
Installing rack (1.1.3)
Installing actionpack (2.3.14)
Installing actionmailer (2.3.14)
Installing activerecord (2.3.14)
Installing activeresource (2.3.14)
Installing coderay (1.0.6)
Installing i18n (0.4.2)
Installing mysql2 (0.2.18) with native extensions
Installing net-ldap (0.3.1)
Installing rails (2.3.14)
Installing rmagick (2.13.1) with native extensions
Installing ruby-openid (2.1.8)
Installing tzinfo (0.3.33)
Using bundler (1.1.3)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

これまでのバージョンだと、よく ImageMagick と rmagick で互換や設定のトラブルが起きたものだが、今回は特に問題なく終了。ほっとした。

次は Redmine のデータベース接続に関する設定。これは database.yml というファイルに対しておこなう。初期状態では database.yml.example というサンプル ファイルが置かれているので、これをコピーして編集する。

$ cd /var/lib/redmine/config/
$ cp database.yml.example database.yml
$ vi database.yml

このファイルを以下のように編集して保存する。

ハイライトした部分が変更箇所。adapter は mysql ではなく mysql2 になるので注意する。username ( ユーザー名 ) と password ( パスワード ) は、さきほど MySQL 上へ設定した内容になる。

# Default setup is given for MySQL with ruby1.8. If you're running Redmine
# with MySQL and ruby1.9, replace the adapter name with `mysql2`.
# Examples for PostgreSQL and SQLite3 can be found at the end.

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: XXXXXXXXXXXXXXXX
  encoding: utf8

セッション管理用の秘密鍵を生成する。これがないと Redmine の起動でエラーが発生する。

$ rake generate_session_store
(in /var/lib/redmine)

データベースを初期化する。

$ rake db:migrate RAILS_ENV=production
(in /var/lib/redmine)

必要な gem が足りなかったり、database.yml の設定を間違えてる ( adapter が mysql2 ではなく mysql になっているとか ) 場合はエラーになるので、メッセージをよく読んで修正すること。

これで Redmine のセットアップは完了。さっそく、Apache の DocumentRoot 以下にシンボリックリンクを作成して Web に公開してみる。

$ sudo ln -s /var/lib/redmine/public /var/www/html/projects

ブラウザから http://ホスト名/projects にアクセスすると、Redmine のホーム画面が表示されるはず。

Redmine

Redmine

初期状態だと、admin ユーザーのパスワードが admin になっており非常に危険なので、すぐに admin でログインしてパスワードを変更すること。

Subversion

Subversion をセットアップする。まずインストールされていることを確認。

$ svn --version
svn, バージョン 1.6.11 (r934486)
   コンパイル日時: Sep 27 2011, 15:29:25

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

入っているので、リポジトリのルートになるディレクトリを作成。

$ sudo mkdir /var/lib/svn

次にリポジトリをひとつ作成してみる。ここでは仮に example という名前にしておく。

$ sudo svnadmin create /var/lib/svn/example

sudo 経由で作成したディレクトリとファイルの所有者は root になるのだが、Apache 経由でリポジトリにアクセスしたいので、所有者を変更しておく。変更したら、確認のために中身を表示してみる。

$ sudo chown -R apache:apache /var/lib/svn/example
$ ls -l /var/lib/svn/example
合計 24
-rw-r--r-- 1 apache apache  229  4月 30 16:47 2012 README.txt
drwxr-xr-x 2 apache apache 4096  4月 30 16:47 2012 conf
drwxr-sr-x 6 apache apache 4096  4月 30 16:47 2012 db
-r--r--r-- 1 apache apache    2  4月 30 16:47 2012 format
drwxr-xr-x 2 apache apache 4096  4月 30 16:47 2012 hooks
drwxr-xr-x 2 apache apache 4096  4月 30 16:47 2012 locks

mod_dav_svn をインストールする。これを利用すると、Apache 経由で Subversion のリポジトリを操作できる。Subversion 専用のポートを開放する必要がなくなり便利。

$ sudo yum install mod_dav_svn
... 中略 ...
Installed:
  mod_dav_svn.x86_64 0:1.6.11-2.el6_1.4

Complete!

mod_dav_svn は Apache 用のモジュールなので /etc/httpd/conf.d に専用の設定ファイルを追加する。

$ sudo vi /etc/httpd/conf.d/svn.conf

以下のように編集して保存する。

<Location /svn>
    DAV           svn
    SVNParentPath /var/lib/svn
    AuthType      Digest
    AuthName      "Subversion Repository"
    AuthUserFile  /etc/httpd/conf.d/svn_auth
    Require       valid-user
</Location>

Location ディレクティブにはリポジトリのルートを指定し、DAV も同様としている。

この指定の場合、すべてのリポジトリに同じ設定が適用される。リポジトリを追加した場合でも conf ファイルの変更や Apache の再起動が不要なので便利である。リポジトリごとに設定を分ける場合は、ディレクティブの指定を /svn/リポジトリ名として、SVNParentPath の代りに SVNPath、内容はリポジトリへのパスとする。

4 行目以降はダイジェスト認証に関する設定となる。これをおこなっておくことで、ブラウザや Subversion クライアントからリポジトリにアクセスしたとき、ユーザーとパスワードによる保護をおこなえる。

次は認証用のファイルを作成する。

前述の svn.conf の AuthUserFile で指定したディレクトリに touch コマンドでファイルを用意し、パスワード設定をおこなう。USERNAME の部分は SVN のリポジトリにアクセスするユーザーとなる。

Redmine プロジェクトからのリポジトリ参照も、ここで設定した内容が必要となる。Redmine にユーザーを作成済みならば、そのユーザーとパスワードを指定することで、Redmine のログイン情報を利用したリポジトリ参照がおこなえて便利である。

$ sudo htdigest -c /etc/httpd/conf.d/svn_auth "Subversion Repository" XXXX
Adding password for XXXX in realm Subversion Repository.
New password:
Re-type new password:

最後に Apache の設定チェックと再起動をおこない、svn.conf を読ませる。

$ sudo apachectl configtest
Syntax OK
$ sudo service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

セットアップが完了したので、ブラウザからアクセスしてみる。

さきほど作成した example リポジトリの場合、URL は http://ホスト名/svn/example になる。ここにアクセスすると、ダイジェスト認証によってユーザーとパスワードを問い合わせられるはず。正しい内容を入力すれば、リポジトリの内容が表示される。

Subversion リポジトリ

Subversion リポジトリ

リポジトリと Redmine の関連付けについては、以下の説明がわかりやすい。

環境の移行

既に運用されている Redmine から、新環境へ移行する場合の手順を書く。対象は Redmine と Subversion リポジトリ。

まずは Redmine のデータベースを出力する。出力先はユーザー HOME にしておく。ユーザー名が XXXX で、データベースが redmine なら、以下のようなコマンドになる。出力されるファイル名は redmine.sql にした。

$ cd
$ mysqldump -u XXXX -p redmine > redmine.sql

今回はデータベースの移行だけ取り上げるが、添付ファイルなどがあるなら、それらも保存しておく。バックアップ対象となりえる構成物については、以下を参照のこと。

つぎに Subversion のリポジトリを出力する。こちらも同様に、ユーザー HOME へ保存する。出力はリポジトリ単位になるので、ファイル名はリポジトリ.svndumpとしておく。XXXX の部分がリポジトリ名になる。

$ cd
$ svnadmin dump /var/lib/svn/XXXX > XXXX.svndump

出力されたファイルを新環境に送る。旧環境サーバーから直接 SCP コマンドで送信してもよいが、手元に保存しておきたいので、いったんローカルにダウンロードする。その後、Tera Term や WinSCP などで新環境へ送る。

以降は、これらのファイルが新環境のユーザー HOME 直下に置かれていると仮定して話を進める。

はじめに新環境の Redmine を非公開にする。

この記事の手順で環境構築したなら Redmine はシンボリックリンクで公開されているため、これを消すだけで非公開になる。本来ならメンテナンス用のページ ( 作業中です…とか表示しておく ) を用意し、移行が終わるまでそちらにリンクさせるほうが望ましいのだが、今回はやらない。

$ sudo rm -rf /var/www/html/projects

次に Redmine のデータベースを移行する。念のため、新環境で稼働中のデータベースを redmine-current.sql という名前でバックアップしておく。

$ mysqldump -u XXXX -p redmine > redmine-current.sql

データベースを作成し直す。redmine が空の状態になる。

$ mysql -uroot -p
mysql> DROP DATABASE redmine;
mysql> CREATE DATABASE redmine DEFAULT CHARACTER SET utf8;
mysql> exit;

旧環境から持ってきたバックアップを新環境のデータベースに取り込む

$ cd
$ mysql -u redmine -p redmine < redmine.sql

Redmine のインストール先ディレクトリに移動してから、データベースのマイグレートを実行。

$ cd /var/lib/redmine/
$ rake db:migrate RAILS_ENV=production
(in /var/lib/redmine)

その他、テーマやプラグイン、添付ファイルなどがあれば移行しておく。

Redmine 側の作業が終わったら、Subversion のリポジトリを移行する。先に移行先リポジトリを用意し、そこへ旧環境で出力したファイルを読みこむ。

$ cd
$ sudo svnadmin create /var/lib/svn/XXXX
$ svnadmin load /var/lib/svn/XXXX < XXXX.svndump
$ sudo chown -R apache:apache /var/lib/svn/XXXX

以上で移行は完了。シンボリックリンクを張り直して Redmine を公開する。

$ sudo ln -s /var/lib/redmine/public /var/www/html/projects

ブラウザでアクセスして、Redmine の移行に成功していることを確認する。

移行した後の Redmine

移行した後の Redmine

ちなみに上記のスクリーンショットで使用しているテーマは A1 theme – Redmine plugins である。かっこよくて見やすい。かなりオススメ。

Redmine のバージョン更新

この記事を書いた後に Redmine 2.0 がリリースされたので、1.4.1 から更新した時の手順を記録しておく。

まずは Redmine を非公開にする。前述の環境移行と同様に、シンボリックを消すだけでよい。

$ sudo rm -rf /var/www/html/projects

次に RubyForge の Redmine プロジェクトから、最新版の tar.gz の URL をメモしておく。これを wget コマンドでユーザー HOME にダウンロードし、展開する。その後、/var/lib/redmine-new へ移動する。

$ cd
$ wget http://rubyforge.org/frs/download.php/76134/redmine-2.0.0.tar.gz
$ tar zxvf redmine-2.0.0.tar.gz
$ sudo mv redmine-2.0.0 /var/lib/redmine-new
$ rm -rf redmine-2.0.0.tar.gz

これで /var/lib 以下に現行の redmine と最新の redmine-new が格納された状態になったので、以下のコマンドで設定を引き継ぐ。

$ cd /var/lib
$ cp redmine/config/database.yml redmine-new/config/database.yml
$ cp -r redmine/config/email.yml redmine-new/config/email.yml
$ cp -r redmine/files/ redmine-new/

もしプラグインを追加インストールしていたならば、Redmine 以下の vendor/plugins もコピーしておく。重複するものが多いので、plugins ディレクトリではなく、その中のプラグインを個別でコピーしたほうが、古いもので上書きする危険がなくて安全だと思う。

ちなみに Redmine 2.0 では、プラグインのディレクトリが vendor/plugins から Redmine のインストール ディレクトリ直下の plugins へ変更されているので、移行の際は注意すること。

引き継ぎが完了したら、ディレクトリ名を以下のように変更する。

$ cd /var/lib
$ sudo mv redmine redmine-old
$ sudo mv redmine-new redmine

あと、/var/lib/redmine/public 内に plugin_assets ディレクトリが存在しないと、Redmine の管理画面の情報に表示される、Plugin assetsディレクトリに書き込み可能がエラーになるので、作成しておく。

$ cd /var/lib/redmine/public
$ mkdir plugin_assets

Redmine のインストール ディレクトリに移動し、必要な Gem を Bundler で一括インストールする。Redmine 2.0 では Rails 3 に対応したそうで、インストールされる Rails は 3.2.3 になっていた。

$ cd /var/lib/redmine
$ bundle install --without development test postgresql sqlite
Fetching gem metadata from http://rubygems.org/.......
Using rake (0.9.2.2)
Installing i18n (0.6.0)
Installing multi_json (1.3.5)
Installing activesupport (3.2.3)
Installing builder (3.0.0)
Installing activemodel (3.2.3)
Installing erubis (2.7.0)
Installing journey (1.0.3)
Using rack (1.4.1)
Installing rack-cache (1.2)
Installing rack-test (0.6.1)
Installing hike (1.2.1)
Installing tilt (1.3.3)
Installing sprockets (2.1.3)
Installing actionpack (3.2.3)
Installing mime-types (1.18)
Installing polyglot (0.3.3)
Installing treetop (1.4.10)
Installing mail (2.4.4)
Installing actionmailer (3.2.3)
Installing arel (3.0.2)
Using tzinfo (0.3.33)
Installing activerecord (3.2.3)
Installing activeresource (3.2.3)
Using bundler (1.1.3)
Using coderay (1.0.6)
Installing json (1.7.3) with native extensions
Installing mysql2 (0.3.11) with native extensions
Using net-ldap (0.3.1)
Installing rack-ssl (1.3.2)
Installing rdoc (3.12)
Installing thor (0.14.6)
Installing railties (3.2.3)
Installing rails (3.2.3)
Installing prototype-rails (3.2.1)
Using ruby-openid (2.1.8)
Installing rack-openid (1.3.1)
Using rmagick (2.13.1)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
修正 2012/9/23
これまで bundle install を sudo で実行していたが、本日、Redmine 2.1 へ更新したときに改めて試したところ、sudo は不要だった。むしろつけると command not found になるので、上記内容を修正。変更が分かりやすいよう、該当部分をハイライトしておいた。

セッション管理用の鍵を初期化し、データベースをマイグレートする。

$ cd /var/lib/redmine
$ rake generate_secret_token
$ rake db:migrate RAILS_ENV="production"
$ rake db:migrate:upgrade_plugin_migrations RAILS_ENV=production
$ rake db:migrate_plugins RAILS_ENV=production
$ rake tmp:cache:clear
$ rake tmp:sessions:clear
修正 2012/6/9
session_store.rb の生成コマンドに誤りがあったので修正。前は rake config/initializers/session_store.rb としていたが、Redmine 2.0 以降は rake generate_secret_token が正しい。前のコマンドではエラーが発生する。また、2.0 以前用の rake session_store.rb、で実行すると、以下のように警告してくれる。
Note: The rake task generate_session_store has been deprecated, please use the replacement version generate_secret_token
修正が分かりやすいように、上記のコマンド例の該当部分をハイライトしておいた。

これで更新完了。シンボリックリンクを張り直して Redmine を再公開する。

$ sudo ln -s /var/lib/redmine/public /var/www/html/projects

Redmine にログインし、バージョンなどを確認。

Redmine 2.0

Redmine 2.0

ばっちり。

…今回はここまで。次回の内容はとくに決めていない。phpMyAdmin か Git について書くかもしれない。


TRACKBACKS

COMMENTS

  • m.i
    2012年7月16日 7:01 PM 返信

    Twitter覧のhatenaquestion さんのhttp://q.hatena.ne.jp/1339827568
    と同じ現象が私もでました。
    上のRubyの説明の
    — top —————————–
    $ cd
    $ rm -rf ruby-1.9.3-p194
    — end —————————–
    がうまくいかない。エラーが出る。

    私の場合、
    1.”cd”の問題は作業用ユーザーのディレクトリパーミッションが700になぜかなっていましたので
    755に直す事により解決できました。
    以下のurlを参考にさせて頂きました。
    http://piyopi-yo.info/tori_wp/?p=107
    2.”rm -rf ruby-1.9.3-p194″も権限が無いとおこられてしまうので、
    “sudo rm -rf ruby-1.9.3-p194”
    で解決しました。
    参考になればと思い報告までです。

  • 2012年7月16日 8:21 PM 返信

    m.i さん、こんばんは。

    ユーザー ディレクトリのパーミッションですが、このシリーズの手順でユーザー作成した場合、700 になります。これは「所有者のみ Read、Write、eXecute 可能」という意味になります。一方、755 は「所有者と同一グループに属するユーザー」と「他のユーザー」に Read を許可します。

    すでに問題解決されたとのことですが、Read のみとはいえ、他人にユーザー ディレクトリへのアクセスを許可するのはセキュリティ上、好ましくない状態ですので、パーミッションを 700 へ戻すことをオススメします。

    もしパーミッション関係で問題が出たら、ユーザー ディレクトリやシステムが予め用意しているディレクトリに対して操作するのではなく、問題の起きているファイルとディレクトリのパーミッションを確認 & 変更するほうが安全です。

  • m.i
    2012年7月17日 8:43 PM 返信

    akabeko さんご指摘ありがとうございます。
    本日再度、該当の作業用ユーザーのホームディレクトリを確認したところ
    所有者、所属グループともにrootになっておりました。
    なので、こちらを作業ユーザーへchownコマンドにて変更しさらにパーミッションを700に変更しなおしました。結果、teratermからの接続も適切に行えました。
    つまり、Rubyをインストールすると、作業用ユーザーのホームディレクトリの所有者、グループともに
    変更される仕様なんでしょうか…ちょっと気持ち悪いですね。私以外にも同様の症状が2人ほどいるみたいなので間違いないような気がします。

  • 2012年7月17日 10:14 PM 返信

    m.i さん、こんばんは。

    Ruby のインストールでパーミッション変更されるのは考えにくいので、私の書いた手順のなかでミスを誘発しやすい箇所があるのかもしれません。たとえば chown/chmod を実行するとき、カレント ディレクトリが想定外の場所を指していて、偶然、ユーザー HOME に対する操作になってしまった、など。

    logwatch を導入し、メールでログ送信しているなら、sudo 経由で実行したコマンドが記録されるので、そこから調べれば、原因の範囲を絞り込めそうな気がします。

    とはいえ、問題は解決済みであること、問題発生から解決に至るまでの内容をコメントされていることから、ここまでのやりとりだけでも、既に有用な記録といえますね。

  • m.i
    2012年7月23日 4:42 PM 返信

    sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p194-1.x86_64.rpm
    を実行すると、作業ユーザーのホームディレクトリの所有者、所属グループがrootになる事が判明しました。
    以下に同様の障害が発生した方と対策が書かれています。
    「$HOMEのアクセス権が変わる問題」というタイトルの箇所です。
    http://blog.ao-oni.net/sakura-vps-006/
    私自身は、今回checkinstallからrpmを作成する事をやめrpmbuildのコマンドにて地味にrpmを作成+インストールを行ったところ今回の問題は発生しなかったのでそのようにしました。

    参考になればと思い報告までです。

  • 2012年7月24日 8:19 AM 返信

    m.i さん、情報提供ありがとうございます。

    いただいた情報を元に、ユーザー HOME のアクセス権が変更される問題について、週末あたり、この記事に追記を書く予定です。

    私や、この記事を元に Ruby をインストールした知人の環境などでは問題に遭遇していなかったのでレアケースなのだと思っていたのですが、実は多くのユーザーの環境で発生していたのかもしれませんね。

  • nashirox
    2012年9月4日 9:23 AM 返信

    セッション管理用の秘密鍵生成コマンドですが、Redmine2.0から変わったようです。
    ↓に引用いたします。

    http://sakamoto-san.com/redmine2-0_install_on_centos6-2.html

    Redmine1.4の時と異なり、「セッションデータ暗号化用鍵の生成とテーブル作成を行います。」の最初のコマンドは、
    rake generate_session_store
    ではなく
    (Note: The rake task generate_session_store has been deprecated,
    please use the replacement version generate_secret_token のエラーが出る)、
    rake generate_secret_token
    に変更となっています(普通は[変更点]としてマークアップするべきなのですが、Redmine屋もだらしないと思います。)

  • a.y
    2012年9月21日 3:24 PM 返信

    お世話になっています

    手順通り進めてきて、rubyのインストール完了まで行きました。
    次のコマンドを実行したら、エラーとなりました。
      $ sudo gem install bundler –no-rdoc –no-ri
      sudo: gem: command not found
    何か必要だったのでしょうか?
    もしくはどこかでミスしているのでしょうか?

    ※ちなみに、ホームのアクセス権限変更はこちらでも発生しました。
    ※ご報告まで

  • a.y
    2012年9月21日 4:18 PM 返信

    ※その後のご報告
    ユーザをrootに変更したらコマンドが実行できました。

REPLY

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です