アカベコマイリ

HEAR NOTHING SEE NOTHING SAY NOTHING

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

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

  • 2012/5/20 追記 :

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 をメモしておく。ここから入手したものを /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

初期状態は 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、内容はリポジトリへのパスとする。

AuthType 以降はダイジェスト認証に関する設定。これをおこなっておくことで Web ブラウザや 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  ]

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

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

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

上記のスクリーンショットで使用しているテーマは 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 installsudo 経由で実行していたが、本日 Redmine 2.1 へ更新したときに改めて試したところ sudo は不要だった
    • むしろつけると command not found になるし permission 周りで厄介なことになるため内容を修正

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

$ 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

ばっちり。

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

Comments from WordPress

  • m.i m.i 2012-07-16T10:01:09Z

    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"

    で解決しました。

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

  • akabeko akabeko 2012-07-16T11:21:56Z

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

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

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

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

  • m.i m.i 2012-07-17T11:43:17Z

    akabeko さんご指摘ありがとうございます。

    本日再度、該当の作業用ユーザーのホームディレクトリを確認したところ

    所有者、所属グループともにrootになっておりました。

    なので、こちらを作業ユーザーへchownコマンドにて変更しさらにパーミッションを700に変更しなおしました。結果、teratermからの接続も適切に行えました。

    つまり、Rubyをインストールすると、作業用ユーザーのホームディレクトリの所有者、グループともに

    変更される仕様なんでしょうか...ちょっと気持ち悪いですね。私以外にも同様の症状が2人ほどいるみたいなので間違いないような気がします。

  • akabeko akabeko 2012-07-17T13:14:36Z

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

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

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

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

  • m.i m.i 2012-07-23T07:42:45Z

    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を作成+インストールを行ったところ今回の問題は発生しなかったのでそのようにしました。

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

  • akabeko akabeko 2012-07-23T23:19:00Z

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

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

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

  • nashirox 2012-09-04T00:23:01Z

    セッション管理用の秘密鍵生成コマンドですが、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-09-21T06:24:03Z

    お世話になっています

    手順通り進めてきて、rubyのインストール完了まで行きました。 次のコマンドを実行したら、エラーとなりました。

    $ sudo gem install bundler --no-rdoc --no-ri
    sudo: gem: command not found

    何か必要だったのでしょうか? もしくはどこかでミスしているのでしょうか?

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

  • a.y 2012-09-21T07:18:31Z

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

Copyright © 2009 - 2023 akabeko.me All Rights Reserved.